UNPKG

smc-hub

Version:

CoCalc: Backend webserver component

133 lines (113 loc) 4.45 kB
######################################################################### # 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 ### 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 -- ', -> @timeout(5000) before(setup) after(teardown) beforeEach(reset) it 'ping endpoint is disabled', (done) -> 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 : (err, resp) -> winston.info(err, resp) if not err? done('there was no error, but there should!') else expect(err).toInclude("endpoint 'ping' is not part of the HTTP API") done() it 'normal access works', (done) -> 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 : (err, resp) -> winston.info(err, resp) expect(resp.event).toBe('project_created') expect(Object.keys(resp)).toInclude('project_id') done(err) it 'blocks a wrong api key from creating a project', (done) -> fake_key = 'sk_173nsmeje32' 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 : (err, resp) -> winston.info(err, resp) if not err? done('there was no error') else expect(err).toInclude('No account found') expect(resp).toBe(undefined) done() it 'blocks missing api key from creating a project', (done) -> fake_key = 'sk_173nsmeje32' 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 : (err, resp) -> winston.info(err, resp) if not err? done('there was no error') else expect(err).toInclude('No account found') expect(resp).toBe(undefined) done() it 'blocks banned users', (done) -> async.series([ (cb) -> api.db.ban_user account_id : api.account_id cb : (err) -> cb(err) (cb) -> 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 : (err, resp) -> winston.info(err, resp) if err? expect(err).toInclude('BANNED') cb() else cb('no banning error') ], (err, resp) -> winston.info(err, resp) done(err) )