Skip to content

Commit

Permalink
fix(core-magistrate): use genesisHash for bridgechainId (#3258)
Browse files Browse the repository at this point in the history
  • Loading branch information
air1one authored and spkjp committed Nov 18, 2019
1 parent 800bc8e commit 12869b3
Show file tree
Hide file tree
Showing 20 changed files with 124 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ afterAll(support.tearDown);

describe("Transaction Forging - Bridgechain resignation", () => {
describe("Signed with 1 Passphrase", () => {
const bridgechainRegistrationAsset = {
name: "cryptoProject",
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
};
it("should broadcast, accept and forge it [Signed with 1 Passphrase]", async () => {
// Business registration
const businessRegistration = TransactionFactory.businessRegistration({
Expand All @@ -23,12 +29,7 @@ describe("Transaction Forging - Bridgechain resignation", () => {
await expect(businessRegistration.id).toBeForged();

// Bridgechain registration
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
name: "cryptoProject",
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset)
.withPassphrase(secrets[0])
.createOne();

Expand All @@ -37,7 +38,9 @@ describe("Transaction Forging - Bridgechain resignation", () => {
await expect(bridgechainRegistration.id).toBeForged();

// Bridgechain resignation
const bridgechainResignation = TransactionFactory.bridgechainResignation(1)
const bridgechainResignation = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset.genesisHash,
)
.withPassphrase(secrets[0])
.createOne();

Expand All @@ -47,7 +50,9 @@ describe("Transaction Forging - Bridgechain resignation", () => {
});

it("should reject bridgechain resignation, because bridgechain resigned [Signed with 1 Passphrase]", async () => {
const bridgechainResignation = TransactionFactory.bridgechainResignation(1)
const bridgechainResignation = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset.genesisHash,
)
.withPassphrase(secrets[0])
.createOne();

Expand All @@ -58,24 +63,29 @@ describe("Transaction Forging - Bridgechain resignation", () => {

it("should reject bridgechain resignation, because bridgechain resignation for same bridgechain is already in the pool [Signed with 1 Passphrase]", async () => {
// Bridgechain registration
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
const bridgechainRegistrationAsset2 = {
name: "cryptoProject2",
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "6b51d431df5d7f141cbececcf79edf3dd861c3b4069f0b11661a3eefacbba918",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
};
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset2)
.withPassphrase(secrets[0])
.createOne();

await expect(bridgechainRegistration).toBeAccepted();
await support.snoozeForBlock(1);
await expect(bridgechainRegistration.id).toBeForged();

const bridgechainResignation = TransactionFactory.bridgechainResignation(2)
const bridgechainResignation = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset2.genesisHash,
)
.withPassphrase(secrets[0])
.createOne();

const bridgechainResignation2 = TransactionFactory.bridgechainResignation(2)
const bridgechainResignation2 = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset2.genesisHash,
)
.withPassphrase(secrets[0])
.withNonce(bridgechainResignation.nonce.plus(1))
.createOne();
Expand Down Expand Up @@ -125,12 +135,13 @@ describe("Transaction Forging - Bridgechain resignation", () => {
await expect(businessRegistration.id).toBeForged();

// Registering a bridgechain
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
const bridgechainRegistrationAsset = {
name: "cryptoProject",
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
};
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset)
.withPassphrase(passphrase)
.withSecondPassphrase(secondPassphrase)
.createOne();
Expand All @@ -140,7 +151,9 @@ describe("Transaction Forging - Bridgechain resignation", () => {
await expect(bridgechainRegistration.id).toBeForged();

// Bridgechain resignation
const bridgechainResignation = TransactionFactory.bridgechainResignation(3)
const bridgechainResignation = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset.genesisHash,
)
.withPassphrase(passphrase)
.withSecondPassphrase(secondPassphrase)
.createOne();
Expand Down Expand Up @@ -207,12 +220,13 @@ describe("Transaction Forging - Bridgechain resignation", () => {
await expect(businessRegistration.id).toBeForged();

// Registering a bridgechain
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
const bridgechainRegistrationAsset = {
name: "cryptoProject",
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
};
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset)
.withSenderPublicKey(multiSigPublicKey)
.withPassphraseList(passphrases)
.createOne();
Expand All @@ -222,7 +236,9 @@ describe("Transaction Forging - Bridgechain resignation", () => {
await expect(bridgechainRegistration.id).toBeForged();

// Bridgechain resignation
const bridgechainResignation = TransactionFactory.bridgechainResignation(4)
const bridgechainResignation = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset.genesisHash,
)
.withSenderPublicKey(multiSigPublicKey)
.withPassphraseList(passphrases)
.createOne();
Expand Down
45 changes: 26 additions & 19 deletions __tests__/functional/transaction-forging/bridgechain-update.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ afterAll(support.tearDown);

describe("Transaction Forging - Bridgechain update", () => {
describe("Signed with 1 Passphrase", () => {
const bridgechainRegistrationAsset = {
name: "cryptoProject",
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
};

it("should broadcast, accept and forge it [Signed with 1 Passphrase]", async () => {
// Registering a business
const businessRegistration = TransactionFactory.businessRegistration({
Expand All @@ -23,12 +30,7 @@ describe("Transaction Forging - Bridgechain update", () => {
await expect(businessRegistration.id).toBeForged();

// Registering a bridgechain
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
name: "cryptoProject",
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset)
.withPassphrase(secrets[0])
.createOne();

Expand All @@ -38,7 +40,7 @@ describe("Transaction Forging - Bridgechain update", () => {

// Updating a bridgechain
const bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: 1,
bridgechainId: bridgechainRegistrationAsset.genesisHash,
seedNodes: ["1.2.3.4", "1.2.3.5", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(secrets[0])
Expand All @@ -49,7 +51,9 @@ describe("Transaction Forging - Bridgechain update", () => {
await expect(bridgechainUpdate.id).toBeForged();

// Bridgechain resignation
const bridgechainResignation = TransactionFactory.bridgechainResignation(1)
const bridgechainResignation = TransactionFactory.bridgechainResignation(
bridgechainRegistrationAsset.genesisHash,
)
.withPassphrase(secrets[0])
.createOne();

Expand All @@ -61,7 +65,7 @@ describe("Transaction Forging - Bridgechain update", () => {
it("should reject bridgechain update, because bridgechain resigned [Signed with 1 Passphrase]", async () => {
// Updating a bridgechain after resignation
const bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: 1,
bridgechainId: bridgechainRegistrationAsset.genesisHash,
seedNodes: ["1.2.3.4", "1.2.3.5", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(secrets[0])
Expand All @@ -74,12 +78,13 @@ describe("Transaction Forging - Bridgechain update", () => {

it("should reject bridgechain update, because bridgechain update for same bridgechain is already in the pool [Signed with 1 Passphrase]", async () => {
// Registering a bridgechain
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
const bridgechainRegistrationAsset2 = {
name: "cryptoProject2",
seedNodes: ["1.2.3.4", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "b17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
};
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset2)
.withPassphrase(secrets[0])
.createOne();

Expand All @@ -88,14 +93,14 @@ describe("Transaction Forging - Bridgechain update", () => {
await expect(bridgechainRegistration.id).toBeForged();

const bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: 2,
bridgechainId: bridgechainRegistrationAsset2.genesisHash,
seedNodes: ["1.2.3.4", "1.2.3.5", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(secrets[0])
.createOne();

const bridgechainUpdate2 = TransactionFactory.bridgechainUpdate({
bridgechainId: 2,
bridgechainId: bridgechainRegistrationAsset2.genesisHash,
seedNodes: ["1.2.3.4", "1.2.3.5", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(secrets[0])
Expand Down Expand Up @@ -147,12 +152,13 @@ describe("Transaction Forging - Bridgechain update", () => {
await expect(businessRegistration.id).toBeForged();

// Registering a bridgechain
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
const bridgechainRegistrationAsset = {
name: "cryptoProject",
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4523540f1504cd17100c4835e85b7eefd49911580f8efff0599a8f283be6b9e3",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
};
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset)
.withPassphrase(passphrase)
.withSecondPassphrase(secondPassphrase)
.createOne();
Expand All @@ -163,7 +169,7 @@ describe("Transaction Forging - Bridgechain update", () => {

// Update a bridgechain
const bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: 3,
bridgechainId: bridgechainRegistrationAsset.genesisHash,
seedNodes: ["1.2.3.4", "1.2.3.5", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(passphrase)
Expand Down Expand Up @@ -231,12 +237,13 @@ describe("Transaction Forging - Bridgechain update", () => {
await expect(businessRegistration.id).toBeForged();

// Registering a bridgechain
const bridgechainRegistration = TransactionFactory.bridgechainRegistration({
const bridgechainRegistrationAsset = {
name: "cryptoProject",
seedNodes: ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"],
genesisHash: "4ec9599fc203d176a301536c2e091a19bc852759b255bd6818810a42c5fed14a",
bridgechainRepository: "http://www.repository.com/myorg/myrepo",
})
};
const bridgechainRegistration = TransactionFactory.bridgechainRegistration(bridgechainRegistrationAsset)
.withSenderPublicKey(multiSigPublicKey)
.withPassphraseList(passphrases)
.createOne();
Expand All @@ -247,7 +254,7 @@ describe("Transaction Forging - Bridgechain update", () => {

// Update a bridgechain
const bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: 4,
bridgechainId: bridgechainRegistrationAsset.genesisHash,
seedNodes: ["1.2.3.4", "1.2.3.5", "192.168.1.0", "131.107.0.89"],
})
.withSenderPublicKey(multiSigPublicKey)
Expand Down
4 changes: 2 additions & 2 deletions __tests__/helpers/transaction-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,9 @@ export class TransactionFactory {
return new TransactionFactory(bridgechainRegistrationBuilder);
}

public static bridgechainResignation(registeredBridgechainId: number): TransactionFactory {
public static bridgechainResignation(registeredBridgechainId: string): TransactionFactory {
const bridgechainResignationBuilder = new MagistrateBuilders.BridgechainResignationBuilder();
bridgechainResignationBuilder.businessResignationAsset(registeredBridgechainId);
bridgechainResignationBuilder.bridgechainResignationAsset(registeredBridgechainId);
return new TransactionFactory(bridgechainResignationBuilder);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ describe("Bridgechain resignation builder", () => {
});
describe("should test verification", () => {
it("should be true", () => {
const actual = builder.businessResignationAsset(1).sign("passphrase");
const actual = builder
.bridgechainResignationAsset("8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61")
.sign("passphrase");
expect(actual.build().verified).toBeTrue();
expect(actual.verify()).toBeTrue();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
} from "@arkecosystem/core-magistrate-crypto";
import { Managers, Transactions } from "@arkecosystem/crypto";

const genesisHash = "8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61";
let builder: MagistrateBuilders.BridgechainUpdateBuilder;

describe("Bridgechain update builder", () => {
Expand All @@ -21,7 +22,7 @@ describe("Bridgechain update builder", () => {
it("should be true", () => {
const actual = builder
.bridgechainUpdateAsset({
bridgechainId: 1,
bridgechainId: genesisHash,
seedNodes: ["192.168.1.0", "131.107.0.89"],
})
.sign("passphrase");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,20 +163,24 @@ describe("should test marketplace transaction handlers", () => {
).toResolve();

expect(
senderWallet.getAttribute<IBusinessWalletAttributes>("business").bridgechains["1"].bridgechainId,
).toBe(1);
senderWallet.getAttribute<IBusinessWalletAttributes>("business").bridgechains[
bridgechainRegistrationAsset1.genesisHash
].bridgechainAsset.genesisHash,
).toBe(bridgechainRegistrationAsset1.genesisHash);

bridgechainRegistration.bridgechainRegistrationAsset(bridgechainRegistrationAsset2).nonce("3");
await expect(
bridgechainRegistrationHandler.applyToSender(bridgechainRegistration.build(), walletManager),
).toResolve();

expect(
senderWallet.getAttribute<IBusinessWalletAttributes>("business").bridgechains["2"].bridgechainId,
).toBe(2);
senderWallet.getAttribute<IBusinessWalletAttributes>("business").bridgechains[
bridgechainRegistrationAsset2.genesisHash
].bridgechainAsset.genesisHash,
).toBe(bridgechainRegistrationAsset2.genesisHash);

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

Expand Down Expand Up @@ -215,7 +219,9 @@ describe("should test marketplace transaction handlers", () => {
);

expect(Object.keys(bridgechains).length).toEqual(1);
expect(bridgechains["1"].bridgechainId).toEqual(1);
expect(
bridgechains[bridgechainRegistrationAsset1.genesisHash].bridgechainAsset.genesisHash,
).toEqual(bridgechainRegistrationAsset1.genesisHash);
});
});
});
Expand Down
Loading

0 comments on commit 12869b3

Please sign in to comment.