Skip to content

Commit 5db69fa

Browse files
Server pay headers from oracle
1 parent 6b31a21 commit 5db69fa

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

run-against-nss.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,5 @@ export STORAGE_ROOT_ALICE=$SYSTEM_UNDER_TEST/
4343

4444
# npm run jest "$@"
4545
# npm run jest -- --json --outputFile="$RESULTS_PATH" "$@"
46-
47-
./node_modules/.bin/jest test/surface/p*
46+
export DEBUG=*
47+
./node_modules/.bin/jest test/surface/p*

test/surface/payment-required.test.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
1+
import { URL } from 'url';
2+
import { createServer, Server } from 'http';
13
import { SolidLogic } from 'solid-logic';
24
import { generateTestFolder, getSolidLogicInstance, WEBID_ALICE, WEBID_BOB } from '../helpers/env';
3-
import { responseCodeGroup } from '../helpers/util';
5+
// import { responseCodeGroup } from '../helpers/util';
6+
7+
class Oracle {
8+
paid = []
9+
calls: URL[]
10+
server: Server
11+
constructor() {
12+
this.calls = []
13+
this.server = createServer((req, res) => {
14+
const url = new URL(`http://oracle${req.url}`);
15+
console.log('oracle hit!', url.searchParams.get('agent'), url.searchParams.get('resource'))
16+
this.calls.push(url)
17+
if (this.paid.indexOf(url.searchParams.get('resource')) === -1) {
18+
res.end(JSON.stringify({
19+
payHeaders: [
20+
'interledger-stream some.destination.account. Some+Shared+Secret+in+Base64=='
21+
]
22+
}))
23+
} else {
24+
res.end('OK')
25+
}
26+
})
27+
}
28+
}
429

530
function makeBody(accessToModes: string, defaultModes: string, target: string) {
631
let str = [
@@ -36,9 +61,16 @@ function makeBody(accessToModes: string, defaultModes: string, target: string) {
3661
describe('Read-Paying', () => {
3762
let solidLogicAlice: SolidLogic;
3863
let solidLogicBob: SolidLogic;
64+
let oracle: Oracle;
3965
beforeAll(async () => {
4066
solidLogicAlice = await getSolidLogicInstance('ALICE')
4167
solidLogicBob = await getSolidLogicInstance('BOB')
68+
oracle = new Oracle();
69+
await oracle.server.listen(8402);
70+
console.log('oracle listening')
71+
});
72+
afterAll(async () => {
73+
oracle.server.close();
4274
});
4375

4476
const { testFolderUrl } = generateTestFolder('ALICE');
@@ -73,5 +105,7 @@ describe('Read-Paying', () => {
73105
});
74106
const result = await solidLogicBob.fetch(resourceUrl)
75107
expect(result.status).toEqual(402);
108+
const payHeader = result.headers.get('Pay');
109+
expect(payHeader).toEqual('interledger-stream some.destination.account. Some+Shared+Secret+in+Base64==');
76110
});
77111
});

0 commit comments

Comments
 (0)