Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: aligning naming convention with files and modules #139

Merged
merged 1 commit into from
Nov 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ import { SignedWrappedDocument, v2, v3, WrappedDocument } from "@govtechsg/open-
import { verificationBuilder } from "./verifiers/verificationBuilder";
import { Verifier, Verifiers } from "./types/core";
import { openAttestationHash } from "./verifiers/documentIntegrity/hash/openAttestationHash";
import { Identity, openAttestationDnsTxt } from "./verifiers/issuerIdentity/dnsText/openAttestationDnsTxt";
import { isValid } from "./validator";
import { openAttestationEthereumTokenRegistryStatus } from "./verifiers/documentStatus/tokenRegistryStatus/openAttestationEthereumTokenRegistryStatus";
import { openAttestationEthereumDocumentStoreStatus } from "./verifiers/documentStatus/documentStoreStatus/openAttestationEthereumDocumentStoreStatus";
import { OpenAttestationDidSignedDocumentStatus } from "./verifiers/documentStatus/didSignedDocumentStatus";
import { OpenAttestationDidSignedDidIdentityProof } from "./verifiers/issuerIdentity/didIdentityProof";
import { OpenAttestationDnsDid } from "./verifiers/issuerIdentity/dnsDidProof";
import { openAttestationEthereumTokenRegistryStatus } from "./verifiers/documentStatus/tokenRegistry";
import { openAttestationEthereumDocumentStoreStatus } from "./verifiers/documentStatus/documentStore";
import { openAttestationDidSignedDocumentStatus } from "./verifiers/documentStatus/didSigned";
import { Identity, openAttestationDnsTxtIdentityProof } from "./verifiers/issuerIdentity/dnsTxt";
import { openAttestationDidIdentityProof } from "./verifiers/issuerIdentity/did";
import { openAttestationDnsDidIdentityProof } from "./verifiers/issuerIdentity/dnsDid";

const openAttestationVerifiers: Verifiers[] = [
Nebulis marked this conversation as resolved.
Show resolved Hide resolved
openAttestationHash,
openAttestationEthereumTokenRegistryStatus,
openAttestationEthereumDocumentStoreStatus,
openAttestationDnsTxt,
OpenAttestationDnsDid,
OpenAttestationDidSignedDocumentStatus,
openAttestationDidSignedDocumentStatus,
openAttestationDnsTxtIdentityProof,
openAttestationDnsDidIdentityProof,
];

const verify = verificationBuilder<
Expand All @@ -36,10 +36,10 @@ export {
Verifier,
Identity,
openAttestationHash,
openAttestationDnsTxt,
openAttestationEthereumDocumentStoreStatus,
openAttestationEthereumTokenRegistryStatus,
OpenAttestationDnsDid,
OpenAttestationDidSignedDocumentStatus,
OpenAttestationDidSignedDidIdentityProof,
openAttestationDidSignedDocumentStatus,
openAttestationDnsTxtIdentityProof,
openAttestationDnsDidIdentityProof,
openAttestationDidIdentityProof,
};
2 changes: 1 addition & 1 deletion src/types/error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export enum OpenAttestationDidSignedDocumentStatusCode {
UNSIGNED = 3,
INVALID_ISSUERS = 4,
}
export enum OpenAttestationDidSignedDidIdentityProofCode {
export enum OpenAttestationDidCode {
SKIPPED = 0,
UNEXPECTED_ERROR = 1,
INVALID_ISSUERS = 2,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { OpenAttestationDidSignedDocumentStatus } from "./didSignedDocumentStatus";
import { openAttestationDidSignedDocumentStatus } from "./didSignedDocumentStatus";
import { documentRopstenValidWithDocumentStore } from "../../../../test/fixtures/v2/documentRopstenValidWithDocumentStore";
import { documentDidSigned } from "../../../../test/fixtures/v2/documentDidSigned";
import { documentDnsDidSigned } from "../../../../test/fixtures/v2/documentDnsDidSigned";
Expand Down Expand Up @@ -31,7 +31,7 @@ const options = {

describe("skip", () => {
it("should return skip message", async () => {
const message = await OpenAttestationDidSignedDocumentStatus.skip(undefined as any, undefined as any);
const message = await openAttestationDidSignedDocumentStatus.skip(undefined as any, undefined as any);
expect(message).toMatchInlineSnapshot(`
Object {
"name": "OpenAttestationDidSignedDocumentStatus",
Expand All @@ -50,16 +50,16 @@ describe("skip", () => {
describe("test", () => {
describe("v2", () => {
it("should return false for documents not signed by DID", () => {
expect(OpenAttestationDidSignedDocumentStatus.test(documentRopstenValidWithDocumentStore, options)).toBe(false);
expect(OpenAttestationDidSignedDocumentStatus.test(documentRopstenNotIssuedWithTokenRegistry, options)).toBe(
expect(openAttestationDidSignedDocumentStatus.test(documentRopstenValidWithDocumentStore, options)).toBe(false);
expect(openAttestationDidSignedDocumentStatus.test(documentRopstenNotIssuedWithTokenRegistry, options)).toBe(
false
);
});
it("should return true for documents where any issuer is using the `DID` identity proof", () => {
expect(OpenAttestationDidSignedDocumentStatus.test(documentDidSigned, options)).toBe(true);
expect(openAttestationDidSignedDocumentStatus.test(documentDidSigned, options)).toBe(true);
});
it("should return true for documents where any issuer is using the `DNS-DID` identity proof", () => {
expect(OpenAttestationDidSignedDocumentStatus.test(documentDnsDidSigned, options)).toBe(true);
expect(openAttestationDidSignedDocumentStatus.test(documentDnsDidSigned, options)).toBe(true);
});
});
});
Expand All @@ -71,7 +71,7 @@ describe("verify", () => {
describe("v2", () => {
it("should pass for documents using `DID` and is correctly signed", async () => {
whenPublicKeyResolvesSuccessfully();
const res = await OpenAttestationDidSignedDocumentStatus.verify(documentDidSigned, options);
const res = await openAttestationDidSignedDocumentStatus.verify(documentDidSigned, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": Object {
Expand All @@ -94,7 +94,7 @@ describe("verify", () => {
});
it("should pass for documents using `DID-DNS` and is correctly signed", async () => {
whenPublicKeyResolvesSuccessfully();
const res = await OpenAttestationDidSignedDocumentStatus.verify(documentDnsDidSigned, options);
const res = await openAttestationDidSignedDocumentStatus.verify(documentDnsDidSigned, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": Object {
Expand All @@ -117,7 +117,7 @@ describe("verify", () => {
});
it("should fail when revocation block is missing", async () => {
whenPublicKeyResolvesSuccessfully();
const res = await OpenAttestationDidSignedDocumentStatus.verify(documentDidObfuscatedRevocation, options);
const res = await openAttestationDidSignedDocumentStatus.verify(documentDidObfuscatedRevocation, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": [Error: revocation block not found for an issuer],
Expand All @@ -134,7 +134,7 @@ describe("verify", () => {
});
it("should fail when revocation is not set to NONE (for now)", async () => {
whenPublicKeyResolvesSuccessfully();
const res = await OpenAttestationDidSignedDocumentStatus.verify(documentDidCustomRevocation, options);
const res = await openAttestationDidSignedDocumentStatus.verify(documentDidCustomRevocation, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": Object {
Expand All @@ -157,7 +157,7 @@ describe("verify", () => {
});
it("should fail when proof is missing", async () => {
whenPublicKeyResolvesSuccessfully();
const res = await OpenAttestationDidSignedDocumentStatus.verify(documentDidMissingProof, options);
const res = await openAttestationDidSignedDocumentStatus.verify(documentDidMissingProof, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": [Error: Only signed v2 is supported now],
Expand All @@ -174,7 +174,7 @@ describe("verify", () => {
});
it("should fail when did resolver fails for some reasons", async () => {
mockGetPublicKey.mockRejectedValue(new Error("Error from DID resolver"));
const res = await OpenAttestationDidSignedDocumentStatus.verify(documentDidSigned, options);
const res = await openAttestationDidSignedDocumentStatus.verify(documentDidSigned, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": [Error: Error from DID resolver],
Expand All @@ -191,7 +191,7 @@ describe("verify", () => {
});
it("should fail when corresponding proof to key is not found in proof", async () => {
whenPublicKeyResolvesSuccessfully();
const res = await OpenAttestationDidSignedDocumentStatus.verify({ ...documentDidSigned, proof: [] }, options);
const res = await openAttestationDidSignedDocumentStatus.verify({ ...documentDidSigned, proof: [] }, options);
expect(res).toMatchInlineSnapshot(`
Object {
"data": [Error: Proof not found for did:ethr:0xE712878f6E8d5d4F9e87E10DA604F9cB564C9a89#controller],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ const verify: VerifierType["verify"] = withCodedErrorHandler(
}
);

export const OpenAttestationDidSignedDocumentStatus: VerifierType = {
export const openAttestationDidSignedDocumentStatus: VerifierType = {
skip,
test,
verify,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { openAttestationEthereumDocumentStoreStatus } from "./openAttestationEthereumDocumentStoreStatus";
import { openAttestationEthereumDocumentStoreStatus } from "./ethereumDocumentStoreStatus";
import { documentRopstenRevokedWithDocumentStore } from "../../../../test/fixtures/v2/documentRopstenRevokedWithDocumentStore";
import { documentRopstenRevokedWithCertificateStore } from "../../../../test/fixtures/v2/documentRopstenRevokedWithCertificateStore";
import { documentRopstenNotIssuedWithCertificateStore } from "../../../../test/fixtures/v2/documentRopstenNotIssuedWithCertificateStore";
Expand Down
1 change: 1 addition & 0 deletions src/verifiers/documentStatus/documentStore/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./ethereumDocumentStoreStatus";
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { openAttestationEthereumTokenRegistryStatus } from "./openAttestationEthereumTokenRegistryStatus";
import { openAttestationEthereumTokenRegistryStatus } from "./ethereumTokenRegistryStatus";
import { documentRopstenNotIssuedWithTokenRegistry } from "../../../../test/fixtures/v2/documentRopstenNotIssuedWithTokenRegistry";
import { documentRopstenValidWithToken } from "../../../../test/fixtures/v2/documentRopstenValidWithToken";
import { documentRopstenValidWithTokenRegistry as v3documentRopstenValidWithTokenRegistry } from "../../../../test/fixtures/v3/documentRopstenValid";
Expand Down
1 change: 1 addition & 0 deletions src/verifiers/documentStatus/tokenRegistry/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./ethereumTokenRegistryStatus";
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { OpenAttestationDidSignedDidIdentityProof } from "./didIdentityProof";
import { openAttestationDidIdentityProof } from "./didIdentityProof";
import { documentRopstenValidWithDocumentStore } from "../../../../test/fixtures/v2/documentRopstenValidWithDocumentStore";
import { documentDidSigned } from "../../../../test/fixtures/v2/documentDidSigned";
import { documentDidWrongSignature } from "../../../../test/fixtures/v2/documentDidWrongSignature";
Expand All @@ -12,10 +12,10 @@ const options = {

describe("skip", () => {
it("should return skip message", async () => {
const message = await OpenAttestationDidSignedDidIdentityProof.skip(undefined as any, undefined as any);
const message = await openAttestationDidIdentityProof.skip(undefined as any, undefined as any);
expect(message).toMatchInlineSnapshot(`
Object {
"name": "OpenAttestationDidSignedDidIdentityProof",
"name": "OpenAttestationDidIdentityProof",
"reason": Object {
"code": 0,
"codeString": "SKIPPED",
Expand All @@ -31,21 +31,21 @@ describe("skip", () => {
describe("test", () => {
describe("v2", () => {
it("should return false for documents not using DID as top level identifier", () => {
expect(OpenAttestationDidSignedDidIdentityProof.test(documentRopstenValidWithDocumentStore, options)).toBe(false);
expect(openAttestationDidIdentityProof.test(documentRopstenValidWithDocumentStore, options)).toBe(false);
});
it("should return true for documents where any issuer is using the `DID` identity proof", () => {
expect(OpenAttestationDidSignedDidIdentityProof.test(documentDidSigned, options)).toBe(true);
expect(openAttestationDidIdentityProof.test(documentDidSigned, options)).toBe(true);
});
it("should return false for documents where any issuer is using the `DNS-DID` identity proof", () => {
expect(OpenAttestationDidSignedDidIdentityProof.test(documentDnsDidSigned, options)).toBe(false);
expect(openAttestationDidIdentityProof.test(documentDnsDidSigned, options)).toBe(false);
});
});
});

describe("verify", () => {
describe("v2", () => {
it("should pass for documents using `DID` and did signature is correct", async () => {
const verificationFragment = await OpenAttestationDidSignedDidIdentityProof.verify(documentDidSigned, options);
const verificationFragment = await openAttestationDidIdentityProof.verify(documentDidSigned, options);
expect(verificationFragment).toMatchInlineSnapshot(`
Object {
"data": Array [
Expand All @@ -54,17 +54,14 @@ describe("verify", () => {
"status": "VALID",
},
],
"name": "OpenAttestationDidSignedDidIdentityProof",
"name": "OpenAttestationDidIdentityProof",
"status": "VALID",
"type": "ISSUER_IDENTITY",
}
`);
});
it("should fail for documents using `DID` and did signature is not correct", async () => {
const verificationFragment = await OpenAttestationDidSignedDidIdentityProof.verify(
documentDidWrongSignature,
options
);
const verificationFragment = await openAttestationDidIdentityProof.verify(documentDidWrongSignature, options);
expect(verificationFragment).toMatchInlineSnapshot(`
Object {
"data": Array [
Expand All @@ -73,17 +70,14 @@ describe("verify", () => {
"status": "INVALID",
},
],
"name": "OpenAttestationDidSignedDidIdentityProof",
"name": "OpenAttestationDidIdentityProof",
"status": "INVALID",
"type": "ISSUER_IDENTITY",
}
`);
});
it("should fail for documents with other issuers", async () => {
const verificationFragment = await OpenAttestationDidSignedDidIdentityProof.verify(
documentDidMixedTokenRegistry,
options
);
const verificationFragment = await openAttestationDidIdentityProof.verify(documentDidMixedTokenRegistry, options);
expect(verificationFragment).toMatchInlineSnapshot(`
Object {
"data": Array [
Expand All @@ -100,7 +94,7 @@ describe("verify", () => {
"status": "INVALID",
},
],
"name": "OpenAttestationDidSignedDidIdentityProof",
"name": "OpenAttestationDidIdentityProof",
"status": "INVALID",
"type": "ISSUER_IDENTITY",
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { v2, v3, WrappedDocument, getData, utils } from "@govtechsg/open-attestation";
import { VerificationFragmentType, Verifier } from "../../../types/core";
import { OpenAttestationDidSignedDidIdentityProofCode } from "../../../types/error";
import { OpenAttestationDidCode } from "../../../types/error";
import { verifySignature } from "../../../did/verifier";
import { withCodedErrorHandler } from "../../../common/errorHandler";

const name = "OpenAttestationDidSignedDidIdentityProof";
const name = "OpenAttestationDidIdentityProof";
const type: VerificationFragmentType = "ISSUER_IDENTITY";
type VerifierType = Verifier<WrappedDocument<v2.OpenAttestationDocument> | WrappedDocument<v3.OpenAttestationDocument>>;

Expand All @@ -14,8 +14,8 @@ const skip: VerifierType["skip"] = async () => {
type,
name,
reason: {
code: OpenAttestationDidSignedDidIdentityProofCode.SKIPPED,
codeString: OpenAttestationDidSignedDidIdentityProofCode[OpenAttestationDidSignedDidIdentityProofCode.SKIPPED],
code: OpenAttestationDidCode.SKIPPED,
codeString: OpenAttestationDidCode[OpenAttestationDidCode.SKIPPED],
message: `Document is not using DID as top level identifier`,
},
};
Expand Down Expand Up @@ -52,9 +52,8 @@ const verify: VerifierType["verify"] = withCodedErrorHandler(
status: "INVALID",
reason: {
message: "Issuer is not using DID identityProof type",
code: OpenAttestationDidSignedDidIdentityProofCode.INVALID_ISSUERS,
codeString:
OpenAttestationDidSignedDidIdentityProofCode[OpenAttestationDidSignedDidIdentityProofCode.INVALID_ISSUERS],
code: OpenAttestationDidCode.INVALID_ISSUERS,
codeString: OpenAttestationDidCode[OpenAttestationDidCode.INVALID_ISSUERS],
},
};
});
Expand All @@ -73,13 +72,12 @@ const verify: VerifierType["verify"] = withCodedErrorHandler(
{
name,
type,
unexpectedErrorCode: OpenAttestationDidSignedDidIdentityProofCode.UNEXPECTED_ERROR,
unexpectedErrorString:
OpenAttestationDidSignedDidIdentityProofCode[OpenAttestationDidSignedDidIdentityProofCode.UNEXPECTED_ERROR],
unexpectedErrorCode: OpenAttestationDidCode.UNEXPECTED_ERROR,
unexpectedErrorString: OpenAttestationDidCode[OpenAttestationDidCode.UNEXPECTED_ERROR],
}
);

export const OpenAttestationDidSignedDidIdentityProof: VerifierType = {
export const openAttestationDidIdentityProof: VerifierType = {
skip,
test,
verify,
Expand Down
Loading