aboutsummaryrefslogtreecommitdiffstats
path: root/packages/connect/test/orders_channel_message_parsers_test.ts
diff options
context:
space:
mode:
authorFrancesco Agosti <francesco.agosti93@gmail.com>2018-08-23 06:39:14 +0800
committerGitHub <noreply@github.com>2018-08-23 06:39:14 +0800
commitcb19623a3aaf22a386bd4a7d6477048a604be9a2 (patch)
tree4d9512006aac8828e6311dc1f60707c654451469 /packages/connect/test/orders_channel_message_parsers_test.ts
parente915d72202f66155e74e22cf7df66d37e726f38f (diff)
parentc83f2a070cd5464af99785692efa82ba6f415a41 (diff)
downloaddexon-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.ts59
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');
+ });
+ });
+});