Skip to content

Commit

Permalink
test: more refactoring of various tests and assert module.
Browse files Browse the repository at this point in the history
  • Loading branch information
chjj committed Aug 12, 2017
1 parent 3a7484d commit c522c79
Show file tree
Hide file tree
Showing 8 changed files with 301 additions and 214 deletions.
81 changes: 20 additions & 61 deletions test/bech32-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,17 @@ function toAddress(hrp, version, program) {
}

function createProgram(version, program) {
const ver = Buffer.from([version ? version + 0x80 : 0, program.length]);
return Buffer.concat([ver, program]);
const data = Buffer.allocUnsafe(2 + program.length);
data[0] = version ? version + 0x80 : 0;
data[1] = program.length;
program.copy(data, 2);
return data;
}

describe('Bech32', function() {
for (const addr of validChecksums) {
it(`should have valid checksum for ${addr}`, () => {
const ret = bech32.deserialize(addr);
assert(ret);
assert(bech32.deserialize(addr));
});
}

Expand All @@ -160,42 +162,20 @@ describe('Bech32', function() {
}
}

let ok = ret !== null;
assert(ret !== null);

if (ok) {
const output = createProgram(ret.version, ret.program);
ok = output.equals(script);
}

if (ok) {
const recreate = toAddress(hrp, ret.version, ret.program);
ok = recreate === addr.toLowerCase();
}
const output = createProgram(ret.version, ret.program);
assert.bufferEqual(output, script);

assert(ok);
const recreate = toAddress(hrp, ret.version, ret.program);
assert.strictEqual(recreate, addr.toLowerCase());
});
}

for (const addr of invalidAddresses) {
it(`should have invalid address for ${addr}`, () => {
let ok1 = null;

try {
ok1 = fromAddress('bc', addr);
} catch (e) {
ok1 = null;
}

let ok2 = null;

try {
ok2 = fromAddress('tb', addr);
} catch (e) {
ok2 = null;
}

const ok = ok1 === null && ok2 === null;
assert(ok);
assert.throws(() => fromAddress('bc', addr));
assert.throws(() => fromAddress('tb', addr));
});
}

Expand All @@ -217,41 +197,20 @@ describe('Bech32', function() {
}
}

let ok = ret !== null;
assert(ret !== null);

if (ok) {
const output = createProgram(ret.version, ret.hash);
ok = output.equals(script);
}

if (ok) {
const recreate = ret.toBech32();
ok = recreate === addr.toLowerCase();
}
const output = createProgram(ret.version, ret.hash);
assert.bufferEqual(output, script);

assert(ok);
const recreate = ret.toBech32();
assert.strictEqual(recreate, addr.toLowerCase());
});
}

for (const addr of invalidAddresses) {
it(`should have invalid address for ${addr}`, () => {
let ok1 = null;

try {
ok1 = Address.fromBech32(addr, 'main');
} catch (e) {
ok1 = null;
}

let ok2 = null;

try {
ok2 = Address.fromBech32(addr, 'testnet');
} catch (e) {
ok2 = null;
}

assert(!ok1 && !ok2);
assert.throws(() => Address.fromBech32(addr, 'main'));
assert.throws(() => Address.fromBech32(addr, 'testnet'));
});
}
});
30 changes: 29 additions & 1 deletion test/bip150-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,49 +66,61 @@ describe('BIP150', function() {

it('should encrypt payload from client to server', () => {
const packet = client.packet('fake', payload());

let emitted = false;
server.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

server.feed(packet);

assert(emitted);
});

it('should encrypt payload from server to client', () => {
const packet = server.packet('fake', payload());

let emitted = false;
client.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

client.feed(packet);

assert(emitted);
});

it('should encrypt payload from client to server (2)', () => {
const packet = client.packet('fake', payload());

let emitted = false;
server.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

server.feed(packet);

assert(emitted);
});

it('should encrypt payload from server to client (2)', () => {
const packet = server.packet('fake', payload());

let emitted = false;
client.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

client.feed(packet);

assert(emitted);
});

Expand Down Expand Up @@ -141,69 +153,85 @@ describe('BIP150', function() {

it('should encrypt payload from client to server after rekey', () => {
const packet = client.packet('fake', payload());

let emitted = false;
server.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

server.feed(packet);

assert(emitted);
});

it('should encrypt payload from server to client after rekey', () => {
const packet = server.packet('fake', payload());

let emitted = false;
client.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

client.feed(packet);

assert(emitted);
});

it('should encrypt payload from client to server after rekey (2)', () => {
const packet = client.packet('fake', payload());

let emitted = false;
server.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

server.feed(packet);

assert(emitted);
});

it('should encrypt payload from server to client after rekey (2)', () => {
const packet = server.packet('fake', payload());

let emitted = false;
client.once('packet', (cmd, body) => {
emitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

client.feed(packet);

assert(emitted);
});

it('should encrypt payloads both ways asynchronously', () => {
const spacket = server.packet('fake', payload());
const cpacket = client.packet('fake', payload());

let cemitted = false;
let semitted = false;
client.once('packet', (cmd, body) => {
cemitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

let semitted = false;
server.once('packet', (cmd, body) => {
semitted = true;
assert.strictEqual(cmd, 'fake');
assert.bufferEqual(body, payload());
});

client.feed(spacket);
server.feed(cpacket);

assert(cemitted);
assert(semitted);
});
Expand Down
Loading

0 comments on commit c522c79

Please sign in to comment.