Skip to content

Commit

Permalink
update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
LiranCohen committed Nov 24, 2023
1 parent 4e5114c commit 1f112c9
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 77 deletions.
63 changes: 11 additions & 52 deletions tests/handlers/events-query.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ import {
DidKeyResolver,
DidResolver,
Dwn,
DwnInterfaceName,
DwnMethodName,
Message,
Time
} from '../../src/index.js';
Expand Down Expand Up @@ -54,13 +52,12 @@ export function testEventsQueryHandler(): void {

it('filter for events matching a protocol across all message types', async () => {
// scenario:
// alice creates (3) different message types all related to "proto1" (Configure, RecordsWrite, Grant)
// alice creates (3) different message types all related to "proto2" (Configure, RecordsWrite, Grant)
// alice creates (2) different message types all related to "proto1" (Configure, RecordsWrite)
// alice creates (2) different message types all related to "proto2" (Configure, RecordsWrite )
// when issuing an EventsQuery for the specific protocol, only Events related to it should be returned.
// alice then creates additional records to query after a cursor
// alice then creates an additional record to query after a cursor

const alice = await DidKeyResolver.generate();
const bob = await DidKeyResolver.generate();

// create a proto1
const protoConf1 = await TestDataGenerator.generateProtocolsConfigure({
Expand Down Expand Up @@ -90,41 +87,18 @@ export function testEventsQueryHandler(): void {
const write1Proto2Response = await dwn.processMessage(alice.did, write1proto2.message, write1proto2.dataStream);
expect(write1Proto2Response.status.code).equals(202);

// create a grant relating to proto1
const grant1Proto1 = await TestDataGenerator.generatePermissionsGrant({
author : alice,
grantedTo : bob.did,
dateExpires : '2055-12-12T12:12:12.121212Z',
scope : { protocol: proto1, interface: DwnInterfaceName.Records, method: DwnMethodName.Read }
});

const grant1Response = await dwn.processMessage(alice.did, grant1Proto1.message);
expect(grant1Response.status.code).equals(202);

// create a grant relating to proto2
const grant1Proto2 = await TestDataGenerator.generatePermissionsGrant({
author : alice,
grantedTo : bob.did,
dateExpires : '2055-12-12T12:12:12.121212Z',
scope : { protocol: proto2, interface: DwnInterfaceName.Records, method: DwnMethodName.Read }
});

const grant1Proto2Response = await dwn.processMessage(alice.did, grant1Proto2.message);
expect(grant1Proto2Response.status.code).equals(202);

// filter for proto1
let proto1EventsQuery = await TestDataGenerator.generateEventsQuery({
author : alice,
filters : [{ protocol: proto1 }]
});
let proto1EventsReply = await dwn.processMessage(alice.did, proto1EventsQuery.message);
expect(proto1EventsReply.status.code).equals(200);
expect(proto1EventsReply.events?.length).equals(3);
expect(proto1EventsReply.events?.length).equals(2);

// check order of events returned.
expect(proto1EventsReply.events![0]).to.equal(await Message.getCid(protoConf1.message));
expect(proto1EventsReply.events![1]).to.equal(await Message.getCid(write1proto1.message));
expect(proto1EventsReply.events![2]).to.equal(await Message.getCid(grant1Proto1.message));

// filter for proto2
let proto2EventsQuery = await TestDataGenerator.generateEventsQuery({
Expand All @@ -133,28 +107,15 @@ export function testEventsQueryHandler(): void {
});
let proto2EventsReply = await dwn.processMessage(alice.did, proto2EventsQuery.message);
expect(proto2EventsReply.status.code).equals(200);
expect(proto2EventsReply.events?.length).equals(3);
expect(proto2EventsReply.events?.length).equals(2);

// check order of events returned.
expect(proto2EventsReply.events![0]).to.equal(await Message.getCid(protoConf2.message));
expect(proto2EventsReply.events![1]).to.equal(await Message.getCid(write1proto2.message));
expect(proto2EventsReply.events![2]).to.equal(await Message.getCid(grant1Proto2.message));

// get cursor of the last event and add more events to query afterwards
const proto1Cursor = proto1EventsReply.events![2];
const proto2Cursor = proto2EventsReply.events![2];

// revoke grant proto 1
const grant1proto1Id = await Message.getCid(grant1Proto1.message);
const revokeForGrantProto1 = await TestDataGenerator.generatePermissionsRevoke({ author: alice, permissionsGrantId: grant1proto1Id });
const revokeForGrantResponse = await dwn.processMessage(alice.did, revokeForGrantProto1.message);
expect(revokeForGrantResponse.status.code).equals(202);

// revoke grant proto 2
const grant1proto2Id = await Message.getCid(grant1Proto2.message);
const revokeForGrantProto2 = await TestDataGenerator.generatePermissionsRevoke({ author: alice, permissionsGrantId: grant1proto2Id });
const revokeForGrantProto2Response = await dwn.processMessage(alice.did, revokeForGrantProto2.message);
expect(revokeForGrantProto2Response.status.code).equals(202);
const proto1Cursor = proto1EventsReply.events![1];
const proto2Cursor = proto2EventsReply.events![1];

// delete proto1 message
const deleteProto1Message = await TestDataGenerator.generateRecordsDelete({ author: alice, recordId: write1proto1.message.recordId });
Expand All @@ -174,11 +135,10 @@ export function testEventsQueryHandler(): void {
});
proto1EventsReply = await dwn.processMessage(alice.did, proto1EventsQuery.message);
expect(proto1EventsReply.status.code).equals(200);
expect(proto1EventsReply.events?.length).equals(2);
expect(proto1EventsReply.events?.length).equals(1);

// check order of events returned
expect(proto1EventsReply.events![0]).to.equal(await Message.getCid(revokeForGrantProto1.message));
expect(proto1EventsReply.events![1]).to.equal(await Message.getCid(deleteProto1Message.message));
expect(proto1EventsReply.events![0]).to.equal(await Message.getCid(deleteProto1Message.message));

//query messages beyond the cursor
proto2EventsQuery = await TestDataGenerator.generateEventsQuery({
Expand All @@ -188,11 +148,10 @@ export function testEventsQueryHandler(): void {
});
proto2EventsReply = await dwn.processMessage(alice.did, proto2EventsQuery.message);
expect(proto2EventsReply.status.code).equals(200);
expect(proto2EventsReply.events?.length).equals(2);
expect(proto2EventsReply.events?.length).equals(1);

// check order of events returned
expect(proto2EventsReply.events![0]).to.equal(await Message.getCid(revokeForGrantProto2.message));
expect(proto2EventsReply.events![1]).to.equal(await Message.getCid(deleteProto2Message.message));
expect(proto2EventsReply.events![0]).to.equal(await Message.getCid(deleteProto2Message.message));
});

it('returns events filtered by a date range', async () => {
Expand Down
25 changes: 0 additions & 25 deletions tests/handlers/permissions-grant.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import { DwnErrorCode } from '../../src/core/dwn-error.js';
import { expect } from 'chai';
import { Jws } from '../../src/index.js';
import { Message } from '../../src/core/message.js';
import { normalizeSchemaUrl } from '../../src/utils/url.js';
import { PermissionsGrant } from '../../src/interfaces/permissions-grant.js';
import { PermissionsGrantHandler } from '../../src/handlers/permissions-grant.js';
import { TestDataGenerator } from '../utils/test-data-generator.js';
Expand Down Expand Up @@ -90,30 +89,6 @@ export function testPermissionsGrantHandler(): void {
expect(permissionsGrantReply.status.code).to.equal(202);
});

it('should index additional scope properties', async () => {
const alice = await DidKeyResolver.generate();
const { message } = await TestDataGenerator.generatePermissionsGrant({
author : alice,
grantedBy : alice.did,
scope : {
interface : DwnInterfaceName.Records,
method : DwnMethodName.Read,
schema : normalizeSchemaUrl('schema1')
}
});
const messageCid = await Message.getCid(message);

const reply = await dwn.processMessage(alice.did, message);
expect(reply.status.code).to.equal(202);

const events = await eventLog.queryEvents(alice.did, [{ schema: normalizeSchemaUrl('schema1') }]);
expect(events.length).to.equal(1);
expect(events[0]).to.equal(messageCid);

const { messages } = await messageStore.query(alice.did, [{ schema: normalizeSchemaUrl('schema1') }]);
expect(await Message.getCid(messages[0])).to.equal(messageCid);
});

it('should return 401 if authentication fails', async () => {
const alice = await DidKeyResolver.generate();
alice.keyId = 'wrongValue'; // to fail authentication
Expand Down

0 comments on commit 1f112c9

Please sign in to comment.