Skip to content

Commit

Permalink
OPIK-451 Allow users to delete default project (#758)
Browse files Browse the repository at this point in the history
  • Loading branch information
BorisTkachenko authored Nov 28, 2024
1 parent 2dcab92 commit df46b17
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.comet.opik.api.ProjectCriteria;
import com.comet.opik.api.ProjectIdLastUpdated;
import com.comet.opik.api.ProjectUpdate;
import com.comet.opik.api.error.CannotDeleteProjectException;
import com.comet.opik.api.error.EntityAlreadyExistsException;
import com.comet.opik.api.error.ErrorMessage;
import com.comet.opik.api.sorting.Direction;
Expand Down Expand Up @@ -212,12 +211,6 @@ public void delete(@NonNull UUID id) {
return null;
}

if (project.get().name().equalsIgnoreCase(DEFAULT_PROJECT)) {
var message = "Cannot delete default project";
log.info(message);
throw new CannotDeleteProjectException(new ErrorMessage(List.of(message)));
}

repository.delete(id, workspaceId);

// Void return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1592,10 +1592,14 @@ void update__whenNameIsBlank__thenRejectTheUpdate() {
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class DeleteProject {

@Test
@ParameterizedTest
@MethodSource
@DisplayName("Success")
void delete() {
var id = createProject(factory.manufacturePojo(Project.class).toBuilder().build());
void delete(String projectName) {
Project project = Project.builder()
.name(projectName)
.build();
var id = createProject(project);

try (var actualResponse = client.target(URL_TEMPLATE.formatted(baseURI))
.path(id.toString())
Expand All @@ -1619,37 +1623,10 @@ void delete() {
}
}

@Test
@DisplayName("when trying to delete default project, then return conflict")
void delete__whenTryingToDeleteDefaultProject__thenReturnConflict() {
Project project = Project.builder()
.name(DEFAULT_PROJECT)
.build();

UUID defaultProjectId = createProject(project);

try (var actualResponse = client.target(URL_TEMPLATE.formatted(baseURI))
.path(defaultProjectId.toString())
.request()
.header(HttpHeaders.AUTHORIZATION, API_KEY)
.header(WORKSPACE_HEADER, TEST_WORKSPACE)
.delete()) {

assertThat(actualResponse.getStatusInfo().getStatusCode()).isEqualTo(409);
assertThat(actualResponse.hasEntity()).isTrue();
assertThat(actualResponse.readEntity(ErrorMessage.class).errors())
.contains("Cannot delete default project");
}

try (var actualResponse = client.target(URL_TEMPLATE.formatted(baseURI))
.path(defaultProjectId.toString())
.request()
.header(HttpHeaders.AUTHORIZATION, API_KEY)
.header(WORKSPACE_HEADER, TEST_WORKSPACE)
.get()) {

assertThat(actualResponse.getStatusInfo().getStatusCode()).isEqualTo(200);
}
private Stream<Arguments> delete() {
return Stream.of(
Arguments.of(Named.of("Generic project", factory.manufacturePojo(String.class))),
Arguments.of(Named.of("Default project", DEFAULT_PROJECT)));
}
}

Expand Down

0 comments on commit df46b17

Please sign in to comment.