Files
speckle-server/modules/core/tests/generic.spec.js
T
Dimitrie Stefanescu 4d6e899750 feat(api): cleaning up in progress
services for objects, branches, and commits; fixed some tests, scaffolded graphql api & resolvers
2020-07-19 13:39:50 +01:00

98 lines
2.7 KiB
JavaScript

/* istanbul ignore file */
const chai = require( 'chai' )
const assert = require( 'assert' )
const appRoot = require( 'app-root-path' )
const { init } = require( `${appRoot}/app` )
const knex = require( `${appRoot}/db/knex` )
const expect = chai.expect
const { validateServerRole, contextApiTokenHelper, validateScopes, authorizeResolver } = require( '../../shared' )
describe( 'Generic AuthN & AuthZ controller tests', ( ) => {
before( async ( ) => {
await knex.migrate.rollback( )
await knex.migrate.latest( )
} )
after( async ( ) => {
await knex.migrate.rollback( )
} )
it( 'Validate scopes', async ( ) => {
try {
await validateScopes( )
assert.fail( 'Should have thrown an error with invalid input' )
} catch ( e ) {
//
}
try {
await validateScopes( [ 'a' ], 'b' )
assert.fail( 'Should have thrown an error' )
} catch ( e ) {
//
}
await validateScopes( [ 'a', 'b' ], 'b' ) // should pass
} )
it( 'Should create proper context', async ( ) => {
let res = await contextApiTokenHelper( { req: { headers: { authorization: 'Bearer BS' } } } )
expect( res.auth ).to.equal( false )
let res2 = await contextApiTokenHelper( { req: { headers: { authorization: null } } } )
expect( res2.auth ).to.equal( false )
let res3 = await contextApiTokenHelper( { req: { headers: { authorization: undefined } } } )
expect( res3.auth ).to.equal( false )
} )
it( 'Should validate server role', async ( ) => {
try {
let test = await validateServerRole( { auth: true, role: 'server:user' }, 'server:admin' )
assert.fail( )
} catch ( e ) {
assert.equal( 'the void', 'the void' )
}
try {
let test = await validateServerRole( { auth: true, role: 'HACZOR' }, '133TCR3w' )
assert.fail( 'Invalid roles should be refused' )
} catch ( e ) {
assert.equal( 'stares', 'stares' )
}
try {
let test = await validateServerRole( { auth: true, role: 'server:admin' }, '133TCR3w' )
assert.fail( 'Invalid roles should be refused' )
} catch ( e ) {
assert.equal( 'and waits dreaming', 'and waits dreaming' )
}
let test = await validateServerRole( { auth: true, role: 'server:admin' }, 'server:user' )
expect( test ).to.equal( true )
} )
it( 'Resolver Authorization Should fail nicely when roles & resources are wanky', async ( ) => {
try {
let res = await authorizeResolver( null, 'foo', 'bar' )
assert.fail( 'resolver authorization should have thrown' )
} catch ( e ) {
}
try {
let res = await authorizeResolver( 'foo', 'bar', 'streams:read' )
assert.fail( 'resolver authorization should have thrown' )
} catch ( e ) {
}
} )
} )