Skip to content

Commit be38e9c

Browse files
committedSep 27, 2018
Added more checksum test vectors
1 parent 49f2909 commit be38e9c

File tree

2 files changed

+77
-10
lines changed

2 files changed

+77
-10
lines changed
 

Diff for: ‎src/__tests__/checksum.fixtures.ts

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
export const checksummedStore = [{
2+
original: "4BAF5FADA8E5DB92C3D3242618C5B47133AE003C",
3+
good_no0x:"4BaF5fADa8E5Db92c3D3242618c5b47133Ae003c",
4+
good: "0x4BaF5fADa8E5Db92c3D3242618c5b47133Ae003c",
5+
bad: "0x4baF5fADa8E5Db92c3D3242618c5b47133Ae003c", // first b is lowercase
6+
},
7+
{
8+
original: "448261915A80CDE9BDE7C7A791685200D3A0BF4E",
9+
good_no0x:"448261915a80CDe9bde7C7A791685200d3A0BF4e",
10+
good: "0x448261915a80CDe9bde7C7A791685200d3A0BF4e",
11+
bad: "0x448261915a80cDe9bde7C7A791685200d3A0BF4e", // first c is lowercase
12+
},
13+
{
14+
original: "DED02FD979FC2E55C0243BD2F52DF022C40ADA1E",
15+
good_no0x:"DED02FD979fC2e55c0243Bd2f52DF022C40aDa1E",
16+
good: "0xDED02FD979fC2e55c0243Bd2f52DF022C40aDa1E",
17+
bad: "0xdED02FD979fC2e55c0243Bd2f52DF022C40aDa1E", // first d is lowercase
18+
},
19+
{
20+
original: "13F06E60297BEA6A3C402F6F64C416A6B31E586E",
21+
good_no0x:"13f06E60297bEA6A3C402F6F64c416a6B31e586e",
22+
good: "0x13f06E60297bEA6A3C402F6F64c416a6B31e586e",
23+
bad: "0x13F06E60297bEA6A3C402F6F64c416a6B31e586e", // first f is uppercase
24+
},
25+
{
26+
original: "1A90C25307C3CC71958A83FA213A2362D859CF33",
27+
good_no0x:"1a90c25307c3Cc71958A83fa213a2362D859cF33",
28+
good: "0x1a90c25307c3Cc71958A83fa213a2362D859cF33",
29+
bad: "0x1A90c25307c3Cc71958A83fa213a2362D859cF33", // first a is uppercase
30+
31+
},
32+
{
33+
original: "625ABAEBD87DAE9AB128F3B3AE99688813D9C5DF",
34+
good_no0x:"625aBAEBd87Dae9AB128F3b3ae99688813d9C5Df",
35+
good: "0x625aBAEBd87Dae9AB128F3b3ae99688813d9C5Df",
36+
bad: "0x625AbAEBd87Dae9AB128F3b3ae99688813d9C5Df", // first A is uppercase, b is lowercase
37+
},
38+
{
39+
original: "36BA34097F861191C48C839C9B1A8B5912F583CF",
40+
good_no0x:"36BA34097f861191c48c839c9B1A8B5912f583cf",
41+
good: "0x36BA34097f861191c48c839c9B1A8B5912f583cf",
42+
bad: "0x36bA34097f861191c48c839c9B1A8B5912f583cF", // first b is lowercase, last F is uppercase
43+
},
44+
{
45+
original: "D2453AE76C9A86AAE544FCA699DBDC5C576AEF3A",
46+
good_no0x:"D2453AE76c9a86AAE544FCa699DBdC5C576aEf3A",
47+
good: "0xD2453AE76c9a86AAE544FCa699DBdC5C576aEf3A",
48+
bad: "0xd2453aE76c9a86AaE544FCA699DBdC5C576Aef3A", // random lowercase / upperacase
49+
},
50+
{
51+
original: "72220E84947C36118CDBC580454DFAA3B918CD97",
52+
good_no0x:"72220E84947c36118CDbc580454DfaA3B918cd97",
53+
good: "0x72220E84947c36118CDbc580454DfaA3B918cd97",
54+
bad: "0x72220e84947C36118cdBC580454dFAa3b918CD97", // inverted cases
55+
},
56+
{
57+
original: "50F92304C892D94A385CA6CE6CD6950CE9A36839",
58+
good_no0x:"50f92304c892d94A385Ca6ce6cD6950ce9A36839",
59+
good: "0x50f92304c892d94A385Ca6ce6cD6950ce9A36839",
60+
bad: "0x50F92304c892D94A385Ca6ce6CD6950ce9A36839", // random lowercase / upperacase
61+
}
62+
];

Diff for: ‎src/__tests__/util.spec.ts

+15-10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import elliptic from 'elliptic';
22
import Signature from 'elliptic/lib/elliptic/ec/signature';
33
import BN from 'bn.js';
44
import {addresses} from './address.fixtures';
5+
import {checksummedStore} from './checksum.fixtures';
56
import {pairs} from './keypairs.fixtures';
67
import schnorrVectors from './schnorr.fixtures';
78
import * as util from '../util';
@@ -190,21 +191,25 @@ describe('utils', () => {
190191
});
191192
});
192193

193-
it('should return a valid checksummed address', () => {
194-
const checksummed = "0x7bB3b0E8A59f3f61d9BFf038f4AEB42Cae2eccE8";
195-
const actual = util.toChecksumAddress(checksummed.toLowerCase());
196-
expect(actual).toEqual(checksummed);
194+
it('should return a valid 0x prefixed checksummed address', () => {
195+
checksummedStore.forEach(({original: address, good: expected}) => {
196+
const actual = util.toChecksumAddress(address);
197+
expect(actual).toEqual(expected);
198+
expect(actual.substr(0, 2)).toEqual("0x");
199+
});
197200
});
198201

199202
it('should return true when a valid checksummed address is tested', () => {
200-
const checksummed = "0x7bB3b0E8A59f3f61d9BFf038f4AEB42Cae2eccE8";
201-
const actual = util.isValidChecksumAddress(checksummed);
202-
expect(actual).toBeTruthy();
203+
checksummedStore.forEach(({good: checksummed}) => {
204+
const actual = util.isValidChecksumAddress(checksummed);
205+
expect(actual).toBeTruthy();
206+
});
203207
});
204208

205209
it('should return false when an invalid checksummed address is tested', () => {
206-
const bad = "0x7bB3b0E8A59f3f61d9BFf038f4AEB42Cae2eccE8".toLowerCase();
207-
const actual = util.isValidChecksumAddress( bad );
208-
expect(actual).toBeFalsy();
210+
checksummedStore.forEach(({bad: badlychecksummed}) => {
211+
const actual = util.isValidChecksumAddress(badlychecksummed);
212+
expect(actual).toBeFalsy();
213+
});
209214
});
210215
});

0 commit comments

Comments
 (0)
Please sign in to comment.