chote(core): fix tests

This commit is contained in:
Alessandro Magionami
2024-12-20 09:54:42 +01:00
parent 8003c1cac2
commit ca46ae6263
2 changed files with 132 additions and 121 deletions
@@ -37,6 +37,7 @@ import { createUserFactory } from '@/modules/core/services/users/management'
import { UsersEmitter } from '@/modules/core/events/usersEmitter'
import { getServerInfoFactory } from '@/modules/core/repositories/server'
import { WorkspaceReadOnlyError } from '@/modules/gatekeeper/errors/billing'
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
const getServerInfo = getServerInfoFactory({ db })
const getUser = legacyGetUserFactory({ db })
@@ -71,70 +72,75 @@ const createUser = createUserFactory({
usersEventsEmitter: UsersEmitter.emit
})
const { FF_BILLING_INTEGRATION_ENABLED } = getFeatureFlags()
describe('Objects graphql @core', () => {
before(async () => {
await beforeEachContext()
})
describe('objectCreate mutation', () => {
it('should return error if project is read-only', async () => {
const userId = await createUser({
name: 'emails user',
email: createRandomEmail(),
password: createRandomPassword()
})
;(FF_BILLING_INTEGRATION_ENABLED ? it : it.skip)(
'should return error if project is read-only',
async () => {
const userId = await createUser({
name: 'emails user',
email: createRandomEmail(),
password: createRandomPassword()
})
const apollo = await testApolloServer({ authUserId: userId })
const apollo = await testApolloServer({ authUserId: userId })
const workspaceCreateRes = await apollo.execute(CreateWorkspaceDocument, {
input: { name: 'test ws' }
})
expect(workspaceCreateRes).to.not.haveGraphQLErrors()
const workspaceCreateRes = await apollo.execute(CreateWorkspaceDocument, {
input: { name: 'test ws' }
})
expect(workspaceCreateRes).to.not.haveGraphQLErrors()
const workspace = workspaceCreateRes.data?.workspaceMutations.create
const workspace = workspaceCreateRes.data?.workspaceMutations.create
const projectCreateRes = await apollo.execute(CreateWorkspaceProjectDocument, {
input: { workspaceId: workspace!.id, name: 'test project' }
})
expect(projectCreateRes).to.not.haveGraphQLErrors()
const project = projectCreateRes.data?.workspaceMutations.projects.create
const projectCreateRes = await apollo.execute(CreateWorkspaceProjectDocument, {
input: { workspaceId: workspace!.id, name: 'test project' }
})
expect(projectCreateRes).to.not.haveGraphQLErrors()
const project = projectCreateRes.data?.workspaceMutations.projects.create
// Make the project read-only
await db('workspace_plans')
.update({ status: 'expired' })
.where({ workspaceId: workspace!.id })
// Make the project read-only
await db('workspace_plans')
.update({ status: 'expired' })
.where({ workspaceId: workspace!.id })
const objectCreateRes = await apollo.execute(CreateObjectDocument, {
input: {
streamId: project!.id,
objects: [
{
id: 'e5262a6fb51540974e6d07ac60b7fe5c',
name: 'Rhino Model',
elements: [
{
referencedId: '581a822cdaa5c2972783510d57617f73',
/* eslint-disable camelcase */
speckle_type: 'reference'
}
],
__closure: {
'0086c072ee1fd70ac0a68c067a37e0eb': 3
},
speckleType: 'Speckle.Core.Models.Collection',
speckle_type: 'Speckle.Core.Models.Collection',
applicationId: null,
collectionType: 'rhino model',
totalChildrenCount: 610
}
]
}
})
expect(objectCreateRes).to.haveGraphQLErrors()
expect(objectCreateRes.errors).to.have.length(1)
expect(objectCreateRes.errors![0].message).to.eq(
new WorkspaceReadOnlyError().message
)
})
const objectCreateRes = await apollo.execute(CreateObjectDocument, {
input: {
streamId: project!.id,
objects: [
{
id: 'e5262a6fb51540974e6d07ac60b7fe5c',
name: 'Rhino Model',
elements: [
{
referencedId: '581a822cdaa5c2972783510d57617f73',
/* eslint-disable camelcase */
speckle_type: 'reference'
}
],
__closure: {
'0086c072ee1fd70ac0a68c067a37e0eb': 3
},
speckleType: 'Speckle.Core.Models.Collection',
speckle_type: 'Speckle.Core.Models.Collection',
applicationId: null,
collectionType: 'rhino model',
totalChildrenCount: 610
}
]
}
})
expect(objectCreateRes).to.haveGraphQLErrors()
expect(objectCreateRes.errors).to.have.length(1)
expect(objectCreateRes.errors![0].message).to.eq(
new WorkspaceReadOnlyError().message
)
}
)
})
})
@@ -41,6 +41,7 @@ import {
} from '@/modules/core/repositories/tokens'
import { Scopes } from '@speckle/shared'
import { expect } from 'chai'
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
const getServerInfo = getServerInfoFactory({ db })
const getUser = legacyGetUserFactory({ db })
@@ -84,82 +85,86 @@ const createPersonalAccessToken = createPersonalAccessTokenFactory({
storePersonalApiToken: storePersonalApiTokenFactory({ db })
})
const { FF_BILLING_INTEGRATION_ENABLED } = getFeatureFlags()
describe('Objects REST @core', () => {
let app: Express
before(async () => {
;({ app } = await beforeEachContext())
})
;(FF_BILLING_INTEGRATION_ENABLED ? it : it.skip)(
'should return an error if the project is read-only',
async () => {
const userId = await createUser({
name: 'emails user',
email: createRandomEmail(),
password: createRandomPassword()
})
const user = await getUser(userId)
const workspace = {
name: 'Test Workspace #1',
ownerId: userId,
id: '',
slug: ''
}
await createTestWorkspace(workspace, user, {
addPlan: { name: 'business', status: 'expired' }
})
it('should return an error if the project is read-only', async () => {
const userId = await createUser({
name: 'emails user',
email: createRandomEmail(),
password: createRandomPassword()
})
const user = await getUser(userId)
const workspace = {
name: 'Test Workspace #1',
ownerId: userId,
id: '',
slug: ''
}
await createTestWorkspace(workspace, user, {
addPlan: { name: 'business', status: 'expired' }
})
const project = {
id: '',
name: 'test project',
ownerId: userId,
workspaceId: workspace.id
}
await createTestStream(project as unknown as BasicTestStream, user)
const project = {
id: '',
name: 'test project',
ownerId: userId,
workspaceId: workspace.id
}
await createTestStream(project as unknown as BasicTestStream, user)
const token = `Bearer ${await createPersonalAccessToken(
user.id,
'test token user A',
[
Scopes.Streams.Read,
Scopes.Streams.Write,
Scopes.Users.Read,
Scopes.Users.Email,
Scopes.Tokens.Write,
Scopes.Tokens.Read,
Scopes.Profile.Read,
Scopes.Profile.Email
]
)}`
const token = `Bearer ${await createPersonalAccessToken(
user.id,
'test token user A',
[
Scopes.Streams.Read,
Scopes.Streams.Write,
Scopes.Users.Read,
Scopes.Users.Email,
Scopes.Tokens.Write,
Scopes.Tokens.Read,
Scopes.Profile.Read,
Scopes.Profile.Email
]
)}`
const res = await request(app)
.post(`/objects/${project.id}`)
.set('Authorization', token)
.set('Content-type', 'multipart/form-data')
.attach(
'batch1',
Buffer.from(
JSON.stringify({
id: 'e5262a6fb51540974e6d07ac60b7fe5c',
name: 'Rhino Model',
elements: [
{
referencedId: '581a822cdaa5c2972783510d57617f73',
/* eslint-disable camelcase */
speckle_type: 'reference'
}
],
__closure: {
'0086c072ee1fd70ac0a68c067a37e0eb': 3
},
speckleType: 'Speckle.Core.Models.Collection',
speckle_type: 'Speckle.Core.Models.Collection',
applicationId: null,
collectionType: 'rhino model',
totalChildrenCount: 610
}),
'utf8'
const res = await request(app)
.post(`/objects/${project.id}`)
.set('Authorization', token)
.set('Content-type', 'multipart/form-data')
.attach(
'batch1',
Buffer.from(
JSON.stringify({
id: 'e5262a6fb51540974e6d07ac60b7fe5c',
name: 'Rhino Model',
elements: [
{
referencedId: '581a822cdaa5c2972783510d57617f73',
/* eslint-disable camelcase */
speckle_type: 'reference'
}
],
__closure: {
'0086c072ee1fd70ac0a68c067a37e0eb': 3
},
speckleType: 'Speckle.Core.Models.Collection',
speckle_type: 'Speckle.Core.Models.Collection',
applicationId: null,
collectionType: 'rhino model',
totalChildrenCount: 610
}),
'utf8'
)
)
)
expect(res).to.have.status(403)
})
expect(res).to.have.status(403)
}
)
})