diff --git a/backend/src/bootstrap/neo4j.js b/backend/src/bootstrap/neo4j.js index f9e3a997d..404e8a2c0 100644 --- a/backend/src/bootstrap/neo4j.js +++ b/backend/src/bootstrap/neo4j.js @@ -1,15 +1,17 @@ import { v1 as neo4j } from 'neo4j-driver' import CONFIG from './../config' -import setupNeode from './neode' +import Neode from 'neode' +import models from '../models' let driver +const defaultOptions = { + uri: CONFIG.NEO4J_URI, + username: CONFIG.NEO4J_USERNAME, + password: CONFIG.NEO4J_PASSWORD, +} export function getDriver(options = {}) { - const { - uri = CONFIG.NEO4J_URI, - username = CONFIG.NEO4J_USERNAME, - password = CONFIG.NEO4J_PASSWORD, - } = options + const { uri, username, password } = { ...defaultOptions, ...options } if (!driver) { driver = neo4j.driver(uri, neo4j.auth.basic(username, password)) } @@ -17,10 +19,11 @@ export function getDriver(options = {}) { } let neodeInstance -export function neode() { +export function getNeode(options = {}) { if (!neodeInstance) { - const { NEO4J_URI: uri, NEO4J_USERNAME: username, NEO4J_PASSWORD: password } = CONFIG - neodeInstance = setupNeode({ uri, username, password }) + const { uri, username, password } = { ...defaultOptions, ...options } + neodeInstance = new Neode(uri, username, password).with(models) + return neodeInstance } return neodeInstance } diff --git a/backend/src/bootstrap/neode.js b/backend/src/bootstrap/neode.js deleted file mode 100644 index 65a2074be..000000000 --- a/backend/src/bootstrap/neode.js +++ /dev/null @@ -1,9 +0,0 @@ -import Neode from 'neode' -import models from '../models' - -export default function setupNeode(options) { - const { uri, username, password } = options - const neodeInstance = new Neode(uri, username, password) - neodeInstance.with(models) - return neodeInstance -} diff --git a/backend/src/jwt/decode.spec.js b/backend/src/jwt/decode.spec.js index 9ea858304..7aa703d97 100644 --- a/backend/src/jwt/decode.spec.js +++ b/backend/src/jwt/decode.spec.js @@ -1,5 +1,5 @@ import Factory from '../seed/factories/index' -import { getDriver, neode as getNeode } from '../bootstrap/neo4j' +import { getDriver, getNeode } from '../bootstrap/neo4j' import decode from './decode' const factory = Factory() diff --git a/backend/src/middleware/hashtags/hashtagsMiddleware.spec.js b/backend/src/middleware/hashtags/hashtagsMiddleware.spec.js index 6e97f34c4..6a7be2543 100644 --- a/backend/src/middleware/hashtags/hashtagsMiddleware.spec.js +++ b/backend/src/middleware/hashtags/hashtagsMiddleware.spec.js @@ -1,7 +1,7 @@ import { gql } from '../../helpers/jest' import Factory from '../../seed/factories' import { createTestClient } from 'apollo-server-testing' -import { neode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' let server @@ -11,7 +11,7 @@ let hashtagingUser let authenticatedUser const factory = Factory() const driver = getDriver() -const instance = neode() +const neode = getNeode() const categoryIds = ['cat9'] const createPostMutation = gql` mutation($id: ID, $title: String!, $postContent: String!, $categoryIds: [ID]!) { @@ -36,7 +36,7 @@ beforeAll(() => { context: () => { return { user: authenticatedUser, - neode: instance, + neode: neode, driver, } }, @@ -48,14 +48,14 @@ beforeAll(() => { }) beforeEach(async () => { - hashtagingUser = await instance.create('User', { + hashtagingUser = await neode.create('User', { id: 'you', name: 'Al Capone', slug: 'al-capone', email: 'test@example.org', password: '1234', }) - await instance.create('Category', { + await neode.create('Category', { id: 'cat9', name: 'Democracy & Politics', icon: 'university', diff --git a/backend/src/middleware/notifications/notificationsMiddleware.spec.js b/backend/src/middleware/notifications/notificationsMiddleware.spec.js index 2122d009b..53fa80ce8 100644 --- a/backend/src/middleware/notifications/notificationsMiddleware.spec.js +++ b/backend/src/middleware/notifications/notificationsMiddleware.spec.js @@ -1,7 +1,7 @@ import { gql } from '../../helpers/jest' import Factory from '../../seed/factories' import { createTestClient } from 'apollo-server-testing' -import { neode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' let server @@ -11,7 +11,7 @@ let notifiedUser let authenticatedUser const factory = Factory() const driver = getDriver() -const instance = neode() +const neode = getNeode() const categoryIds = ['cat9'] const createPostMutation = gql` mutation($id: ID, $title: String!, $postContent: String!, $categoryIds: [ID]!) { @@ -44,7 +44,7 @@ beforeAll(() => { context: () => { return { user: authenticatedUser, - neode: instance, + neode: neode, driver, } }, @@ -56,14 +56,14 @@ beforeAll(() => { }) beforeEach(async () => { - notifiedUser = await instance.create('User', { + notifiedUser = await neode.create('User', { id: 'you', name: 'Al Capone', slug: 'al-capone', email: 'test@example.org', password: '1234', }) - await instance.create('Category', { + await neode.create('Category', { id: 'cat9', name: 'Democracy & Politics', icon: 'university', @@ -146,7 +146,7 @@ describe('notifications', () => { describe('commenter is not me', () => { beforeEach(async () => { commentContent = 'Commenters comment.' - commentAuthor = await instance.create('User', { + commentAuthor = await neode.create('User', { id: 'commentAuthor', name: 'Mrs Comment', slug: 'mrs-comment', @@ -228,7 +228,7 @@ describe('notifications', () => { }) beforeEach(async () => { - postAuthor = await instance.create('User', { + postAuthor = await neode.create('User', { id: 'postAuthor', name: 'Mrs Post', slug: 'mrs-post', @@ -432,7 +432,7 @@ describe('notifications', () => { beforeEach(async () => { commentContent = 'One mention about me with @al-capone.' - commentAuthor = await instance.create('User', { + commentAuthor = await neode.create('User', { id: 'commentAuthor', name: 'Mrs Comment', slug: 'mrs-comment', @@ -442,7 +442,7 @@ describe('notifications', () => { }) it('sends only one notification with reason mentioned_in_comment', async () => { - postAuthor = await instance.create('User', { + postAuthor = await neode.create('User', { id: 'MrPostAuthor', name: 'Mr Author', slug: 'mr-author', @@ -518,7 +518,7 @@ describe('notifications', () => { await postAuthor.relateTo(notifiedUser, 'blocked') commentContent = 'One mention about me with @al-capone.' - commentAuthor = await instance.create('User', { + commentAuthor = await neode.create('User', { id: 'commentAuthor', name: 'Mrs Comment', slug: 'mrs-comment', diff --git a/backend/src/middleware/orderByMiddleware.spec.js b/backend/src/middleware/orderByMiddleware.spec.js index a7b31da0a..129f3a8b4 100644 --- a/backend/src/middleware/orderByMiddleware.spec.js +++ b/backend/src/middleware/orderByMiddleware.spec.js @@ -1,6 +1,6 @@ import { gql } from '../helpers/jest' import Factory from '../seed/factories' -import { neode as getNeode, getDriver } from '../bootstrap/neo4j' +import { getNeode, getDriver } from '../bootstrap/neo4j' import { createTestClient } from 'apollo-server-testing' import createServer from '../server' diff --git a/backend/src/middleware/permissionsMiddleware.js b/backend/src/middleware/permissionsMiddleware.js index 8e4569a52..8f139f4c7 100644 --- a/backend/src/middleware/permissionsMiddleware.js +++ b/backend/src/middleware/permissionsMiddleware.js @@ -1,11 +1,11 @@ import { rule, shield, deny, allow, or } from 'graphql-shield' -import { neode } from '../bootstrap/neo4j' +import { getNeode } from '../bootstrap/neo4j' import CONFIG from '../config' const debug = !!CONFIG.DEBUG const allowExternalErrors = true -const instance = neode() +const neode = getNeode() const isAuthenticated = rule({ cache: 'contextual', @@ -36,7 +36,7 @@ const isMyOwn = rule({ const isMySocialMedia = rule({ cache: 'no_cache', })(async (_, args, { user }) => { - let socialMedia = await instance.find('SocialMedia', args.id) + let socialMedia = await neode.find('SocialMedia', args.id) socialMedia = await socialMedia.toJson() return socialMedia.ownedBy.node.id === user.id }) diff --git a/backend/src/middleware/permissionsMiddleware.spec.js b/backend/src/middleware/permissionsMiddleware.spec.js index 340766136..60aff961d 100644 --- a/backend/src/middleware/permissionsMiddleware.spec.js +++ b/backend/src/middleware/permissionsMiddleware.spec.js @@ -2,7 +2,7 @@ import { createTestClient } from 'apollo-server-testing' import createServer from '../server' import Factory from '../seed/factories' import { gql } from '../helpers/jest' -import { getDriver, neode as getNeode } from '../bootstrap/neo4j' +import { getDriver, getNeode } from '../bootstrap/neo4j' const factory = Factory() const instance = getNeode() diff --git a/backend/src/middleware/slugifyMiddleware.spec.js b/backend/src/middleware/slugifyMiddleware.spec.js index 02699f7b2..1c2e59317 100644 --- a/backend/src/middleware/slugifyMiddleware.spec.js +++ b/backend/src/middleware/slugifyMiddleware.spec.js @@ -1,6 +1,6 @@ import Factory from '../seed/factories' import { gql } from '../helpers/jest' -import { neode as getNeode, getDriver } from '../bootstrap/neo4j' +import { getNeode, getDriver } from '../bootstrap/neo4j' import createServer from '../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/middleware/softDelete/softDeleteMiddleware.spec.js b/backend/src/middleware/softDelete/softDeleteMiddleware.spec.js index 1c97cb874..b7c16dfd3 100644 --- a/backend/src/middleware/softDelete/softDeleteMiddleware.spec.js +++ b/backend/src/middleware/softDelete/softDeleteMiddleware.spec.js @@ -1,6 +1,6 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/middleware/validation/validationMiddleware.spec.js b/backend/src/middleware/validation/validationMiddleware.spec.js index 97bb6254b..c3d0512ad 100644 --- a/backend/src/middleware/validation/validationMiddleware.spec.js +++ b/backend/src/middleware/validation/validationMiddleware.spec.js @@ -1,6 +1,6 @@ import { gql } from '../../helpers/jest' import Factory from '../../seed/factories' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import { createTestClient } from 'apollo-server-testing' import createServer from '../../server' diff --git a/backend/src/models/User.spec.js b/backend/src/models/User.spec.js index 7c4a26c55..332e6a3ea 100644 --- a/backend/src/models/User.spec.js +++ b/backend/src/models/User.spec.js @@ -1,8 +1,8 @@ import Factory from '../seed/factories' -import { neode } from '../bootstrap/neo4j' +import { getNeode } from '../bootstrap/neo4j' const factory = Factory() -const instance = neode() +const neode = getNeode() afterEach(async () => { await factory.cleanDatabase() @@ -10,7 +10,7 @@ afterEach(async () => { describe('role', () => { it('defaults to `user`', async () => { - const user = await instance.create('User', { name: 'John' }) + const user = await neode.create('User', { name: 'John' }) await expect(user.toJson()).resolves.toEqual( expect.objectContaining({ role: 'user', @@ -21,7 +21,7 @@ describe('role', () => { describe('slug', () => { it('normalizes to lowercase letters', async () => { - const user = await instance.create('User', { slug: 'Matt' }) + const user = await neode.create('User', { slug: 'Matt' }) await expect(user.toJson()).resolves.toEqual( expect.objectContaining({ slug: 'matt', @@ -30,9 +30,9 @@ describe('slug', () => { }) it('must be unique', async done => { - await instance.create('User', { slug: 'Matt' }) + await neode.create('User', { slug: 'Matt' }) try { - await expect(instance.create('User', { slug: 'Matt' })).rejects.toThrow('already exists') + await expect(neode.create('User', { slug: 'Matt' })).rejects.toThrow('already exists') done() } catch (error) { throw new Error(` @@ -54,7 +54,7 @@ describe('slug', () => { describe('characters', () => { const createUser = attrs => { - return instance.create('User', attrs).then(user => user.toJson()) + return neode.create('User', attrs).then(user => user.toJson()) } it('-', async () => { diff --git a/backend/src/schema/resolvers/comments.spec.js b/backend/src/schema/resolvers/comments.spec.js index d2692aa8a..e2d20d1bd 100644 --- a/backend/src/schema/resolvers/comments.spec.js +++ b/backend/src/schema/resolvers/comments.spec.js @@ -2,7 +2,7 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' import { createTestClient } from 'apollo-server-testing' import createServer from '../../server' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' const driver = getDriver() const neode = getNeode() diff --git a/backend/src/schema/resolvers/donations.spec.js b/backend/src/schema/resolvers/donations.spec.js index 9e701059d..d8dd5db06 100644 --- a/backend/src/schema/resolvers/donations.spec.js +++ b/backend/src/schema/resolvers/donations.spec.js @@ -1,7 +1,7 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' let mutate, query, authenticatedUser, variables diff --git a/backend/src/schema/resolvers/emails.spec.js b/backend/src/schema/resolvers/emails.spec.js index 156007435..82ce43337 100644 --- a/backend/src/schema/resolvers/emails.spec.js +++ b/backend/src/schema/resolvers/emails.spec.js @@ -1,6 +1,6 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { getDriver, neode as getNeode } from '../../bootstrap/neo4j' +import { getDriver, getNeode } from '../../bootstrap/neo4j' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/schema/resolvers/follow.js b/backend/src/schema/resolvers/follow.js index ada417cff..0416fe3d2 100644 --- a/backend/src/schema/resolvers/follow.js +++ b/backend/src/schema/resolvers/follow.js @@ -1,4 +1,4 @@ -import { neode as getNeode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' const neode = getNeode() diff --git a/backend/src/schema/resolvers/follow.spec.js b/backend/src/schema/resolvers/follow.spec.js index 8402842e2..ff884666e 100644 --- a/backend/src/schema/resolvers/follow.spec.js +++ b/backend/src/schema/resolvers/follow.spec.js @@ -1,6 +1,6 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' -import { getDriver, neode as getNeode } from '../../bootstrap/neo4j' +import { getDriver, getNeode } from '../../bootstrap/neo4j' import createServer from '../../server' import { gql } from '../../helpers/jest' diff --git a/backend/src/schema/resolvers/helpers/Resolver.js b/backend/src/schema/resolvers/helpers/Resolver.js index 03c0d4176..b094231c0 100644 --- a/backend/src/schema/resolvers/helpers/Resolver.js +++ b/backend/src/schema/resolvers/helpers/Resolver.js @@ -1,4 +1,4 @@ -import { neode } from '../../../bootstrap/neo4j' +import { getNeode } from '../../../bootstrap/neo4j' export const undefinedToNullResolver = list => { const resolvers = {} @@ -11,7 +11,7 @@ export const undefinedToNullResolver = list => { } export default function Resolver(type, options = {}) { - const instance = neode() + const instance = getNeode() const { idAttribute = 'id', undefinedToNull = [], diff --git a/backend/src/schema/resolvers/locations.spec.js b/backend/src/schema/resolvers/locations.spec.js index 51dafcc2e..f4a846afd 100644 --- a/backend/src/schema/resolvers/locations.spec.js +++ b/backend/src/schema/resolvers/locations.spec.js @@ -1,6 +1,6 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/schema/resolvers/moderation.spec.js b/backend/src/schema/resolvers/moderation.spec.js index 5e280a6f5..f76cbdf46 100644 --- a/backend/src/schema/resolvers/moderation.spec.js +++ b/backend/src/schema/resolvers/moderation.spec.js @@ -1,7 +1,7 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' const factory = Factory() diff --git a/backend/src/schema/resolvers/passwordReset.spec.js b/backend/src/schema/resolvers/passwordReset.spec.js index 97aa6a020..a1968d288 100644 --- a/backend/src/schema/resolvers/passwordReset.spec.js +++ b/backend/src/schema/resolvers/passwordReset.spec.js @@ -1,6 +1,6 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createPasswordReset from './helpers/createPasswordReset' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/schema/resolvers/posts.spec.js b/backend/src/schema/resolvers/posts.spec.js index 98475b182..752602fd9 100644 --- a/backend/src/schema/resolvers/posts.spec.js +++ b/backend/src/schema/resolvers/posts.spec.js @@ -1,7 +1,7 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' const driver = getDriver() diff --git a/backend/src/schema/resolvers/registration.js b/backend/src/schema/resolvers/registration.js index 206c8db74..9d5d5f09a 100644 --- a/backend/src/schema/resolvers/registration.js +++ b/backend/src/schema/resolvers/registration.js @@ -1,12 +1,12 @@ import { UserInputError } from 'apollo-server' -import { neode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' import fileUpload from './fileUpload' import encryptPassword from '../../helpers/encryptPassword' import generateNonce from './helpers/generateNonce' import existingEmailAddress from './helpers/existingEmailAddress' import normalizeEmail from './helpers/normalizeEmail' -const instance = neode() +const neode = getNeode() export default { Mutation: { @@ -16,7 +16,7 @@ export default { let emailAddress = await existingEmailAddress({ args, context }) if (emailAddress) return emailAddress try { - emailAddress = await instance.create('EmailAddress', args) + emailAddress = await neode.create('EmailAddress', args) return emailAddress.toJson() } catch (e) { throw new UserInputError(e.message) @@ -32,7 +32,7 @@ export default { let { nonce, email } = args email = normalizeEmail(email) - const result = await instance.cypher( + const result = await neode.cypher( ` MATCH(email:EmailAddress {nonce: {nonce}, email: {email}}) WHERE NOT (email)-[:BELONGS_TO]->() @@ -40,12 +40,12 @@ export default { `, { nonce, email }, ) - const emailAddress = await instance.hydrateFirst(result, 'email', instance.model('Email')) + const emailAddress = await neode.hydrateFirst(result, 'email', neode.model('Email')) if (!emailAddress) throw new UserInputError('Invalid email or nonce') args = await fileUpload(args, { file: 'avatarUpload', url: 'avatar' }) args = await encryptPassword(args) try { - const user = await instance.create('User', args) + const user = await neode.create('User', args) await Promise.all([ user.relateTo(emailAddress, 'primaryEmail'), emailAddress.relateTo(user, 'belongsTo'), diff --git a/backend/src/schema/resolvers/registration.spec.js b/backend/src/schema/resolvers/registration.spec.js index 35b16b9bb..8f3a7ac39 100644 --- a/backend/src/schema/resolvers/registration.spec.js +++ b/backend/src/schema/resolvers/registration.spec.js @@ -1,6 +1,6 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { getDriver, neode as getNeode } from '../../bootstrap/neo4j' +import { getDriver, getNeode } from '../../bootstrap/neo4j' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/schema/resolvers/reports.spec.js b/backend/src/schema/resolvers/reports.spec.js index c0a9d3afb..cd8b61985 100644 --- a/backend/src/schema/resolvers/reports.spec.js +++ b/backend/src/schema/resolvers/reports.spec.js @@ -2,7 +2,7 @@ import { createTestClient } from 'apollo-server-testing' import createServer from '../.././server' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { getDriver, neode as getNeode } from '../../bootstrap/neo4j' +import { getDriver, getNeode } from '../../bootstrap/neo4j' const factory = Factory() const instance = getNeode() diff --git a/backend/src/schema/resolvers/rewards.js b/backend/src/schema/resolvers/rewards.js index 74c7860e4..4d5d62aea 100644 --- a/backend/src/schema/resolvers/rewards.js +++ b/backend/src/schema/resolvers/rewards.js @@ -1,11 +1,11 @@ -import { neode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' import { UserInputError } from 'apollo-server' -const instance = neode() +const neode = getNeode() const getUserAndBadge = async ({ badgeKey, userId }) => { - const user = await instance.first('User', 'id', userId) - const badge = await instance.first('Badge', 'id', badgeKey) + const user = await neode.first('User', 'id', userId) + const badge = await neode.first('Badge', 'id', badgeKey) if (!user) throw new UserInputError("Couldn't find a user with that id") if (!badge) throw new UserInputError("Couldn't find a badge with that id") return { user, badge } diff --git a/backend/src/schema/resolvers/rewards.spec.js b/backend/src/schema/resolvers/rewards.spec.js index 2dcdd5b53..e6f67ecab 100644 --- a/backend/src/schema/resolvers/rewards.spec.js +++ b/backend/src/schema/resolvers/rewards.spec.js @@ -1,7 +1,7 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' const factory = Factory() diff --git a/backend/src/schema/resolvers/shout.spec.js b/backend/src/schema/resolvers/shout.spec.js index f39e4d137..e747946aa 100644 --- a/backend/src/schema/resolvers/shout.spec.js +++ b/backend/src/schema/resolvers/shout.spec.js @@ -1,7 +1,7 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' let mutate, query, authenticatedUser, variables diff --git a/backend/src/schema/resolvers/socialMedia.js b/backend/src/schema/resolvers/socialMedia.js index 49aa6788d..c206778e5 100644 --- a/backend/src/schema/resolvers/socialMedia.js +++ b/backend/src/schema/resolvers/socialMedia.js @@ -1,14 +1,14 @@ -import { neode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' import Resolver from './helpers/Resolver' -const instance = neode() +const neode = getNeode() export default { Mutation: { CreateSocialMedia: async (object, params, context, resolveInfo) => { const [user, socialMedia] = await Promise.all([ - instance.find('User', context.user.id), - instance.create('SocialMedia', params), + neode.find('User', context.user.id), + neode.create('SocialMedia', params), ]) await socialMedia.relateTo(user, 'ownedBy') const response = await socialMedia.toJson() @@ -16,14 +16,14 @@ export default { return response }, UpdateSocialMedia: async (object, params, context, resolveInfo) => { - const socialMedia = await instance.find('SocialMedia', params.id) + const socialMedia = await neode.find('SocialMedia', params.id) await socialMedia.update({ url: params.url }) const response = await socialMedia.toJson() return response }, DeleteSocialMedia: async (object, { id }, context, resolveInfo) => { - const socialMedia = await instance.find('SocialMedia', id) + const socialMedia = await neode.find('SocialMedia', id) if (!socialMedia) return null await socialMedia.delete() return socialMedia.toJson() diff --git a/backend/src/schema/resolvers/socialMedia.spec.js b/backend/src/schema/resolvers/socialMedia.spec.js index 092139747..8f6d91d43 100644 --- a/backend/src/schema/resolvers/socialMedia.spec.js +++ b/backend/src/schema/resolvers/socialMedia.spec.js @@ -2,11 +2,11 @@ import { createTestClient } from 'apollo-server-testing' import createServer from '../../server' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' const driver = getDriver() const factory = Factory() -const instance = neode() +const neode = getNeode() describe('SocialMedia', () => { let socialMediaAction, someUser, ownerNode, owner @@ -27,15 +27,15 @@ describe('SocialMedia', () => { const newUrl = 'https://twitter.com/bullerby' const setUpSocialMedia = async () => { - const socialMediaNode = await instance.create('SocialMedia', { url }) + const socialMediaNode = await neode.create('SocialMedia', { url }) await socialMediaNode.relateTo(ownerNode, 'ownedBy') return socialMediaNode.toJson() } beforeEach(async () => { - const someUserNode = await instance.create('User', userParams) + const someUserNode = await neode.create('User', userParams) someUser = await someUserNode.toJson() - ownerNode = await instance.create('User', ownerParams) + ownerNode = await neode.create('User', ownerParams) owner = await ownerNode.toJson() socialMediaAction = async (user, mutation, variables) => { diff --git a/backend/src/schema/resolvers/statistics.spec.js b/backend/src/schema/resolvers/statistics.spec.js index 7ffa8ebd0..48baf00cd 100644 --- a/backend/src/schema/resolvers/statistics.spec.js +++ b/backend/src/schema/resolvers/statistics.spec.js @@ -1,7 +1,7 @@ import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' let query, authenticatedUser diff --git a/backend/src/schema/resolvers/user_management.js b/backend/src/schema/resolvers/user_management.js index 4c4c3fc90..d5c6cd5ad 100644 --- a/backend/src/schema/resolvers/user_management.js +++ b/backend/src/schema/resolvers/user_management.js @@ -1,10 +1,10 @@ import encode from '../../jwt/encode' import bcrypt from 'bcryptjs' import { AuthenticationError } from 'apollo-server' -import { neode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' import normalizeEmail from './helpers/normalizeEmail' -const instance = neode() +const neode = getNeode() export default { Query: { @@ -13,7 +13,7 @@ export default { }, currentUser: async (object, params, ctx, resolveInfo) => { if (!ctx.user) return null - const user = await instance.find('User', ctx.user.id) + const user = await neode.find('User', ctx.user.id) return user.toJson() }, }, @@ -53,7 +53,7 @@ export default { } }, changePassword: async (_, { oldPassword, newPassword }, { driver, user }) => { - const currentUser = await instance.find('User', user.id) + const currentUser = await neode.find('User', user.id) const encryptedPassword = currentUser.get('encryptedPassword') if (!(await bcrypt.compareSync(oldPassword, encryptedPassword))) { diff --git a/backend/src/schema/resolvers/user_management.spec.js b/backend/src/schema/resolvers/user_management.spec.js index e67b90c8d..3527e5dc2 100644 --- a/backend/src/schema/resolvers/user_management.spec.js +++ b/backend/src/schema/resolvers/user_management.spec.js @@ -5,7 +5,7 @@ import { gql } from '../../helpers/jest' import { createTestClient } from 'apollo-server-testing' import createServer, { context } from '../../server' import encode from '../../jwt/encode' -import { neode as getNeode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' const factory = Factory() const neode = getNeode() diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js index c44e3f44b..d8d5fbb73 100644 --- a/backend/src/schema/resolvers/users.js +++ b/backend/src/schema/resolvers/users.js @@ -1,10 +1,10 @@ import { neo4jgraphql } from 'neo4j-graphql-js' import fileUpload from './fileUpload' -import { neode } from '../../bootstrap/neo4j' +import { getNeode } from '../../bootstrap/neo4j' import { UserInputError, ForbiddenError } from 'apollo-server' import Resolver from './helpers/Resolver' -const instance = neode() +const neode = getNeode() export const getBlockedUsers = async context => { const { neode } = context @@ -73,7 +73,7 @@ export default { block: async (object, args, context, resolveInfo) => { const { user: currentUser } = context if (currentUser.id === args.id) return null - await instance.cypher( + await neode.cypher( ` MATCH(u:User {id: $currentUser.id})-[r:FOLLOWS]->(b:User {id: $args.id}) DELETE r @@ -81,8 +81,8 @@ export default { { currentUser, args }, ) const [user, blockedUser] = await Promise.all([ - instance.find('User', currentUser.id), - instance.find('User', args.id), + neode.find('User', currentUser.id), + neode.find('User', args.id), ]) await user.relateTo(blockedUser, 'blocked') return blockedUser.toJson() @@ -90,14 +90,14 @@ export default { unblock: async (object, args, context, resolveInfo) => { const { user: currentUser } = context if (currentUser.id === args.id) return null - await instance.cypher( + await neode.cypher( ` MATCH(u:User {id: $currentUser.id})-[r:BLOCKED]->(b:User {id: $args.id}) DELETE r `, { currentUser, args }, ) - const blockedUser = await instance.find('User', args.id) + const blockedUser = await neode.find('User', args.id) return blockedUser.toJson() }, UpdateUser: async (object, args, context, resolveInfo) => { @@ -111,7 +111,7 @@ export default { } args = await fileUpload(args, { file: 'avatarUpload', url: 'avatar' }) try { - const user = await instance.find('User', args.id) + const user = await neode.find('User', args.id) if (!user) return null await user.update({ ...args, updatedAt: new Date().toISOString() }) return user.toJson() @@ -173,7 +173,7 @@ export default { if (typeof parent.email !== 'undefined') return parent.email const { id } = parent const statement = `MATCH(u:User {id: {id}})-[:PRIMARY_EMAIL]->(e:EmailAddress) RETURN e` - const result = await instance.cypher(statement, { id }) + const result = await neode.cypher(statement, { id }) const [{ email }] = result.records.map(r => r.get('e').properties) return email }, diff --git a/backend/src/schema/resolvers/users.spec.js b/backend/src/schema/resolvers/users.spec.js index 483c70214..26e977a31 100644 --- a/backend/src/schema/resolvers/users.spec.js +++ b/backend/src/schema/resolvers/users.spec.js @@ -1,6 +1,6 @@ import Factory from '../../seed/factories' import { gql } from '../../helpers/jest' -import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../bootstrap/neo4j' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' diff --git a/backend/src/schema/resolvers/users/blockedUsers.spec.js b/backend/src/schema/resolvers/users/blockedUsers.spec.js index e0ab00448..6ceaf6a52 100644 --- a/backend/src/schema/resolvers/users/blockedUsers.spec.js +++ b/backend/src/schema/resolvers/users/blockedUsers.spec.js @@ -2,11 +2,11 @@ import { createTestClient } from 'apollo-server-testing' import createServer from '../../../server' import Factory from '../../../seed/factories' import { gql } from '../../../helpers/jest' -import { neode, getDriver } from '../../../bootstrap/neo4j' +import { getNeode, getDriver } from '../../../bootstrap/neo4j' const driver = getDriver() const factory = Factory() -const instance = neode() +const neode = getNeode() let currentUser let blockedUser @@ -20,7 +20,7 @@ beforeEach(() => { return { user: authenticatedUser, driver, - neode: instance, + neode: neode, cypherParams: { currentUserId: authenticatedUser ? authenticatedUser.id : null, }, @@ -55,11 +55,11 @@ describe('blockedUsers', () => { describe('authenticated and given a blocked user', () => { beforeEach(async () => { - currentUser = await instance.create('User', { + currentUser = await neode.create('User', { name: 'Current User', id: 'u1', }) - blockedUser = await instance.create('User', { + blockedUser = await neode.create('User', { name: 'Blocked User', id: 'u2', }) @@ -113,7 +113,7 @@ describe('block', () => { describe('authenticated', () => { beforeEach(async () => { - currentUser = await instance.create('User', { + currentUser = await neode.create('User', { name: 'Current User', id: 'u1', }) @@ -138,7 +138,7 @@ describe('block', () => { describe('given a to-be-blocked user', () => { beforeEach(async () => { - blockedUser = await instance.create('User', { + blockedUser = await neode.create('User', { name: 'Blocked User', id: 'u2', }) @@ -181,11 +181,11 @@ describe('block', () => { let postQuery beforeEach(async () => { - const post1 = await instance.create('Post', { + const post1 = await neode.create('Post', { id: 'p12', title: 'A post written by the current user', }) - const post2 = await instance.create('Post', { + const post2 = await neode.create('Post', { id: 'p23', title: 'A post written by the blocked user', }) @@ -323,7 +323,7 @@ describe('unblock', () => { describe('authenticated', () => { beforeEach(async () => { - currentUser = await instance.create('User', { + currentUser = await neode.create('User', { name: 'Current User', id: 'u1', }) @@ -348,7 +348,7 @@ describe('unblock', () => { describe('given another user', () => { beforeEach(async () => { - blockedUser = await instance.create('User', { + blockedUser = await neode.create('User', { name: 'Blocked User', id: 'u2', }) diff --git a/backend/src/seed/factories/index.js b/backend/src/seed/factories/index.js index 441fe47d5..10db5cc03 100644 --- a/backend/src/seed/factories/index.js +++ b/backend/src/seed/factories/index.js @@ -1,4 +1,4 @@ -import { getDriver, neode } from '../../bootstrap/neo4j' +import { getDriver, getNeode } from '../../bootstrap/neo4j' import createBadge from './badges.js' import createUser from './users.js' import createPost from './posts.js' @@ -39,7 +39,7 @@ export const cleanDatabase = async (options = {}) => { } export default function Factory(options = {}) { - const { neo4jDriver = getDriver(), neodeInstance = neode() } = options + const { neo4jDriver = getDriver(), neodeInstance = getNeode() } = options const result = { neo4jDriver, diff --git a/backend/src/seed/seed-db.js b/backend/src/seed/seed-db.js index d059400a4..75c68c3e8 100644 --- a/backend/src/seed/seed-db.js +++ b/backend/src/seed/seed-db.js @@ -3,7 +3,7 @@ import sample from 'lodash/sample' import { createTestClient } from 'apollo-server-testing' import createServer from '../server' import Factory from './factories' -import { neode as getNeode, getDriver } from '../bootstrap/neo4j' +import { getNeode, getDriver } from '../bootstrap/neo4j' import { gql } from '../helpers/jest' const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] diff --git a/backend/src/server.js b/backend/src/server.js index 053a3e4b3..91b9a13aa 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -3,7 +3,7 @@ import helmet from 'helmet' import { ApolloServer } from 'apollo-server-express' import CONFIG, { requiredConfigs } from './config' import middleware from './middleware' -import { neode as getNeode, getDriver } from './bootstrap/neo4j' +import { getNeode, getDriver } from './bootstrap/neo4j' import decode from './jwt/decode' import schema from './schema' import webfinger from './activitypub/routes/webfinger' diff --git a/cypress/support/factories.js b/cypress/support/factories.js index da67debd5..20c4bbdc8 100644 --- a/cypress/support/factories.js +++ b/cypress/support/factories.js @@ -1,5 +1,5 @@ import Factory from '../../backend/src/seed/factories' -import { getDriver, neode as getNeode } from '../../backend/src/bootstrap/neo4j' +import { getDriver, getNeode } from '../../backend/src/bootstrap/neo4j' import setupNeode from '../../backend/src/bootstrap/neode' import neode from 'neode'