Created
October 4, 2019 15:04
-
-
Save pzmudzinski/e91628d257175fa9cf45e6fe6984da97 to your computer and use it in GitHub Desktop.
Custom jest expect extension for GraphQL auth tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
expect.extend({ | |
toBeForbidden(received) { | |
const forbiddenErrorCode = 'FORBIDDEN'; | |
if (!received.errors || received.errors.length === 0) { | |
return { | |
message: `No errors in response`, | |
pass: false | |
} | |
} | |
const {extensions} = received.errors[0]; | |
if (!extensions) { | |
return { | |
message: `No extensions in response`, | |
pass: false | |
} | |
} | |
const {code} = extensions; | |
if (forbiddenErrorCode === code) { | |
return { | |
message: 'Returns FORBIDDEN', | |
pass: true | |
} | |
} else { | |
return { | |
message: `Expected ${forbiddenErrorCode}, received ${code}`, | |
pass: false | |
} | |
} | |
} | |
}); | |
// Sample usage | |
// Helper method for checking forbidden mutations | |
const expectForbiddenMutationForUser = async (mutation, params) => { | |
const {server} = createServer({ | |
accessToken: 'ACCESS_TOKEN', | |
user: { | |
role: ROLE_USER | |
} | |
}); | |
const {mutate} = createTestClient(server); | |
const res = await mutate({ | |
mutation, | |
variables: params | |
}); | |
expect(res).toBeForbidden(); | |
}; | |
// Sample usage: | |
it('cannot create new user while having USER role', async () => { | |
await expectForbiddenMutationForUser(MUTATION_CREATE_USER, { | |
userBody: { | |
email: '[email protected]', | |
address1: 'addr1', | |
city: 'city', | |
state: 'CA', | |
postalCode: '94608', | |
country: 'USA', | |
lastName: 'Gretzky', | |
firstName: 'Wayne', | |
birthDate: '2005-05-05', | |
password: '123456' | |
} | |
}) | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment