diff --git a/packages/roleypoly-rpc/src/utils/HTTPTransport.ts b/packages/roleypoly-rpc/src/utils/HTTPTransport.ts index 5a1e1f9..ccd43c2 100644 --- a/packages/roleypoly-rpc/src/utils/HTTPTransport.ts +++ b/packages/roleypoly-rpc/src/utils/HTTPTransport.ts @@ -58,7 +58,7 @@ export default class HTTPTransport extends Transport { req.on('end', async () => { const o = await this.receiver({ buffer: txtEnc.encode(buf), ctx: this.getContext(req, res) }) res.statusCode = 200 - res.end(o) + res.end(txtDec.decode(o)) }) } @@ -143,6 +143,7 @@ export default class HTTPTransport extends Transport { .set('User-Agent', 'roleypoly/2.0 bento http client (+https://roleypoly.com)') .withCredentials() .set(this.injectHeaders) + .ok(() => true) if (c.length > 0) { r.set('Cookie', c) @@ -150,6 +151,6 @@ export default class HTTPTransport extends Transport { const res = await r - return Buffer.from(res.body) + return txtEnc.encode(res.text) } } diff --git a/packages/roleypoly-rpc/src/utils/__test__/HTTPTransport.test.ts b/packages/roleypoly-rpc/src/utils/__test__/HTTPTransport.test.ts index 5b8e3bb..fa8337a 100644 --- a/packages/roleypoly-rpc/src/utils/__test__/HTTPTransport.test.ts +++ b/packages/roleypoly-rpc/src/utils/__test__/HTTPTransport.test.ts @@ -3,32 +3,34 @@ import Bento, { JSONSerializer } from '@kayteh/bento' import { MockBackendClient } from './mock.bento' import MockBackendServer from './mock-server' import * as http from 'http' -import * as sinon from 'sinon' +import sinon from 'sinon' -describe('HTTPTransport', () => { +const getCC = () => { const NOW = Date.now() const PORT = 20000 + (+(('' + NOW).slice(-4))) const bento = new Bento() - const tt = new HTTPTransport( - bento, - new JSONSerializer(), - `https://localhost:${PORT}/api/_rpc`, - {} - ) + const bento2 = new Bento() + const tt = new HTTPTransport(bento, new JSONSerializer({ verbose: true }), `http://localhost:${PORT}/api/_rpc`, {}) const h = tt.handler() const spy = sinon.spy(h) const s = http.createServer(spy) s.listen(PORT) bento.transport = tt + bento2.transport = tt bento.service(MockBackendClient.__SERVICE__, MockBackendServer) - const cc = bento.client(MockBackendClient) + const cc = bento2.client(MockBackendClient) + + return { cc, spy } +} + +describe('HTTPTransport', async () => { it('handles full flow properly', async () => { + const { cc, spy } = getCC() const out = await cc.helloBackend({ hello: 'yes!' }) expect(out.message).toBe(`hello, yes!! i'm bot!!`) + expect(spy.called).toBe(true) // oof }) - - s.close() }) diff --git a/packages/roleypoly-rpc/src/utils/__test__/NATSTransport.test.ts b/packages/roleypoly-rpc/src/utils/__test__/NATSTransport.test.ts index 11e963b..0b6e000 100644 --- a/packages/roleypoly-rpc/src/utils/__test__/NATSTransport.test.ts +++ b/packages/roleypoly-rpc/src/utils/__test__/NATSTransport.test.ts @@ -3,23 +3,26 @@ import Bento, { JSONSerializer } from '@kayteh/bento' import { MockBackendClient } from './mock.bento' import MockBackendServer from './mock-server' -describe('NATSTransport', () => { +const getCC = () => { const NOW = Date.now() const bento = new Bento() + const bento2 = new Bento() - const tt = new NATSTransport( - bento, - new JSONSerializer(), - 'nats://localhost:4222/', - '' + NOW - ) + const tt = new NATSTransport(bento, new JSONSerializer({ verbose: true }), 'nats://localhost:4222/', '' + NOW) bento.transport = tt + bento2.transport = tt bento.service(MockBackendClient.__SERVICE__, MockBackendServer) - const cc = bento.client(MockBackendClient) + const cc = bento2.client(MockBackendClient) + + return cc +} + +describe('NATSTransport', () => { it('handles full flow properly', async () => { + const cc = getCC() const out = await cc.helloBackend({ hello: 'yes!' }) expect(out.message).toBe(`hello, yes!! i'm bot!!`) })