blob: 41c746731b58dc86fd980c1ec1d50083a4f5d3d7 [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('prova');
var config = require('./default-config');
var vanadium = require('../../');
var verror = vanadium.verror;
function end(t, rt, err) {
t.error(err);
rt.close(t.end);
}
test('Test passing valid options to client.callOption()', function(t) {
vanadium.init(config, function(err, rt) {
if (err) {
return t.end(err);
}
var client = rt.newClient();
var opts = client.callOption({ });
t.ok(opts, 'with no options should succeed');
opts = client.callOption({
allowedServersPolicy: ['foo']
});
t.ok(opts, 'with allowedOptions should succeed');
end(t, rt);
});
});
test('Test passing invalid options to client.callOption()', function(t) {
vanadium.init(config, function(err, rt) {
if (err) {
return t.end(err);
}
var client = rt.newClient();
t.throws(function() {
client.callOption({
invalid: 'key'
});
},
verror.BadArgError,
' with one invalid option should throw BadArgError');
t.throws(function() {
client.callOption({
allowedServersPolicy: ['foo'],
'invalid': 'key'
});
},
verror.BadArgError,
'with one valid and one invalid option should throw BadArgError');
end(t, rt);
});
});
test('Test passing allowedServersPolicy that matches server blessings',
function(t) {
vanadium.init(config, function(err, rt) {
if (err) {
return t.end(err);
}
var ctx = rt.getContext();
var client = rt.newClient();
client.bindTo(ctx, 'test_service/cache', function(err, cache) {
if (err) {
return end(t, rt, err);
}
var callOpt = client.callOption({
allowedServersPolicy: ['test']
});
cache.set(ctx, 'foo', 'bar', callOpt, function(err) {
end(t, rt, err);
});
});
});
});
test('Test passing allowedServersPolicy that does not match server blessings',
function(t) {
vanadium.init(config, function(err, rt) {
if (err) {
return t.end(err);
}
var ctx = rt.getContext();
var client = rt.newClient();
client.bindTo(ctx, 'test_service/cache', function(err, cache) {
if (err) {
return end(t, rt, err);
}
var callOpt = client.callOption({
allowedServersPolicy: ['bad/blessings']
});
cache.set(ctx, 'foo', 'bar', callOpt, function(err) {
t.ok(err, 'should error');
end(t, rt);
});
});
});
});