2018-03-14 20:02:44 +00:00
|
|
|
const assert = require('assert');
|
|
|
|
const Embark = require('embark');
|
|
|
|
let EmbarkSpec = Embark.initTests();
|
|
|
|
let web3 = EmbarkSpec.web3;
|
2018-03-13 14:13:31 +00:00
|
|
|
|
2018-03-01 15:42:44 +00:00
|
|
|
const TestUtils = require("../utils/testUtils.js")
|
|
|
|
const idUtils = require("../utils/identityUtils.js")
|
2018-02-28 18:35:15 +00:00
|
|
|
const web3EthAbi = require("web3-eth-abi");
|
|
|
|
|
2018-03-14 20:02:44 +00:00
|
|
|
describe('IdentityFactory', function(accounts) {
|
2018-02-28 14:18:00 +00:00
|
|
|
|
|
|
|
let identityFactory;
|
2018-02-28 15:47:59 +00:00
|
|
|
let identity;
|
|
|
|
let updatedIdentity;
|
|
|
|
let updatedIdentityKernel;
|
2018-02-28 14:18:00 +00:00
|
|
|
|
2018-03-14 20:02:44 +00:00
|
|
|
before( function(done) {
|
|
|
|
this.timeout(0);
|
|
|
|
|
|
|
|
EmbarkSpec = Embark.initTests();
|
|
|
|
web3 = EmbarkSpec.web3;
|
|
|
|
|
|
|
|
// @rramos - this fails
|
|
|
|
EmbarkSpec.deployAll({
|
|
|
|
"IdentityFactory": {
|
|
|
|
args: ["0xaaa"]
|
|
|
|
}
|
|
|
|
}, (_accounts) => {
|
|
|
|
accounts = _accounts;
|
|
|
|
|
|
|
|
done();
|
2018-02-28 15:47:59 +00:00
|
|
|
});
|
2018-03-14 20:02:44 +00:00
|
|
|
});
|
2018-02-28 15:47:59 +00:00
|
|
|
|
|
|
|
|
2018-03-14 20:02:44 +00:00
|
|
|
it("Creates a new identity", async () => {
|
|
|
|
let tx = await IdentityFactory.methods.createIdentity({from: accounts[0]});
|
|
|
|
const logEntry = tx.logs[0];
|
|
|
|
assert.strictEqual(logEntry.event, "IdentityCreated");
|
|
|
|
identity = await Identity.at(logEntry.args.instance, {from: accounts[0]})
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
await identity.getKeyPurpose(TestUtils.addressToBytes32(accounts[0])),
|
|
|
|
idUtils.purposes.MANAGEMENT,
|
|
|
|
identity.address + ".getKeyPurpose("+accounts[0]+") is not MANAGEMENT_KEY")
|
|
|
|
});
|
2018-02-28 15:47:59 +00:00
|
|
|
|
2018-03-14 20:02:44 +00:00
|
|
|
|
|
|
|
it("Registers a updated identity contract", async() => {
|
|
|
|
const infoHash = "0xbbb";
|
|
|
|
updatedIdentityKernel = await UpdatedIdentityKernel.new({from: accounts[0]});
|
|
|
|
await identityFactory.setKernel(updatedIdentityKernel.address, infoHash);
|
2018-02-28 15:47:59 +00:00
|
|
|
|
2018-03-14 20:02:44 +00:00
|
|
|
const newKernel = await TestUtils.listenForEvent(identityFactory.NewKernel());
|
|
|
|
assert(newKernel.infohash, infoHash, "Infohash is not correct");
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
it("Creates a new identity using latest version", async() => {
|
|
|
|
let tx = await identityFactory.createIdentity({from: accounts[0]});
|
|
|
|
const logEntry = tx.logs[0];
|
|
|
|
assert.strictEqual(logEntry.event, "IdentityCreated");
|
|
|
|
|
|
|
|
updatedIdentity = await UpdatedIdentityKernel.at(logEntry.args.instance, {from: accounts[0]})
|
|
|
|
tx = await updatedIdentity.test({from: accounts[0]});
|
|
|
|
assert.strictEqual(tx.logs[0].event, "TestFunctionExecuted");
|
|
|
|
|
|
|
|
// Test if it still executes identity functions as expected
|
|
|
|
let baseIdentity = await Identity.at(updatedIdentity.address, {from: accounts[0]})
|
|
|
|
assert.equal(
|
|
|
|
await identity.getKeyPurpose(TestUtils.addressToBytes32(accounts[0])),
|
|
|
|
1,
|
|
|
|
identity.address + ".getKeyPurpose("+accounts[0]+") is not MANAGEMENT_KEY")
|
|
|
|
});
|
2018-02-28 14:18:00 +00:00
|
|
|
|
2018-02-28 15:47:59 +00:00
|
|
|
|
2018-03-14 20:02:44 +00:00
|
|
|
it("Updates an identity to the latest version", async() => {
|
|
|
|
let tx1 = await identity.execute(
|
|
|
|
identity.address,
|
|
|
|
0,
|
|
|
|
idUtils.encode.updateUpdatableInstance(updatedIdentityKernel.address),
|
|
|
|
{from: accounts[0]}
|
|
|
|
);
|
|
|
|
assert.strictEqual(tx1.logs[tx1.logs.length - 1].event, "Executed");
|
|
|
|
|
|
|
|
// Calling function available in updated identity kernel
|
|
|
|
let updatedIdentity1 = await UpdatedIdentityKernel.at(identity.address, {from: accounts[0]})
|
|
|
|
let tx2 = await updatedIdentity1.test({from: accounts[0]});
|
|
|
|
|
|
|
|
assert.strictEqual(tx2.logs[tx2.logs.length - 1].event, "TestFunctionExecuted");
|
|
|
|
assert.equal(
|
|
|
|
tx2.logs[tx2.logs.length - 1].args.minApprovalsByManagementKeys.toString(10),
|
|
|
|
1,
|
|
|
|
identity.address + " wasn't updated to last version");
|
2018-02-28 14:18:00 +00:00
|
|
|
});
|
2018-03-14 20:02:44 +00:00
|
|
|
|
2018-02-28 14:18:00 +00:00
|
|
|
|
2018-03-13 14:13:31 +00:00
|
|
|
});
|
|
|
|
|