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

refactor(core-magistrate): Split core-marketplace into core-magistrate-crypto and core-magistrate-transactions #2967

Merged
merged 12 commits into from
Sep 27, 2019
Prev Previous commit
Next Next commit
fix: test bridgechain-update
  • Loading branch information
zan committed Sep 24, 2019
commit 82bd2051ccad88a70ffa9f2e523e7c9cc357b937
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { Identities, Utils } from "@arkecosystem/crypto";
import { TransactionFactory } from "../../helpers/transaction-factory";
import { secrets } from "../../utils/config/testnet/delegates.json";
import * as support from "./__support__";

const { passphrase } = support.passphrases;

beforeAll(support.setUp);
afterAll(support.tearDown);

describe("Transaction Forging - Bridgechain update", () => {
it("should broadcast, accept and forge it ", async () => {
// Initial Funds
const initialFunds = TransactionFactory.transfer(Identities.Address.fromPassphrase(passphrase), 100 * 1e8)
.withPassphrase(secrets[0])
.createOne();

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

// Registering a business
const businessRegistration = TransactionFactory.businessRegistration({
name: "ark",
website: "ark.io",
})
.withPassphrase(secrets[0])
.createOne();

await expect(businessRegistration).toBeAccepted();
await support.snoozeForBlock(1);
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: "127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935",
bridgechainRepository: "somerepository",
})
.withPassphrase(secrets[0])
.createOne();

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

// Updating a bridgechain
let bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: Utils.BigNumber.ONE,
seedNodes: ["1.2.3.4", "127.0.0.1", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(secrets[0])
.createOne();

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

// Bridgechain resignation
const bridgechainResignation = TransactionFactory.bridgechainResignation("1")
.withPassphrase(secrets[0])
.createOne();
await expect(bridgechainResignation).toBeAccepted();
await support.snoozeForBlock(1);
await expect(bridgechainResignation.id).toBeForged();

// Updating a bridgechain after resignation
bridgechainUpdate = TransactionFactory.bridgechainUpdate({
bridgechainId: Utils.BigNumber.ONE,
seedNodes: ["1.2.3.4", "127.0.0.1", "192.168.1.0", "131.107.0.89"],
})
.withPassphrase(secrets[0])
.createOne();

await expect(bridgechainUpdate).toBeRejected();
await support.snoozeForBlock(1);
await expect(bridgechainUpdate.id).not.toBeForged();
});
});
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { app } from "@arkecosystem/core-container";
import { Database, EventEmitter, State, TransactionPool } from "@arkecosystem/core-interfaces";
import { BusinessUpdateTransaction } from "@arkecosystem/core-magistrate-crypto";
import { Interfaces as MagistrateInterfaces} from "@arkecosystem/core-magistrate-crypto";
import { Interfaces as MagistrateInterfaces } from "@arkecosystem/core-magistrate-crypto";
import { MagistrateTransactionGroup, MagistrateTransactionType } from "@arkecosystem/core-magistrate-crypto";
import { Handlers } from "@arkecosystem/core-transactions";
import { Interfaces, Managers, Transactions } from "@arkecosystem/crypto";
import { MagistrateTransactionGroup, MagistrateTransactionType } from "@arkecosystem/core-magistrate-crypto";
import { BusinessIsNotRegisteredError, BusinessIsResignedError } from "../errors";
import { MagistrateAplicationEvents } from "../events";
import { IBusinessWalletAttributes } from "../interfaces";
Expand Down Expand Up @@ -35,10 +35,11 @@ export class BusinessUpdateTransactionHandler extends Handlers.TransactionHandle
for (const transaction of transactions) {
const wallet: State.IWallet = walletManager.findByPublicKey(transaction.senderPublicKey);

const businessWalletAsset: MagistrateInterfaces.IBusinessRegistrationAsset = wallet.getAttribute<IBusinessWalletAttributes>(
"business",
).businessAsset;
const businessUpdate: MagistrateInterfaces.IBusinessUpdateAsset = transaction.asset.businessUpdate as MagistrateInterfaces.IBusinessUpdateAsset;
const businessWalletAsset: MagistrateInterfaces.IBusinessRegistrationAsset = wallet.getAttribute<
IBusinessWalletAttributes
>("business").businessAsset;
const businessUpdate: MagistrateInterfaces.IBusinessUpdateAsset = transaction.asset
.businessUpdate as MagistrateInterfaces.IBusinessUpdateAsset;

wallet.setAttribute("business.businessAsset", {
...businessWalletAsset,
Expand Down Expand Up @@ -82,9 +83,9 @@ export class BusinessUpdateTransactionHandler extends Handlers.TransactionHandle
await super.applyToSender(transaction, walletManager);

const sender: State.IWallet = walletManager.findByPublicKey(transaction.data.senderPublicKey);
const businessWalletAsset: MagistrateInterfaces.IBusinessRegistrationAsset = sender.getAttribute<IBusinessWalletAttributes>(
"business",
).businessAsset;
const businessWalletAsset: MagistrateInterfaces.IBusinessRegistrationAsset = sender.getAttribute<
IBusinessWalletAttributes
>("business").businessAsset;
const businessUpdate: MagistrateInterfaces.IBusinessUpdateAsset = transaction.data.asset.businessUpdate;

sender.setAttribute("business.businessAsset", {
Expand All @@ -99,8 +100,9 @@ export class BusinessUpdateTransactionHandler extends Handlers.TransactionHandle
): Promise<void> {
await super.revertForSender(transaction, walletManager);
const sender: State.IWallet = walletManager.findByPublicKey(transaction.data.senderPublicKey);
let businessWalletAsset: MagistrateInterfaces.IBusinessRegistrationAsset = sender.getAttribute<IBusinessWalletAttributes>("business")
.businessAsset;
let businessWalletAsset: MagistrateInterfaces.IBusinessRegistrationAsset = sender.getAttribute<
IBusinessWalletAttributes
>("business").businessAsset;

const transactionsRepository: Database.ITransactionsRepository = app.resolvePlugin<Database.IConnection>(
"database",
Expand All @@ -125,7 +127,8 @@ export class BusinessUpdateTransactionHandler extends Handlers.TransactionHandle
);

const registerTransaction: Database.IBootstrapTransaction = registerTransactions.pop();
const previousRegistration: MagistrateInterfaces.IBusinessRegistrationAsset = registerTransaction.asset.businessRegistration;
const previousRegistration: MagistrateInterfaces.IBusinessRegistrationAsset =
registerTransaction.asset.businessRegistration;
businessWalletAsset = {
...businessWalletAsset,
...previousRegistration,
Expand All @@ -139,11 +142,11 @@ export class BusinessUpdateTransactionHandler extends Handlers.TransactionHandle
transaction: Interfaces.ITransaction,
walletManager: State.IWalletManager,
// tslint:disable-next-line: no-empty
): Promise<void> { }
): Promise<void> {}

public async revertForRecipient(
transaction: Interfaces.ITransaction,
walletManager: State.IWalletManager,
// tslint:disable-next-line:no-empty
): Promise<void> { }
): Promise<void> {}
}