UNPKG

smc-hub

Version:

CoCalc: Backend webserver component

161 lines (150 loc) 4.59 kB
// 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