diff options
Diffstat (limited to 'lambda-calcul')
| -rw-r--r-- | lambda-calcul/javascript/index.js | 5 | ||||
| -rw-r--r-- | lambda-calcul/javascript/src/client.js | 6 | ||||
| -rw-r--r-- | lambda-calcul/javascript/test/client.test.js | 19 |
3 files changed, 27 insertions, 3 deletions
diff --git a/lambda-calcul/javascript/index.js b/lambda-calcul/javascript/index.js index 5c080d1..c01c39e 100644 --- a/lambda-calcul/javascript/index.js +++ b/lambda-calcul/javascript/index.js @@ -23,7 +23,7 @@ const waitForEnterToBePressed = () => { output: process.stdout, }); - return readlineInterface.question('Done. Press Enter to finish.') + return readlineInterface.question(`Done. Press Enter to unregister ${playerName}.`) .then(() => readlineInterface.close()); }; @@ -34,4 +34,5 @@ client.start() }) .then(() => solveNextChallenge(token)) .then(() => waitForEnterToBePressed()) - .then(() => console.log('Done done!')); + .then(() => client.unregister(token)) + .then(() => console.log(`${playerName} unregistered!`)); diff --git a/lambda-calcul/javascript/src/client.js b/lambda-calcul/javascript/src/client.js index 88ea253..08b967d 100644 --- a/lambda-calcul/javascript/src/client.js +++ b/lambda-calcul/javascript/src/client.js @@ -30,10 +30,16 @@ const newClient = ({ }) .then(({ data }) => data); + const unregister = (token) => axios({ + method: 'DELETE', + url: `${challengerURL}/api/register?token=${token}`, + }); + return { nextChallenge, solve, start, + unregister, }; }; diff --git a/lambda-calcul/javascript/test/client.test.js b/lambda-calcul/javascript/test/client.test.js index 8b68a61..8a5ebff 100644 --- a/lambda-calcul/javascript/test/client.test.js +++ b/lambda-calcul/javascript/test/client.test.js @@ -40,7 +40,6 @@ describe('λ-calculator', () => { }); it('retrieves next challenge', () => { - challenger.on('request', (request, response) => { expect(request.method).toBe('GET'); expect(request.url).toBe('/api/challenge?token=SomeToken'); @@ -80,4 +79,22 @@ describe('λ-calculator', () => { const client = LC.newClient({ parser, interpreter, printer }); expect(client.solve('Some challenge')).toBe('Expression to print'); }); + + it('unregisters user', () => { + let challengerCalled = false; + + challenger.on('request', (request, response) => { + challengerCalled = true; + expect(request.method).toBe('DELETE'); + expect(request.url).toBe('/api/register?token=SomeToken'); + response.end(); + }); + + const client = LC.newClient({ + playerName: 'John Smith', + challengerURL: `http://localhost:${port}`, + }); + return client.unregister('SomeToken') + .then(() => expect(challengerCalled).toBe(true)); + }); }); |
