Files
speckle-server/packages/server/modules/gatekeeper/tests/intergration/workspace.graph.spec.ts
T
2024-12-09 14:31:59 +01:00

100 lines
2.9 KiB
TypeScript

import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation'
import {
BasicTestUser,
createAuthTokenForUser,
createTestUsers
} from '@/test/authHelper'
import { GetWorkspaceDocument } from '@/test/graphql/generated/graphql'
import {
createTestContext,
testApolloServer,
TestApolloServer
} from '@/test/graphqlHelper'
import { beforeEachContext } from '@/test/hooks'
import { AllScopes, Roles } from '@speckle/shared'
import { expect } from 'chai'
import cryptoRandomString from 'crypto-random-string'
describe('Workspaces Billing', () => {
let apollo: TestApolloServer
const testAdminUser: BasicTestUser = {
id: '',
name: 'John Speckle',
email: 'john-speckle@example.org',
role: Roles.Server.Admin,
verified: true
}
before(async () => {
await beforeEachContext()
await createTestUsers([testAdminUser])
const token = await createAuthTokenForUser(testAdminUser.id, AllScopes)
apollo = await testApolloServer({
context: await createTestContext({
auth: true,
userId: testAdminUser.id,
token,
role: testAdminUser.role,
scopes: AllScopes
})
})
})
describe('query workspace.readOnly', () => {
it('should return false for workspace plan status valid', async () => {
const workspace = {
id: '',
name: 'test ws',
slug: cryptoRandomString({ length: 10 }),
ownerId: ''
}
await createTestWorkspace(workspace, testAdminUser, {
addPlan: { name: 'business', status: 'valid' }
})
const res = await apollo.execute(GetWorkspaceDocument, {
workspaceId: workspace.id
})
expect(res).to.not.haveGraphQLErrors()
expect(res.data?.workspace?.readOnly).to.be.false
})
it('should return true for workspace plan status expired', async () => {
const workspace = {
id: '',
name: 'test ws',
slug: cryptoRandomString({ length: 10 }),
ownerId: ''
}
await createTestWorkspace(workspace, testAdminUser, {
addPlan: { name: 'business', status: 'expired' }
})
const res = await apollo.execute(GetWorkspaceDocument, {
workspaceId: workspace.id
})
expect(res).to.not.haveGraphQLErrors()
expect(res.data?.workspace?.readOnly).to.be.true
})
it('should return false for workspace plan status trial', async () => {
const workspace = {
id: '',
name: 'test ws',
slug: cryptoRandomString({ length: 10 }),
ownerId: ''
}
await createTestWorkspace(workspace, testAdminUser, {
addPlan: { name: 'business', status: 'trial' }
})
const res = await apollo.execute(GetWorkspaceDocument, {
workspaceId: workspace.id
})
expect(res).to.not.haveGraphQLErrors()
expect(res.data?.workspace?.readOnly).to.be.false
})
})
})