Skip to content

Commit

Permalink
feat(daml): test tooling class
Browse files Browse the repository at this point in the history
Primary Changes
---------------
1. Create a test tooling class for DAML AIO Image
Fixes hyperledger-cacti#3435

Signed-off-by: raynato.c.pedrajeta <[email protected]>
  • Loading branch information
raynatopedrajeta committed Sep 3, 2024
1 parent ec9683d commit 5495569
Show file tree
Hide file tree
Showing 8 changed files with 745 additions and 3 deletions.
100 changes: 100 additions & 0 deletions packages/cactus-plugin-ledger-connector-daml/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
{
"name": "@hyperledger/cactus-plugin-ledger-connector-daml",
"version": "2.0.0-rc.3",
"description": "Allows Cactus nodes to connect to a DAML ledger.",
"keywords": [
"Hyperledger",
"Cactus",
"Integration",
"Blockchain",
"Distributed Ledger Technology"
],
"homepage": "https://github.com/hyperledger/cacti#readme",
"bugs": {
"url": "https://github.com/hyperledger/cacti/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/hyperledger/cacti.git"
},
"license": "Apache-2.0",
"author": {
"name": "Hyperledger Cactus Contributors",
"email": "[email protected]",
"url": "https://www.hyperledger.org/use/cacti"
},
"contributors": [
{
"name": "Please add yourself to the list of contributors",
"email": "[email protected]",
"url": "https://example.com"
},
{
"name": "Peter Somogyvari",
"email": "[email protected]",
"url": "https://accenture.com"
}
],
"main": "dist/lib/main/typescript/index.js",
"module": "dist/lib/main/typescript/index.js",
"browser": "dist/cactus-plugin-ledger-connector-corda.web.umd.js",
"types": "dist/lib/main/typescript/index.d.ts",
"files": [
"dist/*"
],
"scripts": {
"codegen": "yarn run --top-level run-s 'codegen:*'",
"codegen:openapi": "run-p generate-sdk generate-server",
"generate-sdk": "run-p 'generate-sdk:*'",
"generate-sdk:go": "openapi-generator-cli generate -i ./src/main/json/openapi.json -g go -o ./src/main/go/generated/openapi/go-client/ --git-user-id hyperledger --git-repo-id $(echo $npm_package_name | replace @hyperledger/ \"\" -z)/src/main/go/generated/openapi/go-client --package-name $(echo $npm_package_name | replace @hyperledger/ \"\" -z) --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore",
"generate-sdk:kotlin": "openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin -o ./src/main/kotlin/generated/openapi/kotlin-client/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore",
"generate-sdk:typescript-axios": "openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --ignore-file-override ../../openapi-generator-ignore",
"generate-server": "yarn run --top-level openapi-generator-cli generate -i ./src/main/json/openapi.json -g kotlin-spring -o ./src/main-server/kotlin/gen/kotlin-spring/ -c ./src/main-server/openapi-generator-config.yaml --ignore-file-override ../../openapi-generator-ignore",
"watch": "npm-watch",
"webpack": "npm-run-all webpack:dev",
"webpack:dev": "npm-run-all webpack:dev:node webpack:dev:web",
"webpack:dev:node": "webpack --env=dev --target=node --config ../../webpack.config.js",
"webpack:dev:web": "webpack --env=dev --target=web --config ../../webpack.config.js"
},
"dependencies": {
"@hyperledger/cactus-common": "2.0.0-rc.3",
"@hyperledger/cactus-core": "2.0.0-rc.3",
"@hyperledger/cactus-core-api": "2.0.0-rc.3",
"axios": "1.6.0",
"express-openapi-validator": "5.2.0",
"internal-ip": "6.2.0",
"joi": "17.13.3",
"node-ssh": "13.1.0",
"prom-client": "15.1.3",
"rxjs": "7.8.1",
"temp": "0.9.4",
"typescript-optional": "2.0.1"
},
"devDependencies": {
"@hyperledger/cactus-test-tooling": "2.0.0-rc.3",
"@types/body-parser": "1.19.4",
"@types/express": "4.17.21",
"@types/multer": "1.4.7",
"@types/temp": "0.9.1",
"@types/uuid": "10.0.0",
"body-parser": "1.20.2",
"express": "4.19.2",
"uuid": "10.0.0"
},
"engines": {
"node": ">=18",
"npm": ">=8"
},
"publishConfig": {
"access": "public"
},
"browserMinified": "dist/cactus-plugin-ledger-connector-corda.web.umd.min.js",
"mainMinified": "dist/cactus-plugin-ledger-connector-corda.node.umd.min.js",
"watch": {
"codegen:openapi": {
"patterns": [
"./src/main/json/openapi.json"
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
import "jest-extended";
import { DamlTestLedger } from "@hyperledger/cactus-test-tooling";

import test, { Test } from "tape-promise/tape";
import { LogLevelDesc } from "@hyperledger/cactus-common";
import { pruneDockerAllIfGithubAction } from "../../../../../../packages/cactus-test-tooling/src/main/typescript/github-actions/prune-docker-all-if-github-action"
import fetch from "node-fetch";
import FormData from "form-data";
import https from "https";
import * as fs from 'fs';

const testCase = "Instantiate plugin";
const logLevel: LogLevelDesc = "TRACE";

describe("PluginLedgerConnectorDAML", () => {
const damlTestLedger = new DamlTestLedger();

beforeAll(async () => {
const pruning = pruneDockerAllIfGithubAction({ logLevel });
await damlTestLedger.start();

});

afterAll(async () => {
await damlTestLedger.stop();
await damlTestLedger.destroy();
});

// describe("daml test transaction", () => {
// it("daml test transaction", async () => {
// const damlauthtoken: string = await damlTestLedger.getDamlAuthorizationToken();
// console.log("raw daml auth")
// console.log(damlauthtoken)
// console.log("break")

// test("Test Get DAML Response", async () => {
// const url = "http://localhost:7575/v1/query"
// console.log("i am here")
// const response = await fetch(url, {
// method: "GET",
// headers: {
// "Content-Type": "application/json",
// Authorization: `Bearer ${damlauthtoken}`,
// },
// });
// console.log("here 123")
// console.log(response)
// console.log("stringify----")
// console.log(JSON.stringify(response.body))
// console.log("xxxx")

// console.log("error handling data")
// console.log("success!")
// });
// })
// })
describe("daml test transaction", () => {
it("daml test transaction", async () => {
const getPartiesInvolvedVar: string = await damlTestLedger.getPartiesInvolved();
// const getAliceToken: string = damlTestLedger.generateJwtToken();
console.log("parties involved")
console.log(getPartiesInvolvedVar)
// const data = JSON.parse(fs.readFileSync(getPartiesInvolvedVar, 'utf8'));
//get the token for Alice
const getTokenForAlice: string = damlTestLedger.getIdentifierByDisplayName(getPartiesInvolvedVar, "Alice")
console.log("THIS IS THE TOKEN FOR ALICE-----")
console.log(getTokenForAlice)
console.log("break")

// create a function for jwt generator
const getAliceToken: string = damlTestLedger.generateJwtToken(getTokenForAlice);
console.log(getAliceToken)


//get the sample IOU contract using Alice
const url = "http://localhost:7575/v1/query"
console.log("i am here")
const response = await fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${getAliceToken}`,
},
});
const responseBody = await response.json()
console.log(responseBody.result[0].templateId)
const getIouTemplate = responseBody.result[0].templateId

console.log("-----CREATE IOU-----")

const iouBody = {
templateId: `${getIouTemplate}`,
payload: {
issuer: `${getTokenForAlice}`,
owner: `${getTokenForAlice}`,
currency: "USD",
amount: "999.99",
observers: []
}
}
// CREATE IOU
const createIouUrl = "http://localhost:7575/v1/create"
const responseForIOU = await fetch(createIouUrl, {
method: "POST",
body: JSON.stringify(iouBody),
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${getAliceToken}`,
},
});
const responseForIOUBody = await responseForIOU.json()
console.log(responseForIOUBody)

console.log("break2")

// Transfer to BOB
const transferUrl = "http://localhost:7575/v1/exercise"
const responseForIOU = await fetch(transferUrl, {
method: "POST",
body: JSON.stringify(iouBody),
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${getAliceToken}`,
},
});
const responseForIOUBody = await responseForIOU.json()
console.log(responseForIOUBody)

console.log("break2")
// Accept transfer as BOB
const acceptUrl = "http://localhost:7575/v1/exercise"
const responseForIOU = await fetch(acceptUrl, {
method: "POST",
body: JSON.stringify(iouBody),
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${getAliceToken}`,
},
});
const responseForIOUBody = await responseForIOU.json()
console.log(responseForIOUBody)

console.log("break2")

// Query IOU as Bob

})
})
});
Loading

0 comments on commit 5495569

Please sign in to comment.