123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- describe('SauceLabs', function () {
- var SauceLabs = require('..');
- var sauce;
- var nockle;
- describe('#constructor', function () {
- it('can be instantiated with `new`', function () {
- sauce = new SauceLabs();
- sauce.should.be.an.instanceof(SauceLabs);
- });
- });
- describe('once instantiated', function () {
- beforeEach(function () {
- var base = 'https://:username::password@saucelabs.com';
- var config = {
- username: 'johndoe',
- password: '550e8400-e29b-41d4-a716-446655440000',
- proxy: 'http://google.com'
- };
- sauce = new SauceLabs(config);
- nockle = new chai.Nockle(base, config);
- });
- afterEach(function () {
- sauce = null;
- nockle = null;
- });
- describe('when the response status is not 200', function () {
- it('notifies the callback', function (done) {
- var error = { error: 'foobar' };
- var mock = nockle.failget('/rest/v1/users/:username', null, error);
- sauce.getAccountDetails(verifyFailure(error, done));
- });
- });
- describe('when the response body cannot be parsed', function () {
- it('notifies the callback', function (done) {
- var error = 'foobar';
- var mock = nockle.failget('/rest/v1/users/:username', null, error);
- sauce.getAccountDetails(verifyFailure('Could not parse response: ' + error, done));
- });
- });
- describe('#getAccountDetails', function () {
- it('GETs `/rest/v1/users/:username`', function (done) {
- var mock = nockle.get('/rest/v1/users/:username');
- sauce.getAccountDetails(verifySuccess(mock, done));
- });
- });
- describe('#getAccountLimits', function () {
- it('GETs `/rest/v1/:username/limits`', function (done) {
- var mock = nockle.get('/rest/v1/:username/limits');
- sauce.getAccountLimits(verifySuccess(mock, done));
- });
- });
- describe('#getUserActivity', function () {
- describe('without start and end dates', function () {
- it('GETs `/rest/v1/:username/activity`', function (done) {
- var mock = nockle.get('/rest/v1/:username/activity');
- sauce.getUserActivity(verifySuccess(mock, done));
- });
- });
- describe('with start date', function () {
- var start = new Date('Jan 1, 1970 00:00:00');
- it('GETs `/rest/v1/:username/activity?start=1970-01-01`', function (done) {
- var mock = nockle.get('/rest/v1/:username/activity?start=1970-01-01');
- sauce.getUserActivity(start, verifySuccess(mock, done));
- });
- });
- describe('with end date', function () {
- var end = new Date('Jan 1, 1971 00:00:00');
- it('GETs `/rest/v1/:username/activity?end=1971-01-01`', function (done) {
- var mock = nockle.get('/rest/v1/:username/activity?end=1971-01-01');
- sauce.getUserActivity(null, end, verifySuccess(mock, done));
- });
- });
- describe('with start and end dates', function () {
- var start = new Date('Jan 1, 1970 00:00:00');
- var end = new Date('Jan 1, 1971 00:00:00');
- it('GETs `/rest/v1/:username/activity?start=1970-01-01&end=1971-01-01`', function (done) {
- var mock = nockle.get('/rest/v1/:username/activity?start=1970-01-01&end=1971-01-01');
- sauce.getUserActivity(start, end, verifySuccess(mock, done));
- });
- });
- });
- describe('#getUserConcurrency', function () {
- it('GETs `/rest/v1/users/:username/concurrency`', function (done) {
- var mock = nockle.get('/rest/v1/users/:username/concurrency');
- sauce.getUserConcurrency(verifySuccess(mock, done));
- });
- });
- describe('#getAccountUsage', function () {
- it('GETs `/rest/v1/users/:username/usage`', function (done) {
- var mock = nockle.get('/rest/v1/users/:username/usage');
- sauce.getAccountUsage(verifySuccess(mock, done));
- });
- });
- describe('#getJobs', function () {
- it('GETs `/rest/v1/:username/jobs?full=true`', function (done) {
- var mock = nockle.get('/rest/v1/:username/jobs?full=true');
- sauce.getJobs(verifySuccess(mock, done));
- });
- });
- describe('#showJob', function () {
- it('GETs `/rest/v1/:username/jobs/:id`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.get('/rest/v1/:username/jobs/:id', { id: id });
- sauce.showJob(id, verifySuccess(mock, done));
- });
- });
- describe('#showJobAssets', function () {
- it('GETs `/rest/v1/:username/jobs/:id/assets`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.get('/rest/v1/:username/jobs/:id/assets', { id: id });
- sauce.showJobAssets(id, verifySuccess(mock, done));
- });
- });
- describe('#updateJob', function () {
- it('PUTs `/rest/v1/:username/jobs/:id`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.put('/rest/v1/:username/jobs/:id', { id: id });
- sauce.updateJob(id, {}, verifySuccess(mock, done));
- });
- it('doesnt require a callback', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.put('/rest/v1/:username/jobs/:id', { id: id });
- sauce.updateJob(id, {});
- done();
- });
- });
- describe('#stopJob', function () {
- it('PUTs `/rest/v1/:username/jobs/:id/stop`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.put('/rest/v1/:username/jobs/:id/stop', { id: id });
- sauce.stopJob(id, {}, verifySuccess(mock, done));
- });
- });
- describe('#deleteJob', function () {
- it('DELETEs `/rest/v1/:username/jobs/:id`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.delete('/rest/v1/:username/jobs/:id', { id: id });
- sauce.deleteJob(id, verifySuccess(mock, done));
- });
- });
- describe('#getActiveTunnels', function () {
- it('GETs `/rest/v1/:username/tunnels`', function (done) {
- var mock = nockle.get('/rest/v1/:username/tunnels');
- sauce.getActiveTunnels(verifySuccess(mock, done));
- });
- });
- describe('#getTunnel', function () {
- it('GETs `/rest/v1/:username/tunnels/:id`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.get('/rest/v1/:username/tunnels/:id', { id: id });
- sauce.getTunnel(id, verifySuccess(mock, done));
- });
- });
- describe('#deleteTunnel', function () {
- it('DELETEs `/rest/v1/:username/tunnels/:id`', function (done) {
- var id = '01230123-example-id-1234';
- var mock = nockle.delete('/rest/v1/:username/tunnels/:id', { id: id });
- sauce.deleteTunnel(id, verifySuccess(mock, done));
- });
- });
- describe('#getServiceStatus', function () {
- it('GETs `/rest/v1/info/status`', function (done) {
- var mock = nockle.get('/rest/v1/info/status');
- sauce.getServiceStatus(verifySuccess(mock, done));
- });
- });
- describe('#getBrowsers', function () {
- it('GETs `/rest/v1/info/browsers`', function (done) {
- var mock = nockle.get('/rest/v1/info/browsers');
- sauce.getBrowsers(verifySuccess(mock, done));
- });
- });
- describe('#getAllBrowsers', function () {
- it('GETs `/rest/v1/info/browsers/all`', function (done) {
- var mock = nockle.get('/rest/v1/info/browsers/all');
- sauce.getAllBrowsers(verifySuccess(mock, done));
- });
- });
- describe('#getSeleniumBrowsers', function () {
- it('GETs `/rest/v1/info/browsers/selenium-rc`', function (done) {
- var mock = nockle.get('/rest/v1/info/browsers/selenium-rc');
- sauce.getSeleniumBrowsers(verifySuccess(mock, done));
- });
- });
- describe('#getWebDriverBrowsers', function () {
- it('GETs `/rest/v1/info/browsers/webdriver`', function (done) {
- var mock = nockle.get('/rest/v1/info/browsers/webdriver');
- sauce.getWebDriverBrowsers(verifySuccess(mock, done));
- });
- });
- describe('#getTestCounter', function () {
- it('GETs `/rest/v1/info/counter`', function (done) {
- var mock = nockle.get('/rest/v1/info/counter');
- sauce.getTestCounter(verifySuccess(mock, done));
- });
- });
- describe('#createSubAccount', function () {
- it('POSTs `/rest/v1/users/:username`', function (done) {
- var mock = nockle.post('/rest/v1/users/:username');
- sauce.createSubAccount({}, verifySuccess(mock, done));
- });
- });
- describe('#updateSubAccount', function () {
- it('POSTs `/rest/v1/users/:username/subscription`', function (done) {
- var mock = nockle.post('/rest/v1/users/:username/subscription');
- sauce.updateSubAccount({}, verifySuccess(mock, done));
- });
- });
- describe('#deleteSubAccount', function () {
- it('DELETEs `/rest/v1/users/:username/subscription`', function (done) {
- var mock = nockle.delete('/rest/v1/users/:username/subscription');
- sauce.deleteSubAccount(verifySuccess(mock, done));
- });
- });
- describe('#createPublicLink', function () {
- var id = '01230123-example-id-1234';
- var date = new Date('Jan 1, 1970 00:00:00');
- describe('with job ID, date and hour', function () {
- it('creates the proper link', function (done) {
- var expected = 'https://saucelabs.com/jobs/01230123-example-id-1234?auth=8bcfe0b2e888794a63050ea74ad12005';
- sauce.createPublicLink(id, date, true, verifyLink(expected, done));
- });
- });
- describe('with job ID and date', function () {
- it('creates the proper link', function (done) {
- var expected = 'https://saucelabs.com/jobs/01230123-example-id-1234?auth=c86f247871504dfc1b11736b334b2409';
- sauce.createPublicLink(id, date, verifyLink(expected, done));
- });
- });
- describe('with job ID', function () {
- it('creates the proper link', function (done) {
- var expected = 'https://saucelabs.com/jobs/01230123-example-id-1234?auth=211e7791e357ddbc22065b864167d3c9';
- sauce.createPublicLink(id, verifyLink(expected, done));
- });
- });
- });
- describe('#getSubAccountList', function () {
- it('GETs `/rest/v1/users/:username/list-subaccounts`', function (done) {
- var mock = nockle.get('/rest/v1/users/:username/list-subaccounts');
- sauce.getSubAccountList(verifySuccess(mock, done));
- });
- });
- describe('#getSubAccounts', function () {
- it('GETs `/rest/v1/users/:username/subaccounts`', function (done) {
- var mock = nockle.get('/rest/v1/users/:username/subaccounts');
- sauce.getSubAccounts(verifySuccess(mock, done));
- });
- });
- });
- });
- function verifySuccess(mock, done) {
- return function (err, data) {
- if (err) return done(new Error(err.error));
- mock.isDone().should.be.true;
- done();
- };
- }
- function verifyFailure(error, done) {
- return function (err, data) {
- if (!err) return done(new Error('Request succeeded'));
- err.should.deep.equal(error);
- done();
- };
- }
- function verifyLink(url, done) {
- return function (err, data) {
- if (err) return done(new Error(err));
- data.should.equal(url);
- done();
- };
- }
|