diff --git a/.eslintrc.json b/.eslintrc.json index 9b4e6f9a52..afaeee7f71 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,6 +7,7 @@ "parserOptions": { "ecmaVersion": 11 }, + "ignorePatterns": [ "modules/*/tests/*", "node_modules/*", "frontend/*"], "rules": { "arrow-spacing": [ 2, { "before": true, "after": true } ], "array-bracket-spacing": [ 2, "always" ], diff --git a/modules/core/graph/resolvers/streams.js b/modules/core/graph/resolvers/streams.js index a3e353f272..df53641edb 100644 --- a/modules/core/graph/resolvers/streams.js +++ b/modules/core/graph/resolvers/streams.js @@ -76,7 +76,7 @@ module.exports = { await validateScopes( context.scopes, 'streams:write' ) await authorizeResolver( context.userId, args.streamId, 'stream:owner' ) - if ( context.userId === args.userId ) throw new AuthorizationError( 'You cannot set roles for yourself.' ) + if ( context.userId === args.userId ) throw new Error( 'You cannot set roles for yourself.' ) return await grantPermissionsStream( { streamId: args.streamId, userId: args.userId, role: args.role.toLowerCase( ) || 'read' } ) }, diff --git a/modules/core/graph/schemas/branchesAndCommits.graphql b/modules/core/graph/schemas/branchesAndCommits.graphql index d549aa1fab..5fb953dd03 100644 --- a/modules/core/graph/schemas/branchesAndCommits.graphql +++ b/modules/core/graph/schemas/branchesAndCommits.graphql @@ -59,7 +59,7 @@ extend type Mutation { branchUpdate( branch: BranchUpdateInput! ): Boolean! branchDelete( branch: BranchDeleteInput! ): Boolean! commitCreate( commit: CommitCreateInput! ): String! - commitUpdate( commit: CommitUpdateInput! ): String! + commitUpdate( commit: CommitUpdateInput! ): Boolean! commitDelete( commit: CommitDeleteInput! ): Boolean! } diff --git a/modules/core/graph/schemas/streams.graphql b/modules/core/graph/schemas/streams.graphql index 5354d2fc73..570d69f511 100644 --- a/modules/core/graph/schemas/streams.graphql +++ b/modules/core/graph/schemas/streams.graphql @@ -45,11 +45,11 @@ extend type Mutation { """ streamDelete( id: String! ): Boolean! """ - Grants permissions to an user on a given stream. + Grants permissions to a user on a given stream. """ streamGrantPermission( streamId: String!, userId: String!, role: String! ): Boolean """ - Revokes the permissions of an user on a given stream. + Revokes the permissions of a user on a given stream. """ streamRevokePermission( streamId: String!, userId: String! ): Boolean diff --git a/modules/core/tests/rest.spec.js b/modules/core/tests/rest.spec.js index 3a0901785b..7fd7b43999 100644 --- a/modules/core/tests/rest.spec.js +++ b/modules/core/tests/rest.spec.js @@ -35,7 +35,7 @@ describe( `Upload/Download Routes`, ( ) => { expressApp = app userA.id = await createUser( userA ) - userA.token = `Bearer ${(await createPersonalAccessToken( userA.id, 'test token user A', [ 'streams:read', 'streams:write', 'users:read', 'users:email', 'tokens:write', 'tokens:read', 'profile:read', 'profile:email' ] ))}` + userA.token = `Bearer ${( await createPersonalAccessToken( userA.id, 'test token user A', [ 'streams:read', 'streams:write', 'users:read', 'users:email', 'tokens:write', 'tokens:read', 'profile:read', 'profile:email' ] ) )}` testStream.id = await createStream( { ...testStream, ownerId: userA.id } ) } ) diff --git a/modules/core/tests/users.spec.js b/modules/core/tests/users.spec.js index 79db677793..d41a73909f 100644 --- a/modules/core/tests/users.spec.js +++ b/modules/core/tests/users.spec.js @@ -92,7 +92,7 @@ describe( 'Actors & Tokens', ( ) => { let match = await validatePasssword( { email: actor.email, password: 'super-test-200' } ) expect( match ).to.equal( true ) - let match_wrong = await validatePasssword( { email: actor.email, password: 'super-test-2000' }) + let match_wrong = await validatePasssword( { email: actor.email, password: 'super-test-2000' } ) expect( match_wrong ).to.equal( false ) } ) diff --git a/modules/index.js b/modules/index.js index 2fe7433738..920a3b7c30 100644 --- a/modules/index.js +++ b/modules/index.js @@ -24,7 +24,7 @@ exports.init = async ( app ) => { } ) // Other modules preflight - moduleDirs.forEach(async dir => { + moduleDirs.forEach( async dir => { await require( dir ).init( app ) } ) diff --git a/readme.md b/readme.md index 2d8dafca16..89d2341e5f 100644 --- a/readme.md +++ b/readme.md @@ -9,33 +9,35 @@ The next iteration of the Speckle Server. ### Local debugging & testing -To debug, simply run `npm run dev`. To test, run `npm run test`. To run tests in interactive mode, run `npm run test-watch`. +To debug, simply run `npm run dev:server`. To test, run `npm run test:server`. To run tests in interactive mode, run `npm run test:server:watch`. -You will need to have a postgres instance running on the default settings, with two databases present, named `speckle2` and `speckle2_test`. +#### Requirements + +1. Duplicate and rename `.env-example` to `.env`. + +2. You will need to have a postgres instance running on the default settings, with two databases present, named `speckle2_dev` and `speckle2_test`. > For getting postgres running on osx, check out [postgres.app](https://postgresapp.com/), and the classic [pgadmin](https://www.pgadmin.org/download/pgadmin-4-macos/). -### How to commit to this repo -When pushing commits to this repo, please follow the following guidelines: +3. You will also need Redis installed. -1) Install [commitizen](https://www.npmjs.com/package/commitizen#commitizen-for-contributors) globally -3) When ready to commit, type in the commandline `git cz` & follow the prompts. +> For which you can use the [redis.app](https://jpadilla.github.io/redisapp/). -## Modules +### How to commit to this repo +When pushing commits to this repo, please follow the following guidelines: -The server dynamically loads individual 'modules' from each top level folder in `./modules`. It first loads the core modules, and thereafter others ("third party"). +- Install [commitizen](https://www.npmjs.com/package/commitizen#commitizen-for-contributors) globally (`npm i -g commitizen`). +- When ready to commit, type in the commandline `git cz` & follow the prompts. -### Loading +## Modules -Loading consists of two stages: -- **Preflight**: stage where a module can configure the behaviour of any shared middleware. -- **Initialisation**: final stage, where modules should hoist their routes on the core express application. +The server dynamically loads individual 'modules' from each top level folder in `./modules`. It first loads the core modules, and thereafter others. -Modules can create new and alter old database tables, if the knex migration files are present in a `migrations` subfolder (e.g., `./modules/your-module/migrations/my-new-table.js`). +Modules can create new and alter old database tables, if the knex migration files are present in a `migrations` subfolder (e.g., `./modules/your-module/migrations/my-new-table.js`). Make sure to add a date in front of your migration file. ### Structure -A module should contain in its root folder an index.js file that exposes an init function: +A module should contain in its root folder an index.js file that exposes an init function: ```js exports.init = ( app ) => { @@ -43,7 +45,7 @@ exports.init = ( app ) => { } ``` -Any database migration files should be stored and named accordingly in a `migrations` folder. Moreover, modules should include test files. These should be located in `tests`. Here's a sample structure: +Any database migration files should be stored and named accordingly in a `migrations` folder. Moreover, modules should include test files. These should be located in `tests`. Here's a sample structure: ``` @@ -62,7 +64,7 @@ Any database migration files should be stored and named accordingly in a `migrat ### GraphQl // TODO -### REST +### REST Depecrated.