smc-hub
Version:
CoCalc: Backend webserver component
161 lines (150 loc) • 4.59 kB
JavaScript
// Generated by CoffeeScript 2.5.1
(function() {
//########################################################################
// This file is part of CoCalc: Copyright © 2020 Sagemath, Inc.
// License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details
//########################################################################
/*
Testing API functions relating to api keys itself
COPYRIGHT : (c) 2017 SageMath, Inc.
LICENSE : AGPLv3
*/
var api, async, expect, http_message_api_v1, misc, reset, setup, teardown, winston;
api = require('./apitest');
({setup, teardown, reset, winston} = api);
({http_message_api_v1} = require('../../api/handler'));
misc = require('smc-util/misc');
async = require('async');
expect = require('expect');
describe('api key tests -- ', function() {
this.timeout(5000);
before(setup);
after(teardown);
beforeEach(reset);
it('ping endpoint is disabled', function(done) {
return http_message_api_v1({
event: 'ping',
database: api.db,
compute_server: api.compute_server,
api_key: api.api_key,
ip_address: '2.3.4.5',
logger: api.logger,
body: {},
cb: function(err, resp) {
winston.info(err, resp);
if (err == null) {
return done('there was no error, but there should!');
} else {
expect(err).toInclude("endpoint 'ping' is not part of the HTTP API");
return done();
}
}
});
});
it('normal access works', function(done) {
return http_message_api_v1({
event: 'create_project',
database: api.db,
compute_server: api.compute_server,
api_key: api.api_key,
ip_address: '2.3.4.5',
logger: api.logger,
body: {},
cb: function(err, resp) {
winston.info(err, resp);
expect(resp.event).toBe('project_created');
expect(Object.keys(resp)).toInclude('project_id');
return done(err);
}
});
});
it('blocks a wrong api key from creating a project', function(done) {
var fake_key;
fake_key = 'sk_173nsmeje32';
return http_message_api_v1({
event: 'create_project',
database: api.db,
compute_server: api.compute_server,
api_key: fake_key,
ip_address: '3.4.5.6',
logger: api.logger,
body: {
start: false
},
cb: function(err, resp) {
winston.info(err, resp);
if (err == null) {
return done('there was no error');
} else {
expect(err).toInclude('No account found');
expect(resp).toBe(void 0);
return done();
}
}
});
});
it('blocks missing api key from creating a project', function(done) {
var fake_key;
fake_key = 'sk_173nsmeje32';
return http_message_api_v1({
event: 'create_project',
database: api.db,
compute_server: api.compute_server,
api_key: '',
ip_address: '3.4.5.6',
logger: api.logger,
body: {
start: false
},
cb: function(err, resp) {
winston.info(err, resp);
if (err == null) {
return done('there was no error');
} else {
expect(err).toInclude('No account found');
expect(resp).toBe(void 0);
return done();
}
}
});
});
return it('blocks banned users', function(done) {
return async.series([
function(cb) {
return api.db.ban_user({
account_id: api.account_id,
cb: function(err) {
return cb(err);
}
});
},
function(cb) {
return http_message_api_v1({
event: 'create_project',
database: api.db,
compute_server: api.compute_server,
api_key: api.api_key,
ip_address: '7.8.9.10',
logger: api.logger,
body: {},
cb: function(err,
resp) {
winston.info(err,
resp);
if (err != null) {
expect(err).toInclude('BANNED');
return cb();
} else {
return cb('no banning error');
}
}
});
}
], function(err, resp) {
winston.info(err, resp);
return done(err);
});
});
});
}).call(this);
//# sourceMappingURL=apikey.js.map