diff options
author | Francesco Agosti <francesco.agosti93@gmail.com> | 2018-08-23 06:39:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-23 06:39:14 +0800 |
commit | cb19623a3aaf22a386bd4a7d6477048a604be9a2 (patch) | |
tree | 4d9512006aac8828e6311dc1f60707c654451469 /packages/connect/test/orders_channel_message_parsers_test.ts | |
parent | e915d72202f66155e74e22cf7df66d37e726f38f (diff) | |
parent | c83f2a070cd5464af99785692efa82ba6f415a41 (diff) | |
download | dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.gz dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.bz2 dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.lz dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.xz dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.tar.zst dexon-sol-tools-cb19623a3aaf22a386bd4a7d6477048a604be9a2.zip |
Merge pull request #974 from 0xProject/feature/connect/sra-api-v2
[connect][sra-api][json-schemas] Update Connect to SRA v2
Diffstat (limited to 'packages/connect/test/orders_channel_message_parsers_test.ts')
-rw-r--r-- | packages/connect/test/orders_channel_message_parsers_test.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/connect/test/orders_channel_message_parsers_test.ts b/packages/connect/test/orders_channel_message_parsers_test.ts new file mode 100644 index 000000000..4d4a2d23f --- /dev/null +++ b/packages/connect/test/orders_channel_message_parsers_test.ts @@ -0,0 +1,59 @@ +import * as chai from 'chai'; +import * as dirtyChai from 'dirty-chai'; +import 'mocha'; + +import { ordersChannelMessageParser } from '../src/utils/orders_channel_message_parser'; + +import { orderResponse } from './fixtures/standard_relayer_api/order/0xabc67323774bdbd24d94f977fa9ac94a50f016026fd13f42990861238897721f'; +import { unknownOrdersChannelMessage } from './fixtures/standard_relayer_api/unknown_orders_channel_message'; +import { + malformedUpdateOrdersChannelMessage, + updateOrdersChannelMessage, +} from './fixtures/standard_relayer_api/update_orders_channel_message'; + +chai.config.includeStack = true; +chai.use(dirtyChai); +const expect = chai.expect; + +describe('ordersChannelMessageParser', () => { + describe('#parser', () => { + it('parses update messages', () => { + const updateMessage = ordersChannelMessageParser.parse(updateOrdersChannelMessage); + expect(updateMessage.type).to.be.equal('update'); + expect(updateMessage.payload).to.be.deep.equal([orderResponse]); + }); + it('returns unknown message for messages with unsupported types', () => { + const unknownMessage = ordersChannelMessageParser.parse(unknownOrdersChannelMessage); + expect(unknownMessage.type).to.be.equal('unknown'); + expect(unknownMessage.payload).to.be.undefined(); + }); + it('throws when message does not include a type', () => { + const typelessMessage = `{ + "channel": "orders", + "requestId": "4d8efcee-adde-4475-9601-f0b30962ca2b", + "payload": [] + }`; + const badCall = () => ordersChannelMessageParser.parse(typelessMessage); + expect(badCall).throws(`Message is missing a type parameter: ${typelessMessage}`); + }); + it('throws when type is not a string', () => { + const messageWithBadType = `{ + "type": 1, + "channel": "orders", + "requestId": "4d8efcee-adde-4475-9601-f0b30962ca2b", + "payload": [] + }`; + const badCall = () => ordersChannelMessageParser.parse(messageWithBadType); + expect(badCall).throws('Expected type to be of type string, encountered: 1'); + }); + it('throws when update message has malformed payload', () => { + const badCall = () => ordersChannelMessageParser.parse(malformedUpdateOrdersChannelMessage); + expect(badCall).throws(/^Expected message to conform to schema/); + }); + it('throws when input message is not valid JSON', () => { + const nonJsonString = 'h93b{sdfs9fsd f'; + const badCall = () => ordersChannelMessageParser.parse(nonJsonString); + expect(badCall).throws('Unexpected token h in JSON at position 0'); + }); + }); +}); |