diff --git a/src/lib/routes/admin-api/project/environments.ts b/src/lib/routes/admin-api/project/environments.ts index 0e9bcd5cd9..30541c246a 100644 --- a/src/lib/routes/admin-api/project/environments.ts +++ b/src/lib/routes/admin-api/project/environments.ts @@ -17,7 +17,7 @@ import { getStandardResponses, ProjectEnvironmentSchema, } from '../../../openapi'; -import { OpenApiService } from '../../../services'; +import { OpenApiService, ProjectService } from '../../../services'; const PREFIX = '/:projectId/environments'; @@ -33,18 +33,25 @@ export default class EnvironmentsController extends Controller { private openApiService: OpenApiService; + private projectService: ProjectService; + constructor( config: IUnleashConfig, { environmentService, openApiService, - }: Pick, + projectService, + }: Pick< + IUnleashServices, + 'environmentService' | 'openApiService' | 'projectService' + >, ) { super(config); this.logger = config.getLogger('admin-api/project/environments.ts'); this.environmentService = environmentService; this.openApiService = openApiService; + this.projectService = projectService; this.route({ method: 'post', @@ -126,6 +133,7 @@ export default class EnvironmentsController extends Controller { ): Promise { const { projectId } = req.params; const { environment } = req.body; + await this.projectService.getProject(projectId); // Validates that the project exists await this.environmentService.addEnvironmentToProject( environment, diff --git a/src/test/e2e/api/admin/project/environments.e2e.test.ts b/src/test/e2e/api/admin/project/environments.e2e.test.ts index 7d50aca4ca..d951841aa0 100644 --- a/src/test/e2e/api/admin/project/environments.e2e.test.ts +++ b/src/test/e2e/api/admin/project/environments.e2e.test.ts @@ -159,3 +159,12 @@ test('Should throw an error if you try to set defaultStrategy other than flexibl }) .expect(400); }); + +test('Add environment to project should return 404 when given a projectid that does not exist', async () => { + await app.request + .post(`/api/admin/projects/unknown/environments`) + .send({ + environment: 'default', + }) + .expect(404); +});