add test cases

This commit is contained in:
Hongbo Wu 2023-10-25 13:14:49 +08:00
parent 5f5423ddcb
commit dddb51f7d5
3 changed files with 67 additions and 3 deletions

View file

@ -2,6 +2,7 @@ import * as httpContext from 'express-http-context2'
import { EntityManager, EntityTarget, Repository } from 'typeorm'
import { appDataSource } from '../data_source'
import { Claims } from '../resolvers/types'
import { SetClaimsRole } from '../utils/dictionary'
export const getColumns = <T>(repository: Repository<T>): (keyof T)[] => {
return repository.metadata.columns.map(
@ -12,8 +13,10 @@ export const getColumns = <T>(repository: Repository<T>): (keyof T)[] => {
export const setClaims = async (
manager: EntityManager,
uid = '00000000-0000-0000-0000-000000000000',
dbRole = 'omnivore_user'
userRole = 'user'
): Promise<unknown> => {
const dbRole =
userRole === SetClaimsRole.ADMIN ? 'omnivore_admin' : 'omnivore_user'
return manager.query('SELECT * from omnivore.set_claims($1, $2)', [
uid,
dbRole,

View file

@ -6,7 +6,7 @@ import {
UpdateUserProfileErrorCode,
} from '../../src/generated/graphql'
import { findProfile } from '../../src/services/profile'
import { deleteUser, findUser } from '../../src/services/user'
import { deleteUser, findActiveUser } from '../../src/services/user'
import { hashPassword } from '../../src/utils/auth'
import { createTestUser } from '../db'
import { generateFakeUuid, graphqlRequest, request } from '../util'
@ -98,7 +98,7 @@ describe('User API', () => {
it('updates user and responds with status code 200', async () => {
const response = await graphqlRequest(query, authToken).expect(200)
const user = await findUser(response.body.data.updateUser.user.id)
const user = await findActiveUser(response.body.data.updateUser.user.id)
expect(user?.name).to.eql(name)
})
})

View file

@ -0,0 +1,61 @@
import { expect } from 'chai'
import 'mocha'
import { In } from 'typeorm'
import { StatusType } from '../../src/entity/user'
import {
createUsers,
deleteUsers,
findUsersById,
} from '../../src/services/user'
import { request } from '../util'
describe('User Service Router', () => {
const token = process.env.PUBSUB_VERIFICATION_TOKEN || ''
describe('cleanup', () => {
let toDeleteUserIds: string[] = []
before(async () => {
// create test users
const users = await createUsers([
{
name: 'user_1',
email: 'user_1@omnivore.app',
status: StatusType.Deleted,
updatedAt: new Date(Date.now() - 1000 * 60 * 60 * 24 * 2), // 2 days ago
},
{
name: 'user_2',
email: 'user_2@omnivore.app',
status: StatusType.Deleted,
updatedAt: new Date(Date.now() - 1000 * 60 * 60 * 24 * 2), // 2 days ago
},
])
toDeleteUserIds = users.map((u) => u.id)
})
after(async () => {
// delete test users
await deleteUsers({ id: In(toDeleteUserIds) })
})
it('deletes soft deleted users a day ago', async () => {
const data = {
message: {
data: Buffer.from(
JSON.stringify({ subDays: 1 }) // 1 day ago
).toString('base64'),
publishTime: new Date().toISOString(),
},
}
await request
.post('/api/user/cleanup?token=' + token)
.send(data)
.expect(200)
const deletedUsers = await findUsersById(toDeleteUserIds)
expect(deletedUsers.length).to.equal(0)
})
})
})