@@ -12,16 +12,18 @@ class Oracle {
12
12
this . calls = [ ]
13
13
this . server = createServer ( ( req , res ) => {
14
14
const url = new URL ( `http://oracle${ req . url } ` ) ;
15
- console . log ( 'oracle hit!' , url . searchParams . get ( 'agent' ) , url . searchParams . get ( 'resource' ) )
15
+ // console.log('oracle hit!', url.searchParams.get('agent'), url.searchParams.get('resource'))
16
16
this . calls . push ( url )
17
- if ( this . paid . indexOf ( url . searchParams . get ( 'resource' ) ) === - 1 ) {
17
+ const str = `${ url . searchParams . get ( 'agent' ) } ${ url . searchParams . get ( 'resource' ) } `
18
+ // console.log('searching guest list', str, this.paid)
19
+ if ( this . paid . indexOf ( str ) === - 1 ) {
18
20
res . end ( JSON . stringify ( {
19
21
payHeaders : [
20
22
'interledger-stream some.destination.account. Some+Shared+Secret+in+Base64=='
21
23
]
22
24
} ) )
23
25
} else {
24
- res . end ( 'OK' )
26
+ res . end ( JSON . stringify ( { ok : true } ) ) ;
25
27
}
26
28
} )
27
29
}
@@ -67,24 +69,16 @@ describe('Read-Paying', () => {
67
69
solidLogicBob = await getSolidLogicInstance ( 'BOB' )
68
70
oracle = new Oracle ( ) ;
69
71
await oracle . server . listen ( 8402 ) ;
70
- console . log ( 'oracle listening' )
72
+ // console.log('oracle listening')
71
73
} ) ;
72
74
afterAll ( async ( ) => {
73
75
oracle . server . close ( ) ;
74
76
} ) ;
75
77
76
78
const { testFolderUrl } = generateTestFolder ( 'ALICE' ) ;
77
- beforeEach ( async ( ) => {
78
- // FIXME: NSS ACL cache,
79
- // wait for ACL cache to clear:
80
- await new Promise ( resolve => setTimeout ( resolve , 20 ) ) ;
81
- } ) ;
79
+ const resourceUrl = `${ testFolderUrl } 1/test.txt` ;
82
80
83
- afterEach ( ( ) => {
84
- // return solidLogicAlice.recursiveDelete(testFolderUrl);
85
- } ) ;
86
- it ( 'Gives a 402 with accessTo Read access on non-container resource' , async ( ) => {
87
- const resourceUrl = `${ testFolderUrl } 1/test.txt` ;
81
+ beforeEach ( async ( ) => {
88
82
// This will do mkdir-p:
89
83
const creationResult = await solidLogicAlice . fetch ( resourceUrl , {
90
84
method : 'PUT' ,
@@ -103,9 +97,28 @@ describe('Read-Paying', () => {
103
97
// 'If-None-Match': '*' - work around a bug in some servers that don't support If-None-Match on ACL doc URLs
104
98
}
105
99
} ) ;
100
+
101
+ // FIXME: NSS ACL cache,
102
+ // wait for ACL cache to clear:
103
+ await new Promise ( resolve => setTimeout ( resolve , 20 ) ) ;
104
+ } ) ;
105
+
106
+ afterEach ( ( ) => {
107
+ // return solidLogicAlice.recursiveDelete(testFolderUrl);
108
+ } ) ;
109
+ it ( 'Gives a 402' , async ( ) => {
106
110
const result = await solidLogicBob . fetch ( resourceUrl )
107
111
expect ( result . status ) . toEqual ( 402 ) ;
108
112
const payHeader = result . headers . get ( 'Pay' ) ;
109
113
expect ( payHeader ) . toEqual ( 'interledger-stream some.destination.account. Some+Shared+Secret+in+Base64==' ) ;
110
114
} ) ;
115
+ describe ( 'After user pays' , ( ) => {
116
+ beforeAll ( ( ) => {
117
+ oracle . paid . push ( `${ WEBID_BOB } ${ resourceUrl } ` )
118
+ } ) ;
119
+ it ( 'Gives a 200' , async ( ) => {
120
+ const result = await solidLogicBob . fetch ( resourceUrl )
121
+ expect ( result . status ) . toEqual ( 200 ) ;
122
+ } ) ;
123
+ } )
111
124
} ) ;
0 commit comments