Skip to content

Commit

Permalink
feat(core-magistrate): add bridgechain asset repository (bridgechain …
Browse files Browse the repository at this point in the history
…registration and update) (#3375)

Add bridgechain "asset repository" in bridgechain registration (optional field) + allow update with bridgechain update transaction.

Allow update of bridgechain main repository with bridgechain update transaction.
  • Loading branch information
air1one authored Jan 9, 2020
1 parent 774b525 commit 0805613
Show file tree
Hide file tree
Showing 21 changed files with 612 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ describe("Check that the bridgechain was registered", () => {
expect(bridgechains[0].name).toBe(utils.bridgechainRegistrationAsset.name);
expect(bridgechains[0].seedNodes).toEqual(utils.bridgechainRegistrationAsset.seedNodes);
expect(bridgechains[0].bridgechainRepository).toBe(utils.bridgechainRegistrationAsset.bridgechainRepository);
expect(bridgechains[0].bridgechainAssetRepository).toBe(utils.bridgechainRegistrationAsset.bridgechainAssetRepository);
expect(bridgechains[0].genesisHash).toBe(utils.bridgechainRegistrationAsset.genesisHash);
expect(bridgechains[0].ports).toEqual(utils.bridgechainRegistrationAsset.ports);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ describe("Check that the bridgechain was updated", () => {
const bridgechains = bridgechainResponse.data.data;
expect(bridgechains).toBeArrayOfSize(1);
expect(bridgechains[0].name).toBe(utils.bridgechainRegistrationAsset.name);
expect(bridgechains[0].seedNodes).toEqual(utils.bridgechainUpdateAsset.seedNodes);
expect(bridgechains[0].bridgechainRepository).toBe(utils.bridgechainRegistrationAsset.bridgechainRepository);
expect(bridgechains[0].genesisHash).toBe(utils.bridgechainRegistrationAsset.genesisHash);
expect(bridgechains[0].seedNodes).toEqual(utils.bridgechainUpdateAsset.seedNodes);
expect(bridgechains[0].bridgechainRepository).toBe(utils.bridgechainUpdateAsset.bridgechainRepository);
expect(bridgechains[0].bridgechainAssetRepository).toBe(utils.bridgechainUpdateAsset.bridgechainAssetRepository);
expect(bridgechains[0].ports).toEqual(utils.bridgechainUpdateAsset.ports);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ const bridgechainRegistrationAsset = {
],
genesisHash: "127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand All @@ -42,6 +43,8 @@ const bridgechainUpdateAsset = {
"75.125.224.71",
],
ports: { "@arkecosystem/core-api": 54321 },
bridgechainRepository: "http://www.newrepository.com/neworg/newrepo",
bridgechainAssetRepository: "http://www.newrepository.com/neworg/newassetrepo",
};

const bridgechainResignationAsset = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand All @@ -45,6 +46,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand All @@ -55,6 +57,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand All @@ -74,6 +77,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand All @@ -91,6 +95,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand Down Expand Up @@ -120,6 +125,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "83cf8b609de60036a8277bd0e96135751bbc07eb234256d4b65b893360651bf2",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[1])
Expand Down Expand Up @@ -147,6 +153,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "83cf8b609de60036a8277bd0e96135751bbc07eb234256d4b65b893360651bf2",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[2])
Expand All @@ -171,6 +178,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: `ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39${i}`,
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand Down Expand Up @@ -202,6 +210,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[0])
Expand Down Expand Up @@ -231,6 +240,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451",
bridgechainRepository: "repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(secrets[5])
Expand Down Expand Up @@ -285,6 +295,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
// no bridgechainAssetRepository on purpose as it is optional
ports: { "@arkecosystem/core-api": 12345 },
})
.withPassphrase(passphrase)
Expand Down Expand Up @@ -358,6 +369,7 @@ describe("Transaction Forging - Bridgechain registration", () => {
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
})
.withSenderPublicKey(multiSigPublicKey)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ describe("Transaction Forging - Bridgechain resignation", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -70,6 +71,7 @@ describe("Transaction Forging - Bridgechain resignation", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "6b51d431df5d7f141cbececcf79edf3dd861c3b4069f0b11661a3eefacbba918",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -144,6 +146,7 @@ describe("Transaction Forging - Bridgechain resignation", () => {
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -231,6 +234,7 @@ describe("Transaction Forging - Bridgechain resignation", () => {
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ describe("Transaction Forging - Bridgechain update", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -93,6 +94,7 @@ describe("Transaction Forging - Bridgechain update", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "b17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -170,6 +172,7 @@ describe("Transaction Forging - Bridgechain update", () => {
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4523540f1504cd17100c4835e85b7eefd49911580f8efff0599a8f283be6b9e3",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -260,6 +263,7 @@ describe("Transaction Forging - Bridgechain update", () => {
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4ec9599fc203d176a301536c2e091a19bc852759b255bd6818810a42c5fed14a",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down Expand Up @@ -296,6 +300,7 @@ describe("Transaction Forging - Bridgechain update", () => {
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "c17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
bridgechainAssetRepository: "http://www.repository.com/myorg/myassetrepo",
ports: { "@arkecosystem/core-api": 12345 },
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ describe("Bridgechain update builder", () => {
bridgechainId: genesisHash,
seedNodes: ["192.168.1.0", "131.107.0.89"],
ports: { "@arkecosystem/core-api": 12345 },
bridgechainRepository: "http://github.com/bridgechain/repo",
bridgechainAssetRepository: "http://github.com/bridgechain/assetrepo",
})
.sign("passphrase");
expect(actual.build().verified).toBeTrue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@ import { Handlers } from "@arkecosystem/core-transactions";
import { Managers, Utils } from "@arkecosystem/crypto";
import {
BridgechainAlreadyRegisteredError,
BridgechainIsResignedError,
StaticFeeMismatchError,
WalletIsNotBusinessError,
} from "../../../../packages/core-magistrate-transactions/src/errors";
import {
BridgechainRegistrationTransactionHandler,
BridgechainResignationTransactionHandler,
BusinessRegistrationTransactionHandler,
} from "../../../../packages/core-magistrate-transactions/src/handlers";
import {
Expand Down Expand Up @@ -46,11 +44,9 @@ jest.mock("@arkecosystem/core-container", () => {

let businessRegistrationHandler: Handlers.TransactionHandler;
let bridgechainRegistrationHandler: Handlers.TransactionHandler;
let bridgechainResignationHandler: Handlers.TransactionHandler;

let businessRegistrationBuilder: MagistrateBuilders.BusinessRegistrationBuilder;
let bridgechainRegistrationBuilder: MagistrateBuilders.BridgechainRegistrationBuilder;
let bridgechainResignationBuilder: MagistrateBuilders.BridgechainResignationBuilder;

let senderWallet: Wallets.Wallet;
let walletManager: State.IWalletManager;
Expand All @@ -62,16 +58,13 @@ describe("should test marketplace transaction handlers", () => {

Handlers.Registry.registerTransactionHandler(BusinessRegistrationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BridgechainRegistrationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BridgechainResignationTransactionHandler);

beforeEach(() => {
businessRegistrationHandler = new BusinessRegistrationTransactionHandler();
bridgechainRegistrationHandler = new BridgechainRegistrationTransactionHandler();
bridgechainResignationHandler = new BridgechainResignationTransactionHandler();

businessRegistrationBuilder = new MagistrateBuilders.BusinessRegistrationBuilder();
bridgechainRegistrationBuilder = new MagistrateBuilders.BridgechainRegistrationBuilder();
bridgechainResignationBuilder = new MagistrateBuilders.BridgechainResignationBuilder();

walletManager = new Wallets.WalletManager();
walletManager.registerIndex(MagistrateIndex.Businesses, businessIndexer);
Expand Down Expand Up @@ -167,8 +160,8 @@ describe("should test marketplace transaction handlers", () => {
expect(
senderWallet.getAttribute<IBusinessWalletAttributes>("business").bridgechains[
bridgechainRegistrationAsset1.genesisHash
].bridgechainAsset.genesisHash,
).toBe(bridgechainRegistrationAsset1.genesisHash);
].bridgechainAsset,
).toEqual(bridgechainRegistrationAsset1);

bridgechainRegistration.bridgechainRegistrationAsset(bridgechainRegistrationAsset2).nonce("3");
await expect(
Expand All @@ -178,22 +171,8 @@ describe("should test marketplace transaction handlers", () => {
expect(
senderWallet.getAttribute<IBusinessWalletAttributes>("business").bridgechains[
bridgechainRegistrationAsset2.genesisHash
].bridgechainAsset.genesisHash,
).toBe(bridgechainRegistrationAsset2.genesisHash);

const bridgechainResignation = bridgechainResignationBuilder
.bridgechainResignationAsset(bridgechainRegistrationAsset1.genesisHash)
.nonce("4")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

await expect(
bridgechainResignationHandler.applyToSender(bridgechainResignation.build(), walletManager),
).toResolve();

bridgechainResignation.nonce("5");
await expect(
bridgechainResignationHandler.applyToSender(bridgechainResignation.build(), walletManager),
).rejects.toThrowError(BridgechainIsResignedError);
].bridgechainAsset,
).toEqual(bridgechainRegistrationAsset2);
});

describe("revert for sender", () => {
Expand Down
Loading

0 comments on commit 0805613

Please sign in to comment.