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: hedera test cases added :krypc #14

Merged
merged 6 commits into from
Mar 15, 2024
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import { v3, WrappedDocument } from "@tradetrust-tt/tradetrust";
import { documentHederaRevokedWithDocumentStore } from "../../../../test/fixtures/v2/documentHederaRevokedWithDocumentStore";
import { documentHederaValidWithDocumentStore as v2documentHederaValidWithDocumentStore } from "../../../../test/fixtures/v2/documentHederaValidWithDocumentStore";
import { documentMixedIssuance } from "../../../../test/fixtures/v2/documentMixedIssuance";
import { documentNotIssuedWithTokenRegistry } from "../../../../test/fixtures/v2/documentNotIssuedWithTokenRegistry";
import { openAttestationEthereumDocumentStoreStatus } from "./ethereumDocumentStoreStatus";

// v3 documents
import v3DocumentStoreIssuedRaw from "../../../../test/fixtures/v3/documentStore-issued.json";
import v3DocumentStoreWrappedRaw from "../../../../test/fixtures/v3/documentStore-wrapped.json";
import v3TokenRegistryIssuedRaw from "../../../../test/fixtures/v3/tokenRegistry-issued.json";
import { VerifierOptions } from "../../../types/core";

const v3DocumentStoreWrapped = v3DocumentStoreWrappedRaw as WrappedDocument<v3.OpenAttestationDocument>;
const v3DocumentStoreIssued = v3DocumentStoreIssuedRaw as WrappedDocument<v3.OpenAttestationDocument>;
const v3TokenRegistryIssued = v3TokenRegistryIssuedRaw as WrappedDocument<v3.OpenAttestationDocument>;

const options = {} as VerifierOptions;
//hederatestnet
describe("test", () => {
describe("v2", () => {
it("should return false when document does not have data", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(
{ ...v2documentHederaValidWithDocumentStore, data: null } as any,
options
);
expect(shouldVerify).toBe(false);
});
it("should return false when document does not have issuers", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(
{
...v2documentHederaValidWithDocumentStore,
data: { ...v2documentHederaValidWithDocumentStore.data, issuers: null },
} as any,
options
);
expect(shouldVerify).toBe(false);
});
it("should return false when document uses token registry", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(
documentNotIssuedWithTokenRegistry,
options
);
expect(shouldVerify).toBe(false);
});
it("should return true when document uses document store", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(
documentHederaRevokedWithDocumentStore,
options
);
expect(shouldVerify).toBe(true);
});
});
describe("v3", () => {
it("should return true for documents not yet issued via document store", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(v3DocumentStoreWrapped, options);
expect(shouldVerify).toBe(true);
});
it("should return true for documents issued via document store", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(v3DocumentStoreIssued, options);
expect(shouldVerify).toBe(true);
});
it("should return false for documents issued via token registry", async () => {
const shouldVerify = await openAttestationEthereumDocumentStoreStatus.test(v3TokenRegistryIssued, options);
expect(shouldVerify).toBe(false);
});
});
});

describe("verify", () => {
describe("v2", () => {
it("should return an invalid fragment when used with other issuance methods", async () => {
const fragment = await openAttestationEthereumDocumentStoreStatus.verify(documentMixedIssuance, options);

expect(fragment).toMatchInlineSnapshot(`
Object {
"data": [Error: Document store address not found in issuer DEMO STORE],
"name": "OpenAttestationEthereumDocumentStoreStatus",
"reason": Object {
"code": 7,
"codeString": "INVALID_ISSUERS",
"message": "Document store address not found in issuer DEMO STORE",
},
"status": "ERROR",
"type": "DOCUMENT_STATUS",
}
`);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ describe("verify", () => {
it("should return a valid fragment when document has valid identity and uses document store", async () => {
const fragment = await openAttestationDnsTxtIdentityProof.verify(documentHederaValidWithDocumentStore, options);
expect(fragment).toMatchInlineSnapshot(`
Object {
"data": Array [
Object {
"location": "trustlv.org",
"status": "VALID",
"value": "0x3DE43bfd3D771931E46CbBd4EDE0D3d95C85f81A",
},
],
"name": "OpenAttestationDnsTxtIdentityProof",
"status": "VALID",
"type": "ISSUER_IDENTITY",
}
`);
Object {
"data": Array [
Object {
"location": "trustlv.org",
"status": "VALID",
"value": "0x222B69788e2e9B7FB93a3a0fE258D4604Dc7df21",
},
],
"name": "OpenAttestationDnsTxtIdentityProof",
"status": "VALID",
"type": "ISSUER_IDENTITY",
}
`);
});
});
});
71 changes: 71 additions & 0 deletions test/fixtures/v2/documentHederaRevokedWithDocumentStore.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { SchemaId, v2, WrappedDocument } from "@tradetrust-tt/tradetrust";

interface CustomDocument extends v2.OpenAttestationDocument {
billTo: any;
network: {
chain: string;
chainId: string;
};
consignment: any;
declaration: any;
certification: any;
}

export const documentHederaRevokedWithDocumentStore: WrappedDocument<CustomDocument> = {
version: SchemaId.v2,
data: {
$template: {
name: "8f76e856-0695-4032-83f1-3e7a0e502b71:string:CERTIFICATE_OF_NON_MANIPULATION",
type: "9b10ec23-1ae4-401b-bc11-af9127f2dc4b:string:EMBEDDED_RENDERER",
url: "4d38de69-0622-4012-9316-38167b88f608:string:https://demo-cnm.openattestation.com",
},
billTo: {
name: "2fdf99b6-06f0-4d3c-87f5-8f8dde803b96:string:XYZ",
},
issuers: [
{
name: "ed31c75d-c0e4-4541-945f-0d9323068e2c:string:Demo Issuer",
documentStore: "3804f213-cb9d-4e2c-9051-d125ff63024f:string:0x222B69788e2e9B7FB93a3a0fE258D4604Dc7df21",
identityProof: {
type: "55592302-01e2-483b-967e-bb4239f79e49:string:DNS-TXT",
location: "82d945d8-35ef-4556-86c2-609a98549bfd:string:trustlv.org",
},
},
],
network: {
chain: "56221d22-bc28-4915-8a05-c3eb33724531:string:HBAR",
chainId: "b17571c7-c9c2-40af-b2d4-c14d8c7563c8:string:296",
},
consignment: {
description: "9f6661db-6465-4533-975b-d3b2df0152c5:string:16667 RED WINE",
quantity: {
value: "58b2fa48-b186-40d6-b722-75fab3365367:string:1000",
unit: "a8608e66-8356-4afa-b6bb-910506059d5a:string:LITRES",
},
countryOfOrigin: "c27d8e9d-b02c-47bf-87d5-740d0fc8a8e8:string:INDIA",
outwardBillNo: "e3a9c88e-0232-4884-8030-c3a3d206bc10:string:AQSIQ170923130",
dateOfDischarge: "477a597d-08d7-4b21-9e1b-c7af5c614661:string:2024-03-01",
dateOfDeparture: "22ecb19a-a148-432b-a21f-dd2abcab3b4e:string:2024-03-20",
countryOfFinalDestination: "bf10847d-ee86-4445-8c91-c149013bf5f5:string:SINGAPORE",
outgoingVehicleNo: "5708878e-9a66-4feb-9c8d-29e0ee936cfc:string:COSCO SING 074E/01-MAR",
},
declaration: {
name: "f733bb67-7273-406d-a8d4-70b6fe8d6c43:string:JOHN",
designation: "0b4603f2-e2b7-4081-a303-296304748b82:string:SHIPPING MANAGER",
date: "9506b5f1-6f0e-4a06-9ae4-eb7e869beebe:string:2024-03-01",
},
certification: {
name: "498463c7-2a70-45fa-bd50-5f2da3ec252c:string:DEMO JOHN TAN",
designation: "992d0be8-ed3d-4354-a0a1-d3360101ffb8:string:DEMO",
date: "8ae9b8f9-07c2-40a6-a711-220f82084f53:string:2024-03-01",
signature:
"57869919-e1e3-4549-9743-90ac71d7c453:string:data:image/png;base64,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",
},
},
signature: {
type: "SHA3MerkleProof",
targetHash: "ab9040f1dce119c447a5eae6d08ec264f588350e47015d6aa32c49eb3ccdf60b",
proof: ["e3f42315d32b7d23942f2c140eb00254f120fc8b772c3ab771e36a2c17b5d4a7"],
merkleRoot: "fcea61cfe337f52c50ea52b2d092cbbcfe395b3e1880de148720b5a3cdd1539b",
},
};
54 changes: 39 additions & 15 deletions test/fixtures/v2/documentHederaValidWithDocumentStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,63 @@ interface CustomDocument extends v2.OpenAttestationDocument {
};
consignment: any;
declaration: any;
certification: any;
}
export const documentHederaValidWithDocumentStore: WrappedDocument<CustomDocument> = {
version: SchemaId.v2,
data: {
$template: {
name: "main",
type: "EMBEDDED_RENDERER",
url: "https://tutorial-renderer.openattestation.com",
name: "6bc6b7da-bf1d-4d54-a445-58c8534f622e:string:CERTIFICATE_OF_NON_MANIPULATION",
type: "ea285365-edda-458e-a5d9-581f8534b8a2:string:EMBEDDED_RENDERER",
url: "9fd7ef5f-24ee-44cb-b9ee-f1f0e5c558fb:string:https://demo-cnm.openattestation.com",
},
recipient: {
name: "KrypC - Piruthivi",
name: "3af83dd0-b2b3-474f-b951-2e22b31d7aad:string:XYZ",
address: {
street: "101 ORCHARD ROAD",
country: "SINGAPORE",
street: "f1ca022a-3f6b-4024-8d59-88816c5d7c87:string:42 BRIGADE ROAD",
country: "28b0ecca-e376-467a-b828-1b78627cd7d8:string:INDIA",
},
},
issuers: [
{
name: "KrypC Issuer",
tokenRegistry: "0x3DE43bfd3D771931E46CbBd4EDE0D3d95C85f81A",
name: "f233558c-e011-446a-84bb-701b16010257:string:Demo Issuer",
documentStore: "d478a47d-d9d3-4879-82b8-3643b332c82d:string:0x222B69788e2e9B7FB93a3a0fE258D4604Dc7df21",
identityProof: {
type: "DNS-TXT",
location: "trustlv.org",
type: "c0624592-af6c-436d-87a2-f4d02c277a60:string:DNS-TXT",
location: "5da286bd-6c42-4054-859e-e5661e78f306:string:trustlv.org",
},
},
],
consignment: {},
declaration: {},
consignment: {
description: "a371ecb9-e01f-4a57-bf00-b5704fba6fbc:string:16667 RED WINE",
quantity: {
value: "b45e8a3e-df98-4f5a-a2e0-5c780e57d648:string:1000",
unit: "21e2659e-a9a3-4d5f-95a9-32073c6e2d1d:string:LITRES",
},
countryOfOrigin: "0a58ba84-e35f-498d-b6e5-45d3ee48b519:string:INDIA",
outwardBillNo: "d78a523f-0819-4faa-8816-836427b20905:string:AQSIQ170923130",
dateOfDischarge: "0c6b0ef9-9418-43fb-944d-f5060c6557f4:string:2024-03-01",
dateOfDeparture: "ecb4655f-2c38-4965-8816-bce9d657f69f:string:2024-03-20",
countryOfFinalDestination: "32c8a550-bc72-488b-adfe-2df38b821671:string:SINGAPORE",
outgoingVehicleNo: "66dfd2c9-0052-4cd3-9962-6f35c9600ec1:string:COSCO SING 074E/01-MAR",
},
declaration: {
name: "0df36d67-fe76-436a-8cfd-3338a96e3b74:string:JOHN",
designation: "165d2b71-cca9-46f3-9d9e-dede1bbd6e42:string:SHIPPING MANAGER",
date: "1efca0d5-9792-4134-8e74-ec3e0c0ff292:string:2024-03-01",
},
certification: {
name: "3a1d00f0-b519-4d16-a4ce-e101cf66f667:string:DEMO JOHN TAN",
designation: "cc543b1d-9a7d-4366-ad21-b4f31a9ce173:string:DEMO",
date: "48b90f5c-37d2-4ff1-800d-45b8160eddd7:string:2024-03-01",
signature:
"57069b0b-7261-484e-af49-d0daeeaeee5e:string:data:image/png;base64,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",
},
},
signature: {
type: "SHA3MerkleProof",
targetHash: "1fdea9b542ec22f7d87f23d86f1cf3e526e2edec1b9baaa9aedff904efea78a9",
proof: [],
merkleRoot: "1fdea9b542ec22f7d87f23d86f1cf3e526e2edec1b9baaa9aedff904efea78a9",
targetHash: "f3488cf45a2d0cee14d28a115787daf1521fafadbf5617a1f04183ab90c8be71",
proof: ["c6d865ac5803a8d7cbaba58136d14c0b832de06af2e899829b1a73913e4dd9f3"],
merkleRoot: "139576d4803d4220368446c0f6f2803a702ccf8a93dd529596f17b96a647a524",
},
};
Loading