Added optional website ID for creation

This commit is contained in:
eoussama 2025-07-06 21:18:04 +01:00
parent 74f0bdab89
commit b73a67915d
2 changed files with 36 additions and 2 deletions

View file

@ -1,3 +1,5 @@
import { uuid } from '../../src/lib/crypto';
describe('Website API tests', () => {
Cypress.session.clearAllSavedSessions();
@ -65,6 +67,37 @@ describe('Website API tests', () => {
});
});
it('Creates a website with a fixed ID.', () => {
cy.fixture('websites').then(data => {
const websiteCreate = data.websiteCreate;
const fixedId = uuid();
cy.request({
method: 'POST',
url: '/api/websites',
headers: {
'Content-Type': 'application/json',
Authorization: Cypress.env('authorization'),
},
body: { ...websiteCreate, id: fixedId },
}).then(response => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property('id', fixedId);
expect(response.body).to.have.property('name', 'Cypress Website');
expect(response.body).to.have.property('domain', 'cypress.com');
// cleanup
cy.request({
method: 'DELETE',
url: `/api/websites/${fixedId}`,
headers: {
'Content-Type': 'application/json',
Authorization: Cypress.env('authorization'),
},
});
});
});
});
it('Returns all tracked websites.', () => {
cy.request({
method: 'GET',

View file

@ -26,6 +26,7 @@ export async function POST(request: Request) {
domain: z.string().max(500),
shareId: z.string().max(50).nullable().optional(),
teamId: z.string().nullable().optional(),
id: z.string().uuid().nullable().optional(),
});
const { auth, body, error } = await parseRequest(request, schema);
@ -34,14 +35,14 @@ export async function POST(request: Request) {
return error();
}
const { name, domain, shareId, teamId } = body;
const { id, name, domain, shareId, teamId } = body;
if ((teamId && !(await canCreateTeamWebsite(auth, teamId))) || !(await canCreateWebsite(auth))) {
return unauthorized();
}
const data: any = {
id: uuid(),
id: id ?? uuid(),
createdBy: auth.user.id,
name,
domain,