blob: dc05f628589166b6074f19ec106cc1e3758527e7 [file] [log] [blame]
'use strict';
const assert = require('assert');
const RemoteAPI = require('../tools/js/remote.js').RemoteAPI;
describe('RemoteAPI', function () {
describe('configure', function () {
it('should accept a valid configuration', function () {
let remote = new RemoteAPI();
assert.doesNotThrow(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80}); });
});
it('should reject a scheme other than http and https', function () {
let remote = new RemoteAPI();
assert.doesNotThrow(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80}); });
assert.doesNotThrow(function () { remote.configure({scheme: 'https', host: 'build.webkit.org', port: 9999}); });
assert.throws(function () { remote.configure({scheme: 'ftp', host: 'build.webkit.org', port: 9999}); });
});
it('should accept a configuration without port', function () {
let remote = new RemoteAPI();
assert.doesNotThrow(function () { remote.configure({scheme: 'http', host: 'build.webkit.org'}); });
});
it('should reject non-string value for scheme', function () {
let remote = new RemoteAPI();
assert.throws(function () { remote.configure({scheme: 1, host: 'build.webkit.org', port: 80}); });
assert.throws(function () { remote.configure({scheme: {}, host: 'build.webkit.org', port: 80}); });
assert.throws(function () { remote.configure({scheme: [], host: 'build.webkit.org', port: 80}); });
});
it('should reject non-string value for host', function () {
let remote = new RemoteAPI();
assert.throws(function () { remote.configure({scheme: 'http', host: 1, port: 80}); });
assert.throws(function () { remote.configure({scheme: 'http', host: {}, port: 80}); });
assert.throws(function () { remote.configure({scheme: 'http', host: [], port: 80}); });
});
it('should reject non-object value for auth', function () {
let remote = new RemoteAPI();
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: 'a'}); });
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: 1}); });
});
it('should accept a configuration with auth', function () {
let remote = new RemoteAPI();
assert.doesNotThrow(function () {
remote.configure({
scheme: 'http',
host: 'build.webkit.org',
port: 80,
auth: {
'username': 'a',
'password': 'b',
},
});
});
});
it('should reject auth without username or password or when either is not a string', function () {
let remote = new RemoteAPI();
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: {}}); });
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: {username: 'a'}}); });
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: {password: 'b'}}); });
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: {username: 1, password: 'a'}}); });
assert.throws(function () { remote.configure({scheme: 'http', host: 'build.webkit.org', port: 80, auth: {username: 'a', password: 1}}); });
});
});
describe('url', function () {
it('should be able to serialize http://build.webkit.org', function () {
let remote = new RemoteAPI({scheme: 'http', host: 'build.webkit.org', port: 80});
assert.equal(remote.url('/json/builders'), 'http://build.webkit.org/json/builders');
});
it('should be able to serialize http://build.webkit.org when port is not specified', function () {
let remote = new RemoteAPI({scheme: 'http', host: 'build.webkit.org'});
assert.equal(remote.url('/json/builders'), 'http://build.webkit.org/json/builders');
});
it('should be able to serialize https://build.webkit.org when port is 80', function () {
let remote = new RemoteAPI({scheme: 'http', host: 'build.webkit.org', port: 80});
assert.equal(remote.url('/json/builders'), 'http://build.webkit.org/json/builders');
});
it('should be able to serialize http://build.webkit.org:8080', function () {
let remote = new RemoteAPI({scheme: 'http', host: 'build.webkit.org', port: 8080});
assert.equal(remote.url('/json/builders'), 'http://build.webkit.org:8080/json/builders');
});
it('should be able to serialize https://build.webkit.org when port is not specified', function () {
let remote = new RemoteAPI({scheme: 'https', host: 'build.webkit.org'});
assert.equal(remote.url('/json/builders'), 'https://build.webkit.org/json/builders');
});
it('should be able to serialize https://build.webkit.org when port is 443', function () {
let remote = new RemoteAPI({scheme: 'https', host: 'build.webkit.org', port: 443});
assert.equal(remote.url('/json/builders'), 'https://build.webkit.org/json/builders');
});
it('should be able to serialize https://build.webkit.org:8443', function () {
let remote = new RemoteAPI({scheme: 'https', host: 'build.webkit.org', port: 8443});
assert.equal(remote.url('/json/builders'), 'https://build.webkit.org:8443/json/builders');
});
it('should automatically prefix the path with /', function () {
let remote = new RemoteAPI({scheme: 'http', host: 'build.webkit.org'});
assert.equal(remote.url('json/builders'), 'http://build.webkit.org/json/builders');
});
});
});