Skip to content

Commit

Permalink
Merge pull request #5 from mystic-lab/fail-address-test
Browse files Browse the repository at this point in the history
Failing tests for address book functions
  • Loading branch information
schnetzlerjoe committed Jun 20, 2023
2 parents 9570797 + 235474b commit 0c0c3d5
Show file tree
Hide file tree
Showing 4 changed files with 354 additions and 17 deletions.
8 changes: 4 additions & 4 deletions packages/snap/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { OnRpcRequestHandler } from "@metamask/snaps-types";
import { panel, text } from "@metamask/snaps-ui";
import { initializeChains } from "./initialize";
import { Chains } from "./types/chains";
import { Address, Addresses } from "./types/address"
import { Address, Addresses } from "./types/address";
import { ChainState, AddressState } from "./state";

/**
Expand Down Expand Up @@ -60,9 +60,9 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => {
throw new Error("Invalid addAddress request");
}

let new_address : Address = JSON.parse(request.params.address);
let new_address: Address = JSON.parse(request.params.address);

return await AddressState.addAddress(new_address)
return await AddressState.addAddress(new_address);

case "deleteAddress":
// Delete an address from the address book in wallet state
Expand All @@ -77,7 +77,7 @@ export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => {
throw new Error("Invalid addAddress request");
}

return await AddressState.removeAddress(request.params.chain_id)
return await AddressState.removeAddress(request.params.chain_id);

case "getAddresses":
// Get all addresses from the address book in wallet state
Expand Down
4 changes: 4 additions & 0 deletions packages/snap/src/state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,8 @@ export class AddressState {
newState: { addresses: addresses.string() },
},
});

return true;
}

/**
Expand Down Expand Up @@ -295,5 +297,7 @@ export class AddressState {
newState: { addresses: addresses.string() },
},
});

return true;
}
}
129 changes: 116 additions & 13 deletions packages/snap/tests/address-book-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,6 @@ class PassingAddressStateTests {
},
};

constructor() {
test.before(() => {
(globalThis as any).snap = this.snapMock;
});
}

//getAddressBook function should return current state of address book
async getAddressBookPassTest(t: any) {
//get current state of AddressBook
Expand Down Expand Up @@ -143,12 +137,121 @@ class PassingAddressStateTests {
}
}

const tests = new PassingAddressStateTests();
class FailingAddressStateTests {
//Mock snap object for 'data?.addresses == undefined'
snapMock1 = {
request: (params: any) => {
return {
addresses: undefined,
};
},
};

//Mock snap object for 'typeof data?.addresses !== "string"'
snapMock2 = {
request: (params: any) => {
return {
addresses: 1,
};
},
};

//getAddressBook function should throw error
async getAddressBookFailTest(t: any) {
await t.throwsAsync(
async () => {
await AddressState.getAddressBook();
},
{ instanceOf: Error }
);
}

//getAddress function should throw error
async getAddressFailTest(t: any) {
await t.throwsAsync(
async () => {
await AddressState.getAddress("1");
},
{ instanceOf: Error }
);
}

//addAddress function should throw error
async addAddressFailTest(t: any) {
//Initialize new address
const new_address: Address = {
name: "User4",
address: "0xghijkl",
chain_id: "4",
};

await t.throwsAsync(
async () => {
await AddressState.addAddress(new_address);
},
{ instanceOf: Error }
);
}

//removeAddress function should throw error
async removeAddressFailTest(t: any) {
await t.throwsAsync(
async () => {
await AddressState.removeAddress("1");
},
{ instanceOf: Error }
);
}

//addAddresses function should throw error
async addAddressesFailTest(t: any) {
//Initialize new address
const new_address: Address = {
name: "User4",
address: "0xghijkl",
chain_id: "4",
};

//Initialize new address book
let new_address_book = new Addresses([new_address]);

await t.throwsAsync(
async () => {
await AddressState.addAddresses(new_address_book);
},
{ instanceOf: Error }
);
}
}

//Intialize test classes
const passing_tests = new PassingAddressStateTests();
const failing_tests = new FailingAddressStateTests();

test.serial("AddressState Passing Tests", async (t) => {
(globalThis as any).snap = passing_tests.snapMock;

await passing_tests.getAddressBookPassTest(t);
await passing_tests.getAddressPassTest(t);
await passing_tests.addAddressPassTest(t);
await passing_tests.removeAddressPassTest(t);
await passing_tests.addAddressesPassTest(t);
});

test.serial("AddressState Failing Tests", async (t) => {
(globalThis as any).snap = failing_tests.snapMock1;

await failing_tests.getAddressBookFailTest(t);
await failing_tests.getAddressFailTest(t);
await failing_tests.addAddressFailTest(t);
await failing_tests.removeAddressFailTest(t);
await failing_tests.addAddressesFailTest(t);

(globalThis as any).snap = failing_tests.snapMock2;

test.serial("AddressState Tests", async (t) => {
await tests.getAddressBookPassTest(t);
await tests.getAddressPassTest(t);
await tests.addAddressPassTest(t);
await tests.removeAddressPassTest(t);
await tests.addAddressesPassTest(t);
await failing_tests.getAddressBookFailTest(t);
await failing_tests.getAddressFailTest(t);
await failing_tests.addAddressFailTest(t);
await failing_tests.removeAddressFailTest(t);
await failing_tests.addAddressesFailTest(t);
});
Loading

0 comments on commit 0c0c3d5

Please sign in to comment.