|
|
@@ -150,6 +150,34 @@ describe('access-token-parser middleware', () => {
|
|
|
expect(serializeUserSecurely).toHaveBeenCalledOnce();
|
|
|
});
|
|
|
|
|
|
+ it('should set req.user with a valid api token in the X-GROWI-ACCESS-TOKEN header', async () => {
|
|
|
+ // arrange
|
|
|
+ const reqMock = mock<AccessTokenParserReq>({
|
|
|
+ user: undefined,
|
|
|
+ });
|
|
|
+ const resMock = mock<Response>();
|
|
|
+
|
|
|
+ expect(reqMock.user).toBeUndefined();
|
|
|
+
|
|
|
+ // prepare a user with an access token
|
|
|
+ const targetUser = await User.create({
|
|
|
+ name: faker.person.fullName(),
|
|
|
+ username: faker.string.uuid(),
|
|
|
+ password: faker.internet.password(),
|
|
|
+ lang: 'en_US',
|
|
|
+ apiToken: faker.internet.password(),
|
|
|
+ });
|
|
|
+
|
|
|
+ // act
|
|
|
+ reqMock.headers['x-growi-access-token'] = targetUser.apiToken;
|
|
|
+ await parserForApiToken(reqMock, resMock);
|
|
|
+
|
|
|
+ // assert
|
|
|
+ expect(reqMock.user).toBeDefined();
|
|
|
+ expect(reqMock.user?._id).toStrictEqual(targetUser._id);
|
|
|
+ expect(serializeUserSecurely).toHaveBeenCalledOnce();
|
|
|
+ });
|
|
|
+
|
|
|
it('should ignore non-Bearer Authorization header', async () => {
|
|
|
// arrange
|
|
|
const reqMock = mock<AccessTokenParserReq>({
|