From d75333bc3ebc2ee0beade904cc7f7b30b048d08c Mon Sep 17 00:00:00 2001 From: Brian Botha Date: Thu, 28 Oct 2021 15:11:13 +1100 Subject: [PATCH] google protobuf examples --- src/client/clientPB.ts | 1 + tests/client/clientService.test.ts | 40 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/client/clientPB.ts b/src/client/clientPB.ts index 86a16b2d72..de26290541 100644 --- a/src/client/clientPB.ts +++ b/src/client/clientPB.ts @@ -8,3 +8,4 @@ export * as permissions from '../proto/js/Permissions_pb'; export * as secrets from '../proto/js/Secrets_pb'; export * as sessions from '../proto/js/Sessions_pb'; export * as vaults from '../proto/js/Vaults_pb'; +export * from '../proto/js/Client_pb'; diff --git a/tests/client/clientService.test.ts b/tests/client/clientService.test.ts index 402f605e95..451fe39e5d 100644 --- a/tests/client/clientService.test.ts +++ b/tests/client/clientService.test.ts @@ -37,6 +37,9 @@ import { Vault, VaultName } from '@/vaults/types'; import { vaultOps } from '@/vaults'; import { makeVaultId, makeVaultIdPretty } from '@/vaults/utils'; import { utils as idUtils } from '@matrixai/id'; +import { Any } from 'google-protobuf/google/protobuf/any_pb'; +import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; +import { Struct } from 'google-protobuf/google/protobuf/struct_pb'; /** * This test file has been optimised to use only one instance of PolykeyAgent where posible. @@ -2382,3 +2385,40 @@ describe('Client service', () => { }); }); }); + +describe('google/protobuf message examples', () => { + test('testing Any message type', async () => { + const anyMessage = new Any(); + const echoMessage = new messages.common.EchoMessage(); + anyMessage.pack(echoMessage.serializeBinary(), 'common.EchoMessage'); + const test2 = anyMessage.unpack( + messages.common.EchoMessage.deserializeBinary, + 'common.EchoMessage', + ); + expect(test2).toBeInstanceOf(messages.common.EchoMessage); // Is a EchoMessage + const test3 = anyMessage.unpack( + messages.common.StatusMessage.deserializeBinary, + 'common.StatusMessage', + ); + expect(test3).toBe(null); // Is null + }); + test('testing TimeStamp message', async () => { + const timeStampMessage = new Timestamp(); + const date = new Date(1000000); + timeStampMessage.fromDate(date); + + expect(timeStampMessage.getNanos()).toEqual(0); + expect(timeStampMessage.getSeconds()).toEqual(date.getTime() / 1000); + expect(timeStampMessage.toDate()).toEqual(date); + }); + test('testing structs usage', async () => { + const testObject = { + 1: 1, + two: 2, + three: 'Three', + }; + const structMessage = Struct.fromJavaScript(testObject); + + expect(structMessage.toJavaScript()).toStrictEqual(testObject); + }); +});