Skip to content

Commit

Permalink
Add endpoint to delete all organizations p2-inc#282
Browse files Browse the repository at this point in the history
  • Loading branch information
Kamil Wrobel committed Dec 30, 2024
1 parent 31b9af6 commit a151e29
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,7 @@
import io.phasetwo.service.representation.Organization;
import io.phasetwo.service.representation.OrganizationsConfig;
import jakarta.validation.Valid;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.NotAuthorizedException;
import jakarta.ws.rs.NotFoundException;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import java.util.List;
Expand Down Expand Up @@ -297,6 +288,18 @@ public Response importOrgs(
return response.build();
}

@DELETE
@Path("")
@Produces(MediaType.APPLICATION_JSON)
public Response deleteAllOrgs() {
log.debugf("Delete orgs for %s %s", realm.getName());

auth.requireManageOrgs();

orgs.removeOrganizations(realm);
return Response.status(204).build();
}

private void createOrganization(
boolean skipMissingMember,
boolean skipMissingIdp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,15 @@ protected void deleteOrganization(Keycloak keycloak, String id) {
assertThat(response.getStatusCode(), is(Status.NO_CONTENT.getStatusCode()));
}

protected void deleteAllOrganizations() {
deleteAllOrganizations(keycloak);
}

protected void deleteAllOrganizations(Keycloak keycloak) {
Response response = givenSpec(keycloak).when().delete().then().extract().response();
assertThat(response.getStatusCode(), is(Status.NO_CONTENT.getStatusCode()));
}

protected RequestSpecification givenSpec(String... paths) {
return givenSpec(keycloak, paths);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import static io.phasetwo.service.Helpers.createWebhook;
import static io.phasetwo.service.Helpers.deleteUser;
import static io.phasetwo.service.Helpers.deleteWebhook;
import static io.phasetwo.service.Helpers.enableEvents;
import static io.phasetwo.service.Helpers.objectMapper;
import static io.phasetwo.service.Helpers.removeEventListener;
import static io.phasetwo.service.Orgs.ACTIVE_ORGANIZATION;
Expand Down Expand Up @@ -91,11 +92,7 @@ void testAddGetUpdateDeleteOrg() throws Exception {
assertThat(rep.getId(), is(id));

// get list
Response response = getRequest();
assertThat(response.getStatusCode(), is(Status.OK.getStatusCode()));
List<OrganizationRepresentation> organizations =
objectMapper().readValue(response.getBody().asString(), new TypeReference<>() {});
assertNotNull(organizations);
List<OrganizationRepresentation> organizations = getListOfOrganizations(keycloak);
assertThat(organizations.size(), is(1));

rep = organizations.get(0);
Expand All @@ -112,7 +109,7 @@ void testAddGetUpdateDeleteOrg() throws Exception {
.displayName("Example company")
.attributes(ImmutableMap.of("foo", List.of("bar")));

response = putRequest(rep, id);
Response response = putRequest(rep, id);
assertThat(response.statusCode(), is(Status.NO_CONTENT.getStatusCode()));

// get single
Expand Down Expand Up @@ -140,13 +137,38 @@ void testAddGetUpdateDeleteOrg() throws Exception {
assertThat(response.getStatusCode(), is(Status.NOT_FOUND.getStatusCode()));

// get list
response = getRequest();
organizations = getListOfOrganizations(keycloak);
assertThat(organizations.size(), is(0));
}

assertThat(response.getStatusCode(), is(Status.OK.getStatusCode()));
organizations =
objectMapper().readValue(response.getBody().asString(), new TypeReference<>() {});
@Test
void testDeleteAllOrganizations() throws Exception {
final int numberOfOrgs = 3;
for (int i = 0; i < numberOfOrgs; i++) {
createOrganization(
new OrganizationRepresentation().name("master" + i).domains(List.of("master" + i + ".com")));
}

// get list before delete
List<OrganizationRepresentation> organizations1 = getListOfOrganizations(keycloak);
assertThat(organizations1.size(), is(numberOfOrgs));

// delete
deleteAllOrganizations();

// get list after delete
List<OrganizationRepresentation> organizations1AfterDelete = getListOfOrganizations(keycloak);
assertThat(organizations1AfterDelete.size(), is(0));
}

private List<OrganizationRepresentation> getListOfOrganizations(Keycloak keycloak) throws IOException {
Response getOrgsListResponse = getRequest(keycloak);
assertThat(getOrgsListResponse.getStatusCode(), is(Status.OK.getStatusCode()));
List<OrganizationRepresentation> organizations = objectMapper().readValue(getOrgsListResponse.getBody().asString(),
new TypeReference<>() {
});
assertNotNull(organizations);
assertThat(organizations.size(), is(0));
return organizations;
}

@Test
Expand Down

0 comments on commit a151e29

Please sign in to comment.