-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test__examples__Host.js
98 lines (88 loc) · 2.72 KB
/
test__examples__Host.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
"use strict";
const Host = artifacts.require("Host");
const Account = artifacts.require("Account");
const AddressStorage = artifacts.require("AddressStorage");
const StringStorage = artifacts.require("StringStorage");
const {
revertToSnapShot,
takeSnapShot,
} = require("./lib/web3-ganache-helpers.js");
//
contract("test/examples/Host.sol", (accounts) => {
const Account__owner = accounts[1];
const Account__new_owner = accounts[9];
const Account__data__key = "name";
const Account__data__value = "Jain";
const Host__owner = accounts[2];
const Host__fee = 100;
let snapshot_id;
//
beforeEach(async () => {
snapshot_id = (await takeSnapShot()).result;
});
//
afterEach(async () => {
await revertToSnapShot(snapshot_id);
});
//
it("Host.accountRegister disallowed from non-account owner", async () => {
const host = await Host.deployed();
const account = await Account.deployed();
try {
await host.accountRegister(account.address, {
value: Host__fee,
from: Host__owner,
});
} catch (error) {
if (
error.reason === "Host.accountRegister: message sender not authorized"
) {
return assert.isTrue(true, "Wat!?");
}
console.error(error);
}
return assert.isTrue(false, "Failed to catch expected error reason");
});
//
it("Host.accountRemove: allowed by host owner", async () => {
const host = await Host.deployed();
const account = await Account.deployed();
await host.accountRegister(account.address, {
value: Host__fee,
from: Account__owner,
});
await host.accountRemove(account.address, { from: Host__owner });
const host__registered = await AddressStorage.at(await host.registered());
const host__removed = await AddressStorage.at(await host.removed());
assert.isFalse(
await host__registered.has(account.address),
"Failed to remove account from `host.registered`"
);
return assert.isTrue(
await host__removed.has(account.address),
"Failed to set account to `host.removed`"
);
});
//
it("Host.accountRemove disallowed from non-account owner", async () => {
const host = await Host.deployed();
const account = await Account.deployed();
await host.accountRegister(account.address, {
value: Host__fee,
from: Account__owner,
});
try {
await host.accountRemove(account.address, {
from: Account__new_owner,
});
} catch (error) {
if (
error.reason === "Host.accountRemove: message sender not authorized"
) {
return assert.isTrue(true, "Wat!?");
}
console.error(error);
}
return assert.isTrue(false, "Failed to catch expected error reason");
});
});