blob: a7a631fee47763b34466d73cdc6848eaab9d24ea [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
var test = require('tape');
var Blessings = require('../../src/security/blessings');
var vom = require('./../../src/vom');
var WireBlessings =
require('../../src/gen-vdl/v.io/v23/security').WireBlessings;
function makeTestWireBlessings() {
return new WireBlessings({
certificateChains: [
[
{
extension: 'A',
publicKey: new Uint8Array([1, 2, 3])
},
{
extension: 'B',
publicKey: new Uint8Array([4, 5, 6])
}
],
[
{
extension: 'C',
publicKey: new Uint8Array([7, 8, 9])
}
]
]
});
}
function makeTestBlessings() {
return new Blessings(makeTestWireBlessings());
}
test('Blessings constructor', function(t) {
var blessings = makeTestBlessings();
t.deepEquals(blessings.publicKey, new Uint8Array([4, 5, 6]),
'Got correct public key');
t.deepEquals(blessings.chains, makeTestWireBlessings().certificateChains,
'Got correct chains');
t.end();
});
test('Encode and decode of blessings', function(t) {
var blessings = makeTestBlessings();
var encodedBlessings = vom.encode(blessings);
vom.decode(encodedBlessings, false, undefined,
function(err, decodedBlessings) {
t.error(err, 'Error decoding to Blessings');
t.deepEquals(decodedBlessings.publicKey, blessings.publicKey,
'Got correct public key');
t.equals(decodedBlessings.length, blessings.length,
'Decoded blessings are the correct length');
t.equals(decodedBlessings.chains[0][0].extension,
blessings.chains[0][0].extension,
'Should get same extension');
t.equals(decodedBlessings.chains[1][0].extension,
blessings.chains[1][0].extension,
'Should get same extension for second chain');
t.deepEquals(decodedBlessings.chains[0][1].publicKey,
blessings.chains[0][1].publicKey,
'Should get same publicKey');
t.end();
});
});
test('Blessings toString', function(t) {
var blessings = makeTestBlessings();
t.equals(blessings.toString(), 'A:B C');
t.end();
});