Skip to content

Commit 2c0342d

Browse files
committed
resolve remaining type-errors from PublicUser vs User apiKey differences
1 parent 6bcdebf commit 2c0342d

File tree

5 files changed

+51
-30
lines changed

5 files changed

+51
-30
lines changed

client/testData/testReduxStore.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ const initialTestState: RootState = {
5454
user: {
5555
email: 'happydog@example.com',
5656
username: 'happydog',
57-
preferences: {},
57+
preferences: {
58+
...initialPrefState,
59+
indentationAmount: 2,
60+
isTabIndent: true
61+
},
5862
apiKeys: [],
5963
verified: 'sent',
6064
id: '123456789',

server/controllers/user.controller/__testUtils__.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const mockBaseUserSanitised: PublicUser = {
2929
email: 'test@example.com',
3030
username: 'tester',
3131
preferences: mockUserPreferences,
32-
apiKeys: ([] as unknown) as Types.DocumentArray<ApiKeyDocument>,
32+
apiKeys: [],
3333
verified: 'verified',
3434
id: 'abc123',
3535
totalSize: 42,
@@ -42,6 +42,7 @@ export const mockBaseUserSanitised: PublicUser = {
4242
export const mockBaseUserFull: Omit<User, 'createdAt'> = {
4343
...mockBaseUserSanitised,
4444
name: 'test user',
45+
apiKeys: ([] as unknown) as Types.DocumentArray<ApiKeyDocument>,
4546
tokens: [],
4647
password: 'abweorij',
4748
resetPasswordToken: '1i14ij23',
@@ -58,7 +59,7 @@ export const mockBaseUserFull: Omit<User, 'createdAt'> = {
5859
export function createMockUser(
5960
overrides: Partial<UserDocument> = {},
6061
unSanitised: boolean = false
61-
): PublicUser & Record<string, any> {
62+
): (PublicUser | UserDocument) & Record<string, any> {
6263
return {
6364
...(unSanitised ? mockBaseUserFull : mockBaseUserSanitised),
6465
...overrides

server/controllers/user.controller/__tests__/apiKey.test.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ import { Types } from 'mongoose';
77

88
import { User } from '../../../models/user';
99
import { createApiKey, removeApiKey } from '../apiKey';
10-
import type { ApiKeyDocument, RemoveApiKeyRequestParams } from '../../../types';
10+
import type {
11+
ApiKeyDocument,
12+
RemoveApiKeyRequestParams,
13+
UserDocument
14+
} from '../../../types';
1115
import { createMockUser } from '../__testUtils__';
1216

1317
jest.mock('../../../models/user');
@@ -31,7 +35,7 @@ describe('user.controller > api key', () => {
3135

3236
describe('createApiKey', () => {
3337
it("returns an error if user doesn't exist", async () => {
34-
request.user = createMockUser({ id: '1234' });
38+
request.user = createMockUser({ id: '1234' }, true);
3539

3640
User.findById = jest.fn().mockResolvedValue(null);
3741

@@ -48,7 +52,7 @@ describe('user.controller > api key', () => {
4852
});
4953

5054
it('returns an error if label not provided', async () => {
51-
request.user = createMockUser({ id: '1234' });
55+
request.user = createMockUser({ id: '1234' }, true);
5256
request.body = {};
5357

5458
const user = new User();
@@ -98,7 +102,7 @@ describe('user.controller > api key', () => {
98102

99103
describe('removeApiKey', () => {
100104
it("returns an error if user doesn't exist", async () => {
101-
request.user = createMockUser({ id: '1234' });
105+
request.user = createMockUser({ id: '1234' }, true);
102106

103107
User.findById = jest.fn().mockResolvedValue(null);
104108

@@ -115,7 +119,7 @@ describe('user.controller > api key', () => {
115119
});
116120

117121
it("returns an error if specified key doesn't exist", async () => {
118-
request.user = createMockUser({ id: '1234' });
122+
request.user = createMockUser({ id: '1234' }, true);
119123
request.params = { keyId: 'not-a-real-key' };
120124
const user = new User();
121125
user.apiKeys = ([] as unknown) as Types.DocumentArray<ApiKeyDocument>;
@@ -145,11 +149,14 @@ describe('user.controller > api key', () => {
145149
apiKeys.find = Array.prototype.find;
146150
apiKeys.pull = jest.fn();
147151

148-
const user = createMockUser({
149-
id: '1234',
150-
apiKeys,
151-
save: jest.fn()
152-
});
152+
const user = createMockUser(
153+
{
154+
id: '1234',
155+
apiKeys,
156+
save: jest.fn()
157+
},
158+
true
159+
) as UserDocument;
153160

154161
request.user = user;
155162
request.params = { keyId: 'id1' };

server/controllers/user.controller/__tests__/authManagement/passwordManagement.test.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('user.controller > auth management > password management', () => {
2929
let response: MockResponse;
3030
let next: MockNext;
3131
let mockToken: string;
32-
let mockUser: Partial<UserDocument>;
32+
let mockUser: UserDocument;
3333
const fixedTime = 100000000;
3434

3535
beforeEach(() => {
@@ -68,10 +68,13 @@ describe('user.controller > auth management > password management', () => {
6868
describe('if the user is found', () => {
6969
beforeEach(async () => {
7070
mockToken = 'mock-token';
71-
mockUser = createMockUser({
72-
email: 'test@example.com',
73-
save: jest.fn().mockResolvedValue(null)
74-
});
71+
mockUser = createMockUser(
72+
{
73+
email: 'test@example.com',
74+
save: jest.fn().mockResolvedValue(null)
75+
},
76+
false
77+
) as UserDocument;
7578

7679
(generateToken as jest.Mock).mockResolvedValue(mockToken);
7780
User.findByEmail = jest.fn().mockResolvedValue(mockUser);
@@ -143,10 +146,13 @@ describe('user.controller > auth management > password management', () => {
143146
});
144147
it('returns unsuccessful for all other errors', async () => {
145148
mockToken = 'mock-token';
146-
mockUser = createMockUser({
147-
email: 'test@example.com',
148-
save: jest.fn().mockResolvedValue(null)
149-
});
149+
mockUser = createMockUser(
150+
{
151+
email: 'test@example.com',
152+
save: jest.fn().mockResolvedValue(null)
153+
},
154+
false
155+
) as UserDocument;
150156

151157
(generateToken as jest.Mock).mockRejectedValue(
152158
new Error('network error')
@@ -298,7 +304,7 @@ describe('user.controller > auth management > password management', () => {
298304
resetPasswordToken: 'valid-token',
299305
resetPasswordExpires: fixedTime + 10000, // still valid
300306
save: jest.fn()
301-
};
307+
} as UserDocument;
302308

303309
beforeEach(async () => {
304310
User.findOne = jest.fn().mockReturnValue({

server/controllers/user.controller/__tests__/authManagement/updateSettings.test.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,16 @@ describe('user.controller > auth management > updateSettings (email, username, p
6060
response = new MockResponse();
6161
next = jest.fn();
6262

63-
startingUser = createMockUser({
64-
username: OLD_USERNAME,
65-
email: OLD_EMAIL,
66-
password: OLD_PASSWORD,
67-
id: '123459',
68-
comparePassword: jest.fn().mockResolvedValue(true)
69-
});
63+
startingUser = createMockUser(
64+
{
65+
username: OLD_USERNAME,
66+
email: OLD_EMAIL,
67+
password: OLD_PASSWORD,
68+
id: '123459',
69+
comparePassword: jest.fn().mockResolvedValue(true)
70+
},
71+
false
72+
) as UserDocument;
7073

7174
testUser = { ...startingUser }; // copy to avoid mutation causing false-positive tests results
7275

0 commit comments

Comments
 (0)