diff --git a/packages/xpub-faraday-server/src/AuthorBackend.js b/packages/xpub-faraday-server/src/AuthorBackend.js index f6b6d8908f582f55316e5cf2c0f33ceb006a679b..f17cc851d5783d453c70dc653d1503b016c9cc84 100644 --- a/packages/xpub-faraday-server/src/AuthorBackend.js +++ b/packages/xpub-faraday-server/src/AuthorBackend.js @@ -63,9 +63,6 @@ const AuthorBackend = app => { let newUser = new app.locals.models.User(userBody) newUser = await newUser.save() fragment.owners.push(newUser.id) - } else { - res.status(e.status).json(e) - return } } } diff --git a/packages/xpub-faraday-server/src/AuthorBackend.test.js b/packages/xpub-faraday-server/src/AuthorBackend.test.js index d381356d44d7e72d33ad3e151694827a83a3235c..c5e73107ac12cd4918a24b6aedd0eb726a1c9e0d 100644 --- a/packages/xpub-faraday-server/src/AuthorBackend.test.js +++ b/packages/xpub-faraday-server/src/AuthorBackend.test.js @@ -10,15 +10,15 @@ const passport = require('passport') const BearerStrategy = require('passport-http-bearer').Strategy const cloneDeep = require('lodash/cloneDeep') -function makeApp(fragment, user, existingUser) { +function makeApp(fragment, standardUser, existingUser) { const app = express() app.use(bodyParser.json()) - // Passport strategies + app.use(passport.initialize()) passport.use( 'bearer', new BearerStrategy((token, done) => - done(null, fixtures.user, { scope: 'all' }), + done(null, fixtures.users.standardUser, { scope: 'all' }), ), ) @@ -32,18 +32,7 @@ function makeApp(fragment, user, existingUser) { : Promise.resolve(fragment), ), }, - User: { - find: jest.fn( - () => - user instanceof Error ? Promise.reject(user) : Promise.resolve(user), - ), - findByEmail: jest.fn( - () => - existingUser instanceof Error - ? Promise.reject(existingUser) - : Promise.resolve(existingUser), - ), - }, + User: {}, } function UserMock(properties) { this.type = 'user' @@ -54,7 +43,9 @@ function makeApp(fragment, user, existingUser) { UserMock.find = jest.fn( () => - user instanceof Error ? Promise.reject(user) : Promise.resolve(user), + standardUser instanceof Error + ? Promise.reject(standardUser) + : Promise.resolve(standardUser), ) UserMock.findByEmail = jest.fn( () => @@ -85,7 +76,7 @@ describe('Author Backend API', () => { return makeApp(error) .post('/api/fragments/123/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.author) + .send(testFixtures.authors.standardAuthor) .expect(404, '{"error":"Fragment not found"}') }) @@ -98,63 +89,74 @@ describe('Author Backend API', () => { return makeApp(error) .post('/api/fragments/123/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.invalidAuthor) + .send(testFixtures.authors.invalidAuthor) .expect(404, '{"error":"firstName is required"}') }) it('should return an error if an author already exists with the same email', () => - makeApp(testFixtures.fragment) + makeApp(testFixtures.fragments.standardFragment) .post('/api/fragments/123-valid-id/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.author) + .send(testFixtures.authors.standardAuthor) .expect(400, '{"error":"Author with the same email already exists"}')) it('should return an error if there already is a submitting author', () => - makeApp(testFixtures.fragment) + makeApp(testFixtures.fragments.standardFragment) .post('/api/fragments/123-valid-id/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.newSubmittingAuthor) + .send(testFixtures.authors.newSubmittingAuthor) .expect(400, '{"error":"There can only be one sumbitting author"}')) it('should return success when saving a new author', () => - makeApp(testFixtures.fragment, testFixtures.user) + makeApp( + testFixtures.fragments.standardFragment, + testFixtures.users.standardUser, + ) .post('/api/fragments/123-valid-id/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.newAuthor) + .send(testFixtures.authors.newAuthor) .expect(200, '') - .then(() => expect(testFixtures.fragment.save).toHaveBeenCalled())) + .then(() => + expect(testFixtures.fragments.standardFragment.save).toHaveBeenCalled(), + )) it('should return success when the admin adds a submitting author and the author already has a corresponding user account', () => makeApp( - testFixtures.adminFragment, - testFixtures.admin, - testFixtures.existingUser, + testFixtures.fragments.adminFragment, + testFixtures.users.admin, + testFixtures.users.existingUser, ) .post('/api/fragments/123-valid-id/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.author) + .send(testFixtures.authors.standardAuthor) .expect(200, '') .then(() => { - expect(testFixtures.adminFragment.save).toHaveBeenCalled() - expect(testFixtures.adminFragment.owners.length).toBeGreaterThan(0) - expect(testFixtures.adminFragment.owners[0]).toBe('123987') + expect(testFixtures.fragments.adminFragment.save).toHaveBeenCalled() + expect( + testFixtures.fragments.adminFragment.owners.length, + ).toBeGreaterThan(0) + expect(testFixtures.fragments.adminFragment.owners[0]).toBe('123987') })) it('should return success when the admin adds a submitting author and creates a corresponding user account', () => { const error = new Error() error.name = 'NotFoundError' error.status = 404 - - // console.log(testFixtures.adminFragment) - return makeApp(testFixtures.adminFragment, testFixtures.admin, error) + return makeApp( + testFixtures.fragments.adminFragment, + testFixtures.users.admin, + error, + ) .post('/api/fragments/123-valid-id/authors') .set('Authorization', 'Bearer 123') - .send(testFixtures.author) + .send(testFixtures.authors.standardAuthor) .expect(200, '') .then(() => { - expect(testFixtures.adminFragment.save).toHaveBeenCalled() - expect(testFixtures.adminFragment.owners.length).toBeGreaterThan(0) - expect(testFixtures.adminFragment.owners[0]).toBe('111222') + expect(testFixtures.fragments.adminFragment.save).toHaveBeenCalled() + expect( + testFixtures.fragments.adminFragment.owners.length, + ).toBeGreaterThan(0) + expect(testFixtures.fragments.adminFragment.owners[0]).toBe('111222') }) }) }) diff --git a/packages/xpub-faraday-server/src/fixtures/authors.js b/packages/xpub-faraday-server/src/fixtures/authors.js new file mode 100644 index 0000000000000000000000000000000000000000..16f8d33738f14ad14e18079c86ebe60318d29f4f --- /dev/null +++ b/packages/xpub-faraday-server/src/fixtures/authors.js @@ -0,0 +1,48 @@ +const authors = { + standardAuthor: { + firstName: 'Andrew', + middleName: '', + lastName: 'Smith', + email: 'email@email.com', + affiliation: 'University', + country: '', + isCorresponding: false, + isSubmitting: true, + id: '123', + }, + newAuthor: { + firstName: 'Robert', + middleName: '', + lastName: 'Smith', + email: 'email_robert@email.com', + affiliation: 'University', + country: '', + isCorresponding: true, + isSubmitting: false, + id: '456', + }, + invalidAuthor: { + firstName: '', + middleName: '', + lastName: 'Jones', + email: 'email2@email.com', + affiliation: 'University', + country: '', + isCorresponding: false, + isSubmitting: false, + id: '768', + }, + newSubmittingAuthor: { + firstName: 'Andrew', + middleName: '', + lastName: 'Smith', + email: 'email3@email.com', + affiliation: 'University', + country: '', + isCorresponding: false, + isSubmitting: true, + id: '879', + }, +} + +module.exports = authors diff --git a/packages/xpub-faraday-server/src/fixtures/fixtures.js b/packages/xpub-faraday-server/src/fixtures/fixtures.js index 80759aaa41e0ce2ecfb6b248d91123bac079d164..2d96a7abd59a92428a0b7c8e5fb517d0e536f58d 100644 --- a/packages/xpub-faraday-server/src/fixtures/fixtures.js +++ b/packages/xpub-faraday-server/src/fixtures/fixtures.js @@ -1,103 +1,9 @@ -const author = { - firstName: 'Andrew', - middleName: '', - lastName: 'Smith', - email: 'email@email.com', - affiliation: 'University', - country: '', - isCorresponding: false, - isSubmitting: true, - id: '123', -} - -const newAuthor = { - firstName: 'Robert', - middleName: '', - lastName: 'Smith', - email: 'email_robert@email.com', - affiliation: 'University', - country: '', - isCorresponding: true, - isSubmitting: false, - id: '456', -} - -const invalidAuthor = { - firstName: '', - middleName: '', - lastName: 'Jones', - email: 'email2@email.com', - affiliation: 'University', - country: '', - isCorresponding: false, - isSubmitting: false, - id: '768', -} - -const newSubmittingAuthor = { - firstName: 'Andrew', - middleName: '', - lastName: 'Smith', - email: 'email3@email.com', - affiliation: 'University', - country: '', - isCorresponding: false, - isSubmitting: true, - id: '879', -} - -const fragment = { - type: 'fragment', - fragmentType: 'blogpost', - title: 'Just your regular blogpost', - source: '<blog></blog>', - presentation: '<p></p>', - authors: [author], - save: jest.fn(), -} - -const adminFragment = { - type: 'fragment', - fragmentType: 'blogpost', - title: 'Just your admin blogpost', - source: '<blog></blog>', - presentation: '<p></p>', - authors: [], - save: jest.fn(), - owners: [], -} - -const user = { - type: 'user', - username: 'testuser', - email: 'test@example.com', - password: 'test', -} - -const admin = { - type: 'user', - username: 'admin', - email: 'admin@example.com', - password: 'test', - admin: true, -} - -const existingUser = { - type: 'user', - username: 'authoruser', - email: 'email@email.com', - password: 'test', - id: '123987', -} +const authors = require('./authors') +const fragments = require('./fragments') +const users = require('./users') module.exports = { - author, - invalidAuthor, - fragment, - newSubmittingAuthor, - newAuthor, - user, - admin, - adminFragment, - existingUser, + authors, + users, + fragments, } diff --git a/packages/xpub-faraday-server/src/fixtures/fragments.js b/packages/xpub-faraday-server/src/fixtures/fragments.js new file mode 100644 index 0000000000000000000000000000000000000000..7bf3f31de4a4326bb5c0f11560c44045b0869419 --- /dev/null +++ b/packages/xpub-faraday-server/src/fixtures/fragments.js @@ -0,0 +1,26 @@ +const authors = require('./authors') + +const fragments = { + standardFragment: { + type: 'fragment', + fragmentType: 'blogpost', + title: 'Just your regular blogpost', + source: '<blog></blog>', + presentation: '<p></p>', + authors: [authors.standardAuthor], + save: jest.fn(), + }, + + adminFragment: { + type: 'fragment', + fragmentType: 'blogpost', + title: 'Just your admin blogpost', + source: '<blog></blog>', + presentation: '<p></p>', + authors: [], + save: jest.fn(), + owners: [], + }, +} + +module.exports = fragments diff --git a/packages/xpub-faraday-server/src/fixtures/users.js b/packages/xpub-faraday-server/src/fixtures/users.js new file mode 100644 index 0000000000000000000000000000000000000000..25e63b0790dc2a648775df008b6ec5c98421f811 --- /dev/null +++ b/packages/xpub-faraday-server/src/fixtures/users.js @@ -0,0 +1,24 @@ +const users = { + standardUser: { + type: 'user', + username: 'testuser', + email: 'test@example.com', + password: 'test', + }, + admin: { + type: 'user', + username: 'admin', + email: 'admin@example.com', + password: 'test', + admin: true, + }, + existingUser: { + type: 'user', + username: 'authoruser', + email: 'email@email.com', + password: 'test', + id: '123987', + }, +} + +module.exports = users