mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2026-01-20 20:01:22 +00:00
Start writing a resolver for requestPasswordReset
This commit is contained in:
parent
f9d25828d5
commit
e44ed7d281
@ -147,6 +147,7 @@ const permissions = shield(
|
||||
CreateComment: isAuthenticated,
|
||||
DeleteComment: isAuthor,
|
||||
DeleteUser: isDeletingOwnAccount,
|
||||
requestPasswordReset: allow,
|
||||
},
|
||||
User: {
|
||||
email: isMyOwn,
|
||||
|
||||
10
backend/src/schema/resolvers/passwordReset.js
Normal file
10
backend/src/schema/resolvers/passwordReset.js
Normal file
@ -0,0 +1,10 @@
|
||||
export default {
|
||||
Mutation: {
|
||||
requestPasswordReset: async (_, { email }, { driver }) => {
|
||||
throw Error('Not Implemented')
|
||||
},
|
||||
resetPassword: async (_, { email, token, newPassword }, { driver }) => {
|
||||
throw Error('Not Implemented')
|
||||
}
|
||||
}
|
||||
}
|
||||
46
backend/src/schema/resolvers/passwordReset.spec.js
Normal file
46
backend/src/schema/resolvers/passwordReset.spec.js
Normal file
@ -0,0 +1,46 @@
|
||||
import { GraphQLClient } from 'graphql-request'
|
||||
import Factory from '../../seed/factories'
|
||||
import { host, login } from '../../jest/helpers'
|
||||
import { getDriver } from '../../bootstrap/neo4j'
|
||||
|
||||
const factory = Factory()
|
||||
let client
|
||||
const driver = getDriver()
|
||||
|
||||
const getAllPasswordResets = async () => {
|
||||
const session = driver.session()
|
||||
let transactionRes = await session.run('MATCH (r:PasswordReset) RETURN r')
|
||||
const resets = transactionRes.records.map(record => record.get('r'))
|
||||
session.close()
|
||||
return resets
|
||||
}
|
||||
|
||||
describe('passwordReset', () => {
|
||||
beforeEach(async () => {
|
||||
client = new GraphQLClient(host)
|
||||
await factory.create('User', {
|
||||
email: 'user@example.org',
|
||||
role: 'user',
|
||||
password: '1234',
|
||||
})
|
||||
})
|
||||
|
||||
afterEach(async () => {
|
||||
await factory.cleanDatabase()
|
||||
})
|
||||
|
||||
describe('requestPasswordReset', () => {
|
||||
const variables = { email: 'user@example.org' }
|
||||
const mutation = `mutation($email: String!) { requestPasswordReset(email: $email) }`
|
||||
|
||||
it('resolves', async () => {
|
||||
await expect(client.request(mutation, variables)).resolves.toEqual(true)
|
||||
})
|
||||
|
||||
it('creates node with label `PasswordReset`', async () => {
|
||||
await client.request(mutation, variables)
|
||||
const resets = await getAllPasswordResets()
|
||||
expect(resets).toHaveLength(1)
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -59,7 +59,7 @@ export default {
|
||||
changePassword: async (_, { oldPassword, newPassword }, { driver, user }) => {
|
||||
const session = driver.session()
|
||||
let result = await session.run(
|
||||
`MATCH (user:User {email: $userEmail})
|
||||
`MATCH (user:User {email: $userEmail})
|
||||
RETURN user {.id, .email, .password}`,
|
||||
{
|
||||
userEmail: user.email,
|
||||
|
||||
@ -25,6 +25,8 @@ type Mutation {
|
||||
login(email: String!, password: String!): String!
|
||||
signup(email: String!, password: String!): Boolean!
|
||||
changePassword(oldPassword: String!, newPassword: String!): String!
|
||||
requestPasswordReset(email: String!): Boolean!
|
||||
resetPassword(email: String!, resetToken: String!, newPassword: String!): String!
|
||||
report(id: ID!, description: String): Report
|
||||
disable(id: ID!): ID
|
||||
enable(id: ID!): ID
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user