From 49dea7cfad2ea76296c3aceaa2bad6afeeb5c4ef Mon Sep 17 00:00:00 2001 From: Chad Elliott Date: Tue, 4 Feb 2025 11:22:59 -0600 Subject: [PATCH] Removed unused services. --- .../services/opportunities/Opportunities.java | 136 ----- .../OpportunitiesController.java | 94 ---- .../opportunities/OpportunitiesCreateDTO.java | 36 -- .../OpportunitiesRepository.java | 28 - .../opportunities/OpportunitiesService.java | 16 - .../OpportunitiesServicesImpl.java | 87 ---- .../question_category/QuestionCategory.java | 69 --- .../QuestionCategoryController.java | 90 ---- .../QuestionCategoryCreateDTO.java | 17 - .../QuestionCategoryRepository.java | 18 - .../QuestionCategoryServices.java | 14 - .../QuestionCategoryServicesImpl.java | 112 ---- .../checkins/services/questions/Question.java | 17 +- .../questions/QuestionController.java | 18 +- .../services/questions/QuestionCreateDTO.java | 4 - .../questions/QuestionRepository.java | 1 - .../questions/QuestionResponseDTO.java | 5 - .../services/questions/QuestionServices.java | 1 - .../questions/QuestionServicesImpl.java | 5 - .../services/questions/QuestionUpdateDTO.java | 4 - .../checkins/services/survey/Survey.java | 111 ---- .../services/survey/SurveyController.java | 91 ---- .../services/survey/SurveyCreateDTO.java | 33 -- .../services/survey/SurveyRepository.java | 15 - .../services/survey/SurveyService.java | 18 - .../services/survey/SurveyServicesImpl.java | 101 ---- .../checkins/services/tags/Tag.java | 58 --- .../checkins/services/tags/TagController.java | 100 ---- .../checkins/services/tags/TagCreateDTO.java | 18 - .../checkins/services/tags/TagRepository.java | 32 -- .../checkins/services/tags/TagServices.java | 17 - .../services/tags/TagServicesImpl.java | 78 --- .../services/tags/entityTag/EntityTag.java | 135 ----- .../tags/entityTag/EntityTagController.java | 90 ---- .../tags/entityTag/EntityTagCreateDTO.java | 30 -- .../tags/entityTag/EntityTagRepository.java | 33 -- .../tags/entityTag/EntityTagServices.java | 19 - .../tags/entityTag/EntityTagServicesImpl.java | 92 ---- .../db/common/V120__remove_unused_tables.sql | 7 + .../services/TestContainersSuite.java | 7 +- .../services/fixture/EntityTagFixture.java | 13 - .../fixture/OpportunitiesFixture.java | 13 - .../fixture/QuestionCategoryFixture.java | 13 - .../services/fixture/QuestionFixture.java | 4 - .../services/fixture/RepositoryFixture.java | 25 - .../services/fixture/SurveyFixture.java | 14 - .../checkins/services/fixture/TagFixture.java | 14 - .../OpportunitiesControllerTest.java | 407 --------------- .../QuestionCategoryControllerTest.java | 262 ---------- .../questions/QuestionControllerTest.java | 36 +- .../services/survey/SurveyControllerTest.java | 489 ------------------ .../tags/EntityTagControllerTest.java | 246 --------- .../services/tags/TagControllerTest.java | 177 ------- 53 files changed, 15 insertions(+), 3555 deletions(-) delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/opportunities/Opportunities.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesCreateDTO.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesRepository.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesService.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesServicesImpl.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategory.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryCreateDTO.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryRepository.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServices.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServicesImpl.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/survey/Survey.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyCreateDTO.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyRepository.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyService.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyServicesImpl.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/Tag.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/TagCreateDTO.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/TagRepository.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/TagServices.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/TagServicesImpl.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTag.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagCreateDTO.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagRepository.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServices.java delete mode 100644 server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServicesImpl.java create mode 100644 server/src/main/resources/db/common/V120__remove_unused_tables.sql delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/fixture/EntityTagFixture.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/fixture/OpportunitiesFixture.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionCategoryFixture.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/fixture/SurveyFixture.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/fixture/TagFixture.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesControllerTest.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryControllerTest.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/survey/SurveyControllerTest.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/tags/EntityTagControllerTest.java delete mode 100644 server/src/test/java/com/objectcomputing/checkins/services/tags/TagControllerTest.java diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/Opportunities.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/Opportunities.java deleted file mode 100644 index 827f79e7c6..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/Opportunities.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import com.objectcomputing.checkins.converter.LocalDateConverter; -import io.micronaut.core.annotation.Introspected; -import io.micronaut.data.annotation.AutoPopulated; -import io.micronaut.data.annotation.TypeDef; -import io.micronaut.data.annotation.sql.ColumnTransformer; -import io.micronaut.data.model.DataType; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.time.LocalDate; -import java.util.Objects; -import java.util.UUID; - -@Entity -@Getter -@Setter -@NoArgsConstructor -@Introspected -@Table(name = "opportunities") -public class Opportunities { - - @Id - @Column(name="id") - @AutoPopulated - @TypeDef(type=DataType.STRING) - @Schema(description = "the id of the opportunity") - private UUID id; - - @Column(name="name") - @ColumnTransformer( - read = "pgp_sym_decrypt(name::bytea,'${aes.key}')", - write = "pgp_sym_encrypt(?,'${aes.key}') " - ) - @NotNull - @Schema(description = "Name of the opportunity") - private String name; - - @Column(name="description") - @ColumnTransformer( - read = "pgp_sym_decrypt(description::bytea,'${aes.key}')", - write = "pgp_sym_encrypt(?,'${aes.key}') " - ) - @NotNull - @Schema(description = "description of the opportunity") - private String description; - - @Column(name="url") - @ColumnTransformer( - read = "pgp_sym_decrypt(url::bytea,'${aes.key}')", - write = "pgp_sym_encrypt(?,'${aes.key}') " - ) - - @Schema(description = "description of url") - private String url; - - @Column(name="expireson") - @Schema(description = "date for expiresOn") - @TypeDef(type = DataType.DATE, converter = LocalDateConverter.class) - private LocalDate expiresOn; - - @Column(name="submittedon") - @Schema(description = "date for submittedOn") - @TypeDef(type = DataType.DATE, converter = LocalDateConverter.class) - private LocalDate submittedOn; - - @Column(name="submittedby") - @TypeDef(type=DataType.STRING) - @Schema(description = "id of the teamMember this entry is associated with") - private UUID submittedBy; - - @Column(name = "pending") - @TypeDef(type = DataType.BOOLEAN) - @Schema(description = "whether the opportunity is pending") - private Boolean pending; - - public Opportunities(UUID id, String name, String description, String url, LocalDate expiresOn, LocalDate submittedOn, UUID submittedBy, Boolean pending) { - this.id = id; - this.name = name; - this.description = description; - this.url = url; - this.expiresOn = expiresOn; - this.submittedOn = submittedOn; - this.submittedBy = submittedBy; - this.pending = pending; - } - - public Opportunities(String name, String description, String url, LocalDate expiresOn, LocalDate submittedOn, UUID submittedBy, Boolean pending) { - this(null, name, description, url, expiresOn, submittedOn, submittedBy, pending); - } - - public Opportunities(String name, String description, String url, LocalDate expiresOn, Boolean pending) { - this(null, name, description, url, expiresOn, null, null, pending); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - com.objectcomputing.checkins.services.opportunities.Opportunities that = (com.objectcomputing.checkins.services.opportunities.Opportunities) o; - return Objects.equals(id, that.id) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(url, that.url) && - Objects.equals(expiresOn, that.expiresOn) && - Objects.equals(submittedOn, that.submittedOn) && - Objects.equals(submittedBy, that.submittedBy) && - Objects.equals(pending, that.pending); - } - - @Override - public String toString() { - return "Opportunities{" + - "id=" + id + - ", name=" + name + - ", description=" + description + - ", url=" + url + - ", expiresOn=" + expiresOn + - ", submittedOn=" + submittedOn + - ", submittedBy=" + submittedBy + - ", pending=" + pending + - '}'; - } - @Override - public int hashCode() { - return Objects.hash(id, name, description, url, expiresOn, submittedOn, submittedBy, pending); - } -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java deleted file mode 100644 index 906037eb25..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesController.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.annotation.Body; -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Delete; -import io.micronaut.http.annotation.Get; -import io.micronaut.http.annotation.Post; -import io.micronaut.http.annotation.Put; -import io.micronaut.http.annotation.Status; -import io.micronaut.scheduling.TaskExecutors; -import io.micronaut.scheduling.annotation.ExecuteOn; -import io.micronaut.security.annotation.Secured; -import io.micronaut.security.rules.SecurityRule; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.net.URI; -import java.util.List; -import java.util.UUID; - -@Controller("/services/opportunities") -@ExecuteOn(TaskExecutors.BLOCKING) -@Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name = "opportunities") -public class OpportunitiesController { - - private final OpportunitiesService opportunitiesResponseServices; - - public OpportunitiesController(OpportunitiesService opportunitiesResponseServices) { - this.opportunitiesResponseServices = opportunitiesResponseServices; - } - - /** - * Find opportunities by Name or Description or submittedBy. - * - * @param name {@link String} - * @param description {@link String} - * @param submittedBy {@link UUID} of member - * @return list of opportunities - */ - @Get("/{?name,description,submittedBy}") - public List findOpportunities(@Nullable String name, - @Nullable String description, @Nullable UUID submittedBy) { - return opportunitiesResponseServices.findByFields(name, description, submittedBy); - } - - /** - * Create and save a new Opportunity. - * - * @param opportunitiesResponse, {@link OpportunitiesCreateDTO} - * @return {@link HttpResponse} - */ - - @Post - public HttpResponse createOpportunities(@Body @Valid OpportunitiesCreateDTO opportunitiesResponse, - HttpRequest request) { - Opportunities opportunities = opportunitiesResponseServices.save(new Opportunities(opportunitiesResponse.getName(), - opportunitiesResponse.getDescription(), opportunitiesResponse.getUrl(), - opportunitiesResponse.getExpiresOn(), opportunitiesResponse.getPending())); - return HttpResponse.created(opportunities) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), opportunities.getId())))); - } - - /** - * Update an Opportunity - * - * @param opportunitiesResponse, {@link Opportunities} - * @return {@link HttpResponse} - */ - @Put - public HttpResponse update(@Body @Valid @NotNull Opportunities opportunitiesResponse, - HttpRequest request) { - Opportunities updatedOpportunities = opportunitiesResponseServices.update(opportunitiesResponse); - return HttpResponse.ok(updatedOpportunities) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedOpportunities.getId())))); - - } - - /** - * Delete an opportunity - * - * @param id, id of {@link Opportunities} to delete - */ - @Delete("/{id}") - @Status(HttpStatus.OK) - public void deleteOpportunities(@NotNull UUID id) { - opportunitiesResponseServices.delete(id); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesCreateDTO.java deleted file mode 100644 index 3f62a9ecbd..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesCreateDTO.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import io.micronaut.core.annotation.Introspected; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDate; - -@Getter -@Setter -@Introspected -public class OpportunitiesCreateDTO { - - @NotNull - @Schema(description = "name of the opportunity") - private String name; - - @NotNull - @Schema(description = "description of the opportunity") - private String description; - - @NotNull - @Schema(description = "link to the url") - private String url; - - @NotNull - @Schema(description = "date for expiresOn") - private LocalDate expiresOn; - - @NotNull - @Schema(description = "state of the associated opportunity") - private Boolean pending; - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesRepository.java deleted file mode 100644 index 213591d7d4..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesRepository.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import io.micronaut.core.annotation.Nullable; -import io.micronaut.data.annotation.Query; -import io.micronaut.data.jdbc.annotation.JdbcRepository; -import io.micronaut.data.model.query.builder.sql.Dialect; -import io.micronaut.data.repository.CrudRepository; - -import java.util.List; -import java.util.UUID; - -@JdbcRepository(dialect = Dialect.POSTGRES) -public interface OpportunitiesRepository extends CrudRepository { - - @Query(value = "SELECT id, " + - "PGP_SYM_DECRYPT(cast(name as bytea),'${aes.key}') as name, " + - "PGP_SYM_DECRYPT(cast(description as bytea),'${aes.key}') as description, " + - "PGP_SYM_DECRYPT(cast(url as bytea),'${aes.key}') as url, " + - "expiresOn, submittedOn, submittedBy, pending " + - "FROM opportunities op " + - "WHERE (:name IS NULL OR PGP_SYM_DECRYPT(cast(op.name as bytea),'${aes.key}') = :name) " + - "AND (:description IS NULL OR PGP_SYM_DECRYPT(cast(op.description as bytea),'${aes.key}') = :description) " + - "AND (:submittedBy IS NULL OR op.submittedBy = :submittedBy)", nativeQuery = true) - List searchByValues( @Nullable String name, - @Nullable String description, - @Nullable String submittedBy); - -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesService.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesService.java deleted file mode 100644 index 1100c21dab..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import java.util.List; -import java.util.UUID; - -public interface OpportunitiesService { - - Opportunities save(Opportunities opportunitiesResponse); - - Opportunities update(Opportunities opportunitiesResponse); - - void delete(UUID id); - - List findByFields(String name, String description, UUID submittedBy); - -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesServicesImpl.java deleted file mode 100644 index e3b3bac3f3..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesServicesImpl.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import com.objectcomputing.checkins.exceptions.BadArgException; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import com.objectcomputing.checkins.services.memberprofile.MemberProfileRepository; -import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; -import com.objectcomputing.checkins.services.validate.PermissionsValidation; -import jakarta.inject.Singleton; -import jakarta.validation.constraints.NotNull; - -import java.time.LocalDate; -import java.util.List; -import java.util.UUID; - -import static com.objectcomputing.checkins.util.Util.nullSafeUUIDToString; - -@Singleton -public class OpportunitiesServicesImpl implements OpportunitiesService { - - private final OpportunitiesRepository opportunitiesResponseRepo; - private final MemberProfileRepository memberRepo; - private final PermissionsValidation permissionsValidation; - private final CurrentUserServices currentUserServices; - - public OpportunitiesServicesImpl(OpportunitiesRepository opportunitiesResponseRepo, - MemberProfileRepository memberRepo, - PermissionsValidation permissionsValidation, - CurrentUserServices currentUserServices) { - this.opportunitiesResponseRepo = opportunitiesResponseRepo; - this.memberRepo = memberRepo; - this.permissionsValidation = permissionsValidation; - this.currentUserServices = currentUserServices; - } - - @Override - public Opportunities save(Opportunities opportunitiesResponse) { - Opportunities opportunitiesResponseRet = null; - if(opportunitiesResponse!=null){ - MemberProfile member = currentUserServices.getCurrentUser(); - if(member!=null) { - opportunitiesResponse.setSubmittedBy(member.getId()); - opportunitiesResponse.setSubmittedOn(LocalDate.now()); - } - if(opportunitiesResponse.getId()!=null){ - throw new BadArgException(String.format("Found unexpected id for opportunities %s", opportunitiesResponse.getId())); - } - opportunitiesResponseRet = opportunitiesResponseRepo.save(opportunitiesResponse); - } - return opportunitiesResponseRet ; - } - - @Override - public Opportunities update(Opportunities opportunitiesResponse) { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - Opportunities opportunitiesResponseRet = null; - if(opportunitiesResponse!=null){ - final UUID id = opportunitiesResponse.getId(); - final UUID memberId = opportunitiesResponse.getSubmittedBy(); - LocalDate surSubDate = opportunitiesResponse.getSubmittedOn(); - if(id==null||opportunitiesResponseRepo.findById(id).isEmpty()){ - throw new BadArgException(String.format("Unable to find opportunities record with id %s", opportunitiesResponse.getId())); - }else if(memberRepo.findById(memberId).isEmpty()){ - throw new BadArgException(String.format("Member %s doesn't exist", memberId)); - } else if(memberId==null) { - throw new BadArgException(String.format("Invalid opportunities %s", opportunitiesResponse)); - } else if(surSubDate.isBefore(LocalDate.EPOCH) || surSubDate.isAfter(LocalDate.MAX)) { - throw new BadArgException(String.format("Invalid date for opportunities submission date %s",memberId)); - } - - opportunitiesResponseRet = opportunitiesResponseRepo.update(opportunitiesResponse); - } - return opportunitiesResponseRet; - } - - @Override - public void delete(@NotNull UUID id) { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - opportunitiesResponseRepo.deleteById(id); - } - - @Override - public List findByFields(String name, String description,UUID submittedBy) { - return opportunitiesResponseRepo.searchByValues(name, description, nullSafeUUIDToString(submittedBy)); - } -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategory.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategory.java deleted file mode 100644 index ac7e67b4ce..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategory.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import io.micronaut.core.annotation.Introspected; -import io.micronaut.data.annotation.AutoPopulated; -import io.micronaut.data.annotation.TypeDef; -import io.micronaut.data.model.DataType; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import jakarta.validation.constraints.NotBlank; -import lombok.Getter; -import lombok.Setter; - -import java.util.Objects; -import java.util.UUID; - -@Entity -@Getter -@Setter -@Introspected -@Table(name = "question_categories") -public class QuestionCategory { - - @Id - @Column(name="id") - @AutoPopulated - @TypeDef(type= DataType.STRING) - @Schema(description = "id of the question category this entry is associated with") - private UUID id; - - @NotBlank - @Column(name="name") - @Schema(description = "name of the category for the question") - private String name; - - public QuestionCategory(UUID id, @NotBlank String name) { - this.id = id; - this.name = name; - } - - public QuestionCategory(@NotBlank String name) { - this(null, name); - } - - public QuestionCategory() {} - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof QuestionCategory)) return false; - QuestionCategory that = (QuestionCategory) o; - return getId().equals(that.getId()) && getName().equals(that.getName()); - } - - @Override - public int hashCode() { - return Objects.hash(id, name); - } - - @Override - public String toString() { - return "QuestionCategory{" + - "id=" + id + - ", name='" + name + '\'' + - '}'; - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java deleted file mode 100644 index f133d4911e..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryController.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.annotation.Body; -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Delete; -import io.micronaut.http.annotation.Get; -import io.micronaut.http.annotation.Post; -import io.micronaut.http.annotation.Put; -import io.micronaut.http.annotation.Status; -import io.micronaut.scheduling.TaskExecutors; -import io.micronaut.scheduling.annotation.ExecuteOn; -import io.micronaut.security.annotation.Secured; -import io.micronaut.security.rules.SecurityRule; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.net.URI; -import java.util.Set; -import java.util.UUID; - -@Controller("/services/question-categories") -@ExecuteOn(TaskExecutors.BLOCKING) -@Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name = "question-categories") -public class QuestionCategoryController { - - private final QuestionCategoryServices questionCategoryService; - - public QuestionCategoryController(QuestionCategoryServices questionCategoryService) { - this.questionCategoryService = questionCategoryService; - } - - /** - * Create and save a new question category. - * - * @param questionCategory, {@link QuestionCategoryCreateDTO} - * @return {@link HttpResponse} - */ - - @Post - public HttpResponse createAQuestionCategory(@Body @Valid QuestionCategoryCreateDTO questionCategory, - HttpRequest request) { - - QuestionCategory createdQuestionCategory = questionCategoryService.saveQuestionCategory(new QuestionCategory(questionCategory.getName())); - return HttpResponse.created(createdQuestionCategory) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdQuestionCategory.getId())))); - } - - /** - * Find and read a question category or categories given its id, or name, if both are blank get all question categories. - * - * @param id, id of the question category - * @param name, name of the question category - * @return {@link Set < QuestionCategory > list of Question Categories} - */ - - @Get("/{?id,name}") - public Set findByValue(@Nullable UUID id, @Nullable String name) { - return questionCategoryService.findByValue(name, id); - } - - /** - * Update a question Category. - * - * @param questionCategory, {@link QuestionCategory} - * @return {@link HttpResponse} - */ - @Put - public HttpResponse update(@Body @Valid QuestionCategory questionCategory, HttpRequest request) { - QuestionCategory updatedQuestionCategory = questionCategoryService.update(questionCategory); - return HttpResponse.ok(updatedQuestionCategory) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedQuestionCategory.getId())))); - } - - /** - * Delete A Question Category. - * - * @param id, id of {@link QuestionCategory} to delete - */ - @Delete("/{id}") - @Status(HttpStatus.OK) - public void deleteQuestionCategory(@NotNull UUID id) { - questionCategoryService.delete(id); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryCreateDTO.java deleted file mode 100644 index 7322335c1d..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryCreateDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import io.micronaut.core.annotation.Introspected; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Getter; -import lombok.Setter; - -@Setter -@Getter -@Introspected -public class QuestionCategoryCreateDTO { - @NotBlank - @Schema(description = "name of the category for the question") - private String name; - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryRepository.java deleted file mode 100644 index f9b53a8816..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import io.micronaut.data.jdbc.annotation.JdbcRepository; -import io.micronaut.data.model.query.builder.sql.Dialect; -import io.micronaut.data.repository.CrudRepository; - -import java.util.Optional; -import java.util.Set; -import java.util.UUID; - -@JdbcRepository(dialect = Dialect.POSTGRES) -public interface QuestionCategoryRepository extends CrudRepository { - Optional findById(UUID id); - Optional findByName(String name); - Set findByNameIlike(String name); - - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServices.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServices.java deleted file mode 100644 index 0f35b86d09..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServices.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import java.util.Set; -import java.util.UUID; - -public interface QuestionCategoryServices { - QuestionCategory saveQuestionCategory(QuestionCategory questionCategory); - QuestionCategory findById(UUID id); - QuestionCategory update(QuestionCategory questionCategory); - QuestionCategory findByName(String name); - Set findByValue(String name, UUID id); - boolean delete(UUID id); - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServicesImpl.java deleted file mode 100644 index a41914b7ec..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryServicesImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import com.objectcomputing.checkins.exceptions.AlreadyExistsException; -import com.objectcomputing.checkins.exceptions.BadArgException; -import com.objectcomputing.checkins.exceptions.NotFoundException; -import com.objectcomputing.checkins.exceptions.PermissionException; -import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; -import jakarta.inject.Singleton; -import jakarta.validation.constraints.NotNull; - -import java.util.HashSet; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; - -import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; - -@Singleton -public class QuestionCategoryServicesImpl implements QuestionCategoryServices { - - private final QuestionCategoryRepository questionCategoryRepository; - private final CurrentUserServices currentUserServices; - - public QuestionCategoryServicesImpl(QuestionCategoryRepository questionCategoryRepository, - CurrentUserServices currentUserServices) { - this.questionCategoryRepository = questionCategoryRepository; - this.currentUserServices = currentUserServices; - } - - @Override - public Set findByValue(String name, UUID id) { - Set categoryList = new HashSet<>(); - - if (name != null) { - categoryList.add(findByName(name)); - } else if (id != null) { - categoryList.add(findById(id)); - } else { - categoryList.addAll(questionCategoryRepository.findAll()); - } - - return categoryList; - } - - @Override - public QuestionCategory saveQuestionCategory(QuestionCategory questionCategory) { - if (!currentUserServices.isAdmin()) { - throw new PermissionException(NOT_AUTHORIZED_MSG); - } - - if (questionCategory.getId() != null) { - throw new BadArgException(String.format("Found unexpected id %s for category, please try updating instead.", - questionCategory.getId())); - } else if (questionCategoryRepository.findByName(questionCategory.getName()).isPresent()) { - throw new AlreadyExistsException(String.format("Category %s already exists. ", questionCategory.getName())); - } - return questionCategoryRepository.save(questionCategory); - } - - @Override - public QuestionCategory findById(@NotNull UUID id) { - return questionCategoryRepository.findById(id).orElseThrow(() -> - new NotFoundException(String.format("No question category for id %s", id))); - } - - @Override - public QuestionCategory findByName(String name) { - if (name != null) { - return questionCategoryRepository.findByName(name).orElseThrow(() -> - new NotFoundException(String.format("No question category for name %s", name))); - } else { - throw new BadArgException("Name must not be null"); - } - } - - @Override - public QuestionCategory update(@NotNull QuestionCategory questionCategory) { - QuestionCategory updatedQuestionCategory = null; - if (questionCategory.getId() != null) { - updatedQuestionCategory = getById(questionCategory.getId()); - } - if (updatedQuestionCategory != null) { - if (!currentUserServices.isAdmin()) { - throw new PermissionException(NOT_AUTHORIZED_MSG); - } - return questionCategoryRepository.update(questionCategory); - } else { - throw new BadArgException("This question category does not exist"); - } - } - - @Override - public boolean delete(@NotNull UUID id) { - final Optional questionCategory = questionCategoryRepository.findById(id); - if (questionCategory.isEmpty()) { - throw new NotFoundException("No question category with id " + id); - } - if (!currentUserServices.isAdmin()) { - throw new PermissionException(NOT_AUTHORIZED_MSG); - } - questionCategoryRepository.deleteById(id); - return true; - } - - protected QuestionCategory getById(@NotNull UUID id) { - final Optional questionCategory = questionCategoryRepository.findById(id); - if (questionCategory.isEmpty()) { - throw new NotFoundException("No category with id " + id); - } - return questionCategory.get(); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/Question.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/Question.java index 7c6c36b2d8..783c5ee287 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/Question.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/Question.java @@ -37,17 +37,6 @@ public class Question { @Schema(description = "text of the question being asked") private String text; - @Nullable - @Column(name="categoryid") - @TypeDef(type= DataType.STRING) - @Schema(description = "id of the category this question is associated with") - private UUID categoryId; - - public Question(@NotBlank String text, @Nullable UUID categoryId) { - this.text = text; - this.categoryId = categoryId; - } - public Question(@NotBlank String text) { this.text = text; } @@ -61,13 +50,12 @@ public boolean equals(Object o) { if (!(o instanceof Question)) return false; Question question = (Question) o; return Objects.equals(id, question.id) && - Objects.equals(text, question.text) && - Objects.equals(categoryId, question.categoryId); + Objects.equals(text, question.text); } @Override public int hashCode() { - return Objects.hash(id, text, categoryId); + return Objects.hash(id, text); } @Override @@ -75,7 +63,6 @@ public String toString() { return "Question{" + "id=" + id + ", text='" + text + '\'' + - ", categoryId=" + categoryId + '}'; } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionController.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionController.java index 38ce1da406..82e7ec57d1 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionController.java @@ -62,19 +62,16 @@ public QuestionResponseDTO getById(UUID id) { } /** - * Find questions with a particular string, a particular categoryId or read all questions. + * Find questions with a particular string, or read all questions. * * @param text, the text of the question - * @param categoryId, the category id of the question * @return {@link Set} */ - @Get("/{?text,categoryId}") - Set findByText(@Nullable String text, @Nullable UUID categoryId) { + @Get("/{?text}") + Set findByText(@Nullable String text) { Set questions; if (text != null) { questions = questionService.findByText(text); - } else if (categoryId != null) { - questions = questionService.findByCategoryId(categoryId); } else { questions = questionService.readAllQuestions(); } @@ -104,9 +101,6 @@ private QuestionResponseDTO fromModel(Question question) { QuestionResponseDTO qrdto = new QuestionResponseDTO(); qrdto.setId(question.getId()); qrdto.setText(question.getText()); - if (question.getCategoryId() != null) { - qrdto.setCategoryId(question.getCategoryId()); - } return qrdto; } @@ -114,18 +108,12 @@ private Question toModel(QuestionUpdateDTO dto) { Question model = new Question(); model.setId(dto.getId()); model.setText(dto.getText()); - if (dto.getCategoryId() != null) { - model.setCategoryId(dto.getCategoryId()); - } return model; } private Question toModel(QuestionCreateDTO dto) { Question model = new Question(); model.setText(dto.getText()); - if (dto.getCategoryId() != null) { - model.setCategoryId(dto.getCategoryId()); - } return model; } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionCreateDTO.java index ad3d4457e1..04db875647 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionCreateDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionCreateDTO.java @@ -15,8 +15,4 @@ public class QuestionCreateDTO { @NotBlank @Schema(description = "text of the question being asked") private String text; - - @Schema(description = "category id of the question being asked") - private UUID categoryId; - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionRepository.java index 5f263d365d..e88191d35e 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionRepository.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionRepository.java @@ -12,6 +12,5 @@ public interface QuestionRepository extends CrudRepository { Set findByText(String name); Set findByTextIlike(String name); - Set findByCategoryId(UUID categoryId); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionResponseDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionResponseDTO.java index 4197cb68fb..f6845e31ab 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionResponseDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionResponseDTO.java @@ -19,9 +19,4 @@ public class QuestionResponseDTO { @NotBlank @Schema(description = "text of the question being asked") private String text; - - @Nullable - @Schema(description="id of the category of the question") - private UUID categoryId; - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServices.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServices.java index 52a5fcb871..111eb3e25b 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServices.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServices.java @@ -9,5 +9,4 @@ public interface QuestionServices { Question findById(UUID id); Question update(Question question); Set findByText(String text); - Set findByCategoryId(UUID categoryId); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServicesImpl.java index 5eb376bb30..d7c27aea26 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServicesImpl.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionServicesImpl.java @@ -65,9 +65,4 @@ public Question update(Question question) { return returned; } - - public Set findByCategoryId(@NotNull UUID categoryId) { - return questionRepository.findByCategoryId(categoryId); - } - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionUpdateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionUpdateDTO.java index fed8c2e8f6..3ca43b5535 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionUpdateDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/questions/QuestionUpdateDTO.java @@ -20,8 +20,4 @@ public class QuestionUpdateDTO { @NotBlank @Schema(description = "text of the question being asked") private String text; - - @Schema(description = "id of the category of the question being asked") - private UUID categoryId; - } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/Survey.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/Survey.java deleted file mode 100644 index ac8261e5bc..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/Survey.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import com.objectcomputing.checkins.converter.LocalDateConverter; -import io.micronaut.core.annotation.Introspected; -import io.micronaut.data.annotation.AutoPopulated; -import io.micronaut.data.annotation.TypeDef; -import io.micronaut.data.annotation.sql.ColumnTransformer; -import io.micronaut.data.model.DataType; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDate; -import java.util.Objects; -import java.util.UUID; - -@Entity -@Getter -@Setter -@Introspected -@Table(name = "surveys") -public class Survey { - - @Id - @Column(name="id") - @AutoPopulated - @TypeDef(type=DataType.STRING) - @Schema(description = "the id of the survey") - private UUID id; - - @ColumnTransformer( - read = "pgp_sym_decrypt(name::bytea,'${aes.key}')", - write = "pgp_sym_encrypt(?,'${aes.key}') " - ) - @NotBlank - @Schema(description = "description of Name") - @Column(name="name") - private String name; - - @Column(name="description") - @ColumnTransformer( - read = "pgp_sym_decrypt(description::bytea,'${aes.key}')", - write = "pgp_sym_encrypt(?,'${aes.key}') " - ) - @NotBlank - @Schema(description = "description of Description") - private String description; - - @Column(name="createdon") - @NotNull - @Schema(description = "date for createdOn") - @TypeDef(type = DataType.DATE, converter = LocalDateConverter.class) - private LocalDate createdOn; - - @Column(name="createdby") - @TypeDef(type=DataType.STRING) - @NotNull - @Schema(description = "id of the teamMember this entry is associated with") - private UUID createdBy; - - public Survey(UUID id,LocalDate createdOn, UUID createdBy, String name, String description) { - this.id = id; - this.createdOn = createdOn; - this.createdBy = createdBy; - this.name = name; - this.description = description; - } - - public Survey(LocalDate createdOn, UUID createdBy, String name, String description) { - this(null,createdOn, createdBy, name, description); - } - - public Survey() { - - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - com.objectcomputing.checkins.services.survey.Survey that = (com.objectcomputing.checkins.services.survey.Survey) o; - return Objects.equals(id, that.id) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(createdOn, that.createdOn) && - Objects.equals(createdBy, that.createdBy); - } - - @Override - public String toString() { - return "Survey{" + - "id=" + id + - ", name=" + name + - ", description=" + description + - ", createdOn=" + createdOn + - ", createdBy=" + createdBy + - '}'; - } - @Override - public int hashCode() { - return Objects.hash(id, name, description, createdOn, createdBy); - } -} - - diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java deleted file mode 100644 index e2e71097ee..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyController.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.annotation.Body; -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Delete; -import io.micronaut.http.annotation.Get; -import io.micronaut.http.annotation.Post; -import io.micronaut.http.annotation.Put; -import io.micronaut.http.annotation.Status; -import io.micronaut.scheduling.TaskExecutors; -import io.micronaut.scheduling.annotation.ExecuteOn; -import io.micronaut.security.annotation.Secured; -import io.micronaut.security.rules.SecurityRule; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.net.URI; -import java.util.Set; -import java.util.UUID; - -@Controller("/services/surveys") -@ExecuteOn(TaskExecutors.BLOCKING) -@Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name = "survey") -public class SurveyController { - - private final SurveyService surveyResponseServices; - - public SurveyController(SurveyService surveyResponseServices) { - this.surveyResponseServices = surveyResponseServices; - } - - /** - * Find survey by Name, Team Member or Date Range. - * - * @param name - * @param createdBy - * @return - */ - @Get("/{?name,createdBy}") - public Set findSurveys(@Nullable String name, @Nullable UUID createdBy) { - if (name != null || createdBy != null) { - return surveyResponseServices.findByFields(name, createdBy); - } else { - return surveyResponseServices.readAll(); - } - } - - /** - * Create and save a new Survey. - * - * @param surveyResponse, {@link SurveyCreateDTO} - * @return {@link HttpResponse} - */ - @Post - public HttpResponse createSurvey(@Body @Valid SurveyCreateDTO surveyResponse, HttpRequest request) { - Survey survey = surveyResponseServices.save(new Survey(surveyResponse.getCreatedOn(), - surveyResponse.getCreatedBy(), surveyResponse.getName(), surveyResponse.getDescription())); - return HttpResponse.created(survey) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), survey.getId())))); - } - - /** - * Update a Survey - * - * @param surveyResponse, {@link Survey} - * @return {@link HttpResponse} - */ - @Put - public HttpResponse update(@Body @Valid @NotNull Survey surveyResponse, HttpRequest request) { - Survey updatedSurvey = surveyResponseServices.update(surveyResponse); - return HttpResponse.ok(updatedSurvey) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), updatedSurvey.getId())))); - } - - /** - * Delete A survey - * - * @param id, id of {@link Survey} to delete - */ - @Delete("/{id}") - @Status(HttpStatus.OK) - public void deleteSurvey(@NotNull UUID id) { - surveyResponseServices.delete(id); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyCreateDTO.java deleted file mode 100644 index bc0073693f..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyCreateDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import io.micronaut.core.annotation.Introspected; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDate; -import java.util.UUID; - -@Setter -@Getter -@Introspected -public class SurveyCreateDTO { - - @NotNull - @Schema(description = "description of internal feelings") - private String name; - - @NotNull - @Schema(description = "description of external feelings") - private String description; - - @NotNull - @Schema(description = "date for createdOn") - private LocalDate createdOn; - - @NotNull - @Schema(description = "id of the associated member") - private UUID createdBy; - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyRepository.java deleted file mode 100644 index d20b39d0f7..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import io.micronaut.data.jdbc.annotation.JdbcRepository; -import io.micronaut.data.model.query.builder.sql.Dialect; -import io.micronaut.data.repository.CrudRepository; -import jakarta.validation.constraints.NotNull; - -import java.util.Set; -import java.util.UUID; - -@JdbcRepository(dialect = Dialect.POSTGRES) -public interface SurveyRepository extends CrudRepository { - - Set findByCreatedBy(@NotNull UUID createdBy); -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyService.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyService.java deleted file mode 100644 index bb9b07305b..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import java.util.UUID; -import java.util.Set; - -public interface SurveyService { - - Set readAll(); - - Survey save(Survey surveyResponse); - - Survey update(Survey surveyResponse); - - void delete(UUID id); - - Set findByFields(String name, UUID createBy); - -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyServicesImpl.java deleted file mode 100644 index 74c5dd1d5a..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/survey/SurveyServicesImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import com.objectcomputing.checkins.exceptions.BadArgException; -import com.objectcomputing.checkins.services.memberprofile.MemberProfileRepository; -import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; -import com.objectcomputing.checkins.services.validate.PermissionsValidation; -import jakarta.inject.Singleton; -import jakarta.validation.constraints.NotNull; - -import java.time.LocalDate; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; - -@Singleton -public class SurveyServicesImpl implements SurveyService { - - private final SurveyRepository surveyResponseRepo; - private final MemberProfileRepository memberRepo; - private final PermissionsValidation permissionsValidation; - private final CurrentUserServices currentUserServices; - - public SurveyServicesImpl(SurveyRepository surveyResponseRepo, - MemberProfileRepository memberRepo, - PermissionsValidation permissionsValidation, - CurrentUserServices currentUserServices) { - this.surveyResponseRepo = surveyResponseRepo; - this.memberRepo = memberRepo; - this.permissionsValidation = permissionsValidation; - this.currentUserServices = currentUserServices; - } - - @Override - public Survey save(Survey surveyResponse) { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - Survey surveyResponseRet = null; - if (surveyResponse != null) { - final UUID memberId = surveyResponse.getCreatedBy(); - LocalDate surSubDate = surveyResponse.getCreatedOn(); - if (surveyResponse.getId() != null) { - throw new BadArgException(String.format("Found unexpected id for survey %s", surveyResponse.getId())); - } else if (memberRepo.findById(memberId).isEmpty()) { - throw new BadArgException(String.format("Member %s doesn't exists", memberId)); - } else if (surSubDate.isBefore(LocalDate.EPOCH) || surSubDate.isAfter(LocalDate.MAX)) { - throw new BadArgException(String.format("Invalid date for survey submission date %s", memberId)); - } - surveyResponseRet = surveyResponseRepo.save(surveyResponse); - } - return surveyResponseRet ; - } - - public Set readAll() { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - return new HashSet<>(surveyResponseRepo.findAll()); - } - - @Override - public Survey update(Survey surveyResponse) { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - Survey surveyResponseRet = null; - if (surveyResponse != null) { - final UUID id = surveyResponse.getId(); - final UUID memberId = surveyResponse.getCreatedBy(); - LocalDate surSubDate = surveyResponse.getCreatedOn(); - if (id == null || surveyResponseRepo.findById(id).isEmpty()) { - throw new BadArgException(String.format("Unable to find survey record with id %s", surveyResponse.getId())); - } else if (memberRepo.findById(memberId).isEmpty()) { - throw new BadArgException(String.format("Member %s doesn't exist", memberId)); - } else if (memberId == null) { - throw new BadArgException(String.format("Invalid survey %s", surveyResponse)); - } else if (surSubDate.isBefore(LocalDate.EPOCH) || surSubDate.isAfter(LocalDate.MAX)) { - throw new BadArgException(String.format("Invalid date for survey submission date %s", memberId)); - } - - surveyResponseRet = surveyResponseRepo.update(surveyResponse); - } - return surveyResponseRet; - } - - @Override - public void delete(@NotNull UUID id) { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - surveyResponseRepo.deleteById(id); - } - - @Override - public Set findByFields(String name, UUID createdBy) { - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - return surveyResponseRepo.findAll().stream() - .filter(survey -> (name == null || name.equals(survey.getName())) && - (createdBy == null || createdBy.equals(survey.getCreatedBy()))) - .collect(Collectors.toSet()); - } -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/Tag.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/Tag.java deleted file mode 100644 index e42a345922..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/Tag.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import io.micronaut.core.annotation.Introspected; -import io.micronaut.data.annotation.AutoPopulated; -import io.micronaut.data.annotation.TypeDef; -import io.micronaut.data.model.DataType; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -import java.util.Objects; -import java.util.UUID; - -@Setter -@Getter -@Entity -@Introspected -@Table(name = "tags") -public class Tag { - - @Id - @Column(name = "id") - @AutoPopulated - @TypeDef(type = DataType.STRING) - @Schema(description = "the id of the tag") - private UUID id; - - @NotNull - @Column(name = "name") - @Schema(description = "the name of the tag") - private String name; - - public Tag(@NotNull String name) { - this.name = name; - } - - public Tag() { - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Tag tag = (Tag) o; - return Objects.equals(id, tag.id) && Objects.equals(name, tag.name); - } - - @Override - public int hashCode() { - return Objects.hash(id, name); - } - -} \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java deleted file mode 100644 index 9a435ea7d8..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagController.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import com.objectcomputing.checkins.exceptions.NotFoundException; -import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.annotation.Body; -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Delete; -import io.micronaut.http.annotation.Get; -import io.micronaut.http.annotation.Post; -import io.micronaut.http.annotation.Put; -import io.micronaut.http.annotation.Status; -import io.micronaut.scheduling.TaskExecutors; -import io.micronaut.scheduling.annotation.ExecuteOn; -import io.micronaut.security.annotation.Secured; -import io.micronaut.security.rules.SecurityRule; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.net.URI; -import java.util.Set; -import java.util.UUID; - -@Controller("/services/tags") -@ExecuteOn(TaskExecutors.BLOCKING) -@Secured(SecurityRule.IS_AUTHENTICATED) -@io.swagger.v3.oas.annotations.tags.Tag(name = "tags") -public class TagController { - - private final TagServices tagServices; - - public TagController(TagServices tagServices) { - this.tagServices = tagServices; - } - - /** - * Create and save a new tag. - * - * @param tag, {@link TagCreateDTO} - * @return {@link HttpResponse< Tag >} - */ - @Post - public HttpResponse createTag(@Body @Valid @NotNull TagCreateDTO tag, HttpRequest request) { - Tag createdTag = tagServices.save(new Tag(tag.getName())); - return HttpResponse.created(createdTag) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdTag.getId())))); - } - - /** - * Delete tag - * - * @param id, id of {@link Tag} to delete - */ - @Delete("/{id}") - @Status(HttpStatus.OK) - public void deleteTag(UUID id) { - tagServices.delete(id); - } - - /** - * Get tag based off id - * - * @param id {@link UUID} of the tag entry - * @return {@link Tag} - */ - @Get("/{id}") - public Tag readTag(@NotNull UUID id) { - Tag result = tagServices.read(id); - if (result == null) { - throw new NotFoundException("No tag for UUID"); - } - return result; - } - - /** - * Find tag that match all filled in parameters, return all results when given no params - * - * @param name {@link String} of tag - * @return {@link Set set of tags - */ - @Get("/{?name}") - public Set findTags(@Nullable String name) { - return tagServices.findByFields(name); - } - - /** - * Update a tag - * - * @param tag, {@link Tag} - * @return {@link Tag} - */ - @Put - public HttpResponse update(@Body @Valid Tag tag, HttpRequest request) { - Tag tag1 = tagServices.update(tag); - return HttpResponse.ok(tag1) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), tag1.getId())))); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagCreateDTO.java deleted file mode 100644 index a3fdf4568a..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagCreateDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import io.micronaut.core.annotation.Introspected; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -@Setter -@Getter -@Introspected -public class TagCreateDTO { - - @NotNull - @Schema(description = "the name of the tag") - private String name; - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagRepository.java deleted file mode 100644 index 237f39d3b5..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagRepository.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import io.micronaut.core.annotation.NonNull; -import io.micronaut.core.annotation.Nullable; -import io.micronaut.data.annotation.Query; -import io.micronaut.data.jdbc.annotation.JdbcRepository; -import io.micronaut.data.model.query.builder.sql.Dialect; -import io.micronaut.data.repository.CrudRepository; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.util.List; -import java.util.Set; -import java.util.UUID; - - -@JdbcRepository(dialect = Dialect.POSTGRES) -public interface TagRepository extends CrudRepository{ - - @Query("SELECT * " + - "FROM tags tag " + - "WHERE (:name IS NULL OR UPPER(tag.name) = UPPER(:name)) " ) - Set search(@Nullable String name); - - @Override - List saveAll(@Valid @NotNull Iterable tags); - - @Override - S save(@Valid @NotNull @NonNull S tag); - - List findByNameIlike(String name); -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagServices.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagServices.java deleted file mode 100644 index f533c7ec90..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagServices.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import java.util.Set; -import java.util.UUID; - -public interface TagServices { - - Tag read(UUID uuid); - - Tag save(Tag tag); - - Tag update(Tag tag); - - Set findByFields(String name); - - void delete(UUID id); -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/TagServicesImpl.java deleted file mode 100644 index b404155f5c..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/TagServicesImpl.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import com.objectcomputing.checkins.exceptions.AlreadyExistsException; -import com.objectcomputing.checkins.exceptions.BadArgException; -import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; -import com.objectcomputing.checkins.services.validate.PermissionsValidation; -import jakarta.inject.Singleton; -import jakarta.validation.constraints.NotNull; - -import java.util.Set; -import java.util.UUID; - -@Singleton -public class TagServicesImpl implements TagServices { - - private final TagRepository tagRepository; - private final CurrentUserServices currentUserServices; - private final PermissionsValidation permissionsValidation; - - public TagServicesImpl(TagRepository tagRepository, CurrentUserServices currentUserServices, PermissionsValidation permissionsValidation) { - this.tagRepository = tagRepository; - this.currentUserServices = currentUserServices; - this.permissionsValidation = permissionsValidation; - } - - public Tag save(Tag tag) { - - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - Tag tagToReturn = null; - if (tag != null) { - if (tag.getId() != null) { - throw new BadArgException(String.format("Found unexpected id %s for tag", tag.getId())); - } else if (!tagRepository.findByNameIlike(tag.getName()).isEmpty()) { - throw new AlreadyExistsException(String.format("A tag named %s already exists.", tag.getName())); - } - - tagToReturn = tagRepository.save(tag); - } - return tagToReturn; - - } - - public Tag read(@NotNull UUID uuid) { - return tagRepository.findById(uuid).orElse(null); - } - - public Set findByFields(String name) { - return tagRepository.search(name); - } - - public Tag update(@NotNull Tag tag) { - - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - Tag newTag = null; - - if (tag.getId() != null && tagRepository.findById(tag.getId()).isPresent()) { - newTag = tagRepository.update(tag); - } else { - throw new BadArgException(String.format("tag %s does not exist, cannot update", tag.getId())); - } - - return newTag; - - } - - public void delete(@NotNull UUID id) { - - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - tagRepository.deleteById(id); - } - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTag.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTag.java deleted file mode 100644 index 3f74186106..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTag.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.objectcomputing.checkins.services.tags.entityTag; - -import com.objectcomputing.checkins.exceptions.BadArgException; -import io.micronaut.data.annotation.AutoPopulated; -import io.micronaut.data.annotation.TypeDef; -import io.micronaut.data.model.DataType; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import jakarta.validation.constraints.NotNull; -import lombok.NoArgsConstructor; - -import java.util.Objects; -import java.util.UUID; - -@Entity -@NoArgsConstructor -@Table(name ="entity_tags") -public class EntityTag { - - @Id - @Column(name = "id") - @AutoPopulated - @TypeDef(type = DataType.STRING) - @Schema(description = "the id of the entity tag") - private UUID id; - - @NotNull - @TypeDef(type = DataType.STRING) - @Column(name = "entity_id") - @Schema(description = "the id of the entity") - private UUID entityId; - - @NotNull - @Column(name = "type") - @TypeDef(type = DataType.STRING) - @Schema(description = "the type of the entity being tagged") - private EntityType type; - - @NotNull - @TypeDef(type = DataType.STRING) - @Column(name = "tag_id") - @Schema(description = "the id of the tag") - private UUID tagId; - - public enum EntityType { - SKILL(0), - TEAM(1); - - private final int value; - - EntityType(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - public static EntityType convertFromString(@NotNull String type) { - final String typelc = type.toLowerCase(); - switch (typelc) { - case "skill": - return EntityType.SKILL; - case "team": - return EntityType.TEAM; - default: - throw new BadArgException(String.format("Invalid type %s", type)); - } - } - } - - public EntityTag(UUID id, @NotNull UUID entityId, @NotNull UUID tagId, @NotNull EntityType type) { - this.id = id; - this.entityId = entityId; - this.type = type; - this.tagId = tagId; - } - - public EntityTag(@NotNull UUID entityId, @NotNull UUID tagId, @NotNull EntityType type) { - this.entityId = entityId; - this.type = type; - this.tagId = tagId; - } - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public UUID getEntityId() { - return entityId; - } - - public void setEntityId(UUID entityId) { - this.entityId = entityId; - } - - public EntityType getType() { - return type; - } - - public void setType(EntityType type) { - this.type = type; - } - - public UUID getTagId() { - return tagId; - } - - public void setTagId(UUID tagId) { - this.tagId = tagId; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - EntityTag entityTag = (EntityTag) o; - return id.equals(entityTag.id) && - entityId.equals(entityTag.entityId) && - type.equals(entityTag.type) && - tagId.equals(entityTag.tagId); - } - - @Override - public int hashCode() { - return Objects.hash(id, entityId, type, tagId); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java deleted file mode 100644 index 0dd129a550..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagController.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.objectcomputing.checkins.services.tags.entityTag; - -import com.objectcomputing.checkins.exceptions.NotFoundException; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; -import io.micronaut.core.annotation.Nullable; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.annotation.Body; -import io.micronaut.http.annotation.Controller; -import io.micronaut.http.annotation.Delete; -import io.micronaut.http.annotation.Get; -import io.micronaut.http.annotation.Post; -import io.micronaut.http.annotation.Status; -import io.micronaut.scheduling.TaskExecutors; -import io.micronaut.scheduling.annotation.ExecuteOn; -import io.micronaut.security.annotation.Secured; -import io.micronaut.security.rules.SecurityRule; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.net.URI; -import java.util.Set; -import java.util.UUID; - -@Controller("/services/entity-tags") -@ExecuteOn(TaskExecutors.BLOCKING) -@Secured(SecurityRule.IS_AUTHENTICATED) -@Tag(name = "entity-tags") - -public class EntityTagController { - - private final EntityTagServices entityTagServices; - - public EntityTagController(EntityTagServices entityTagServices) { - this.entityTagServices = entityTagServices; - } - - /** - * Create and save a new entity tag. - * - * @param entityTag, {@link EntityTagCreateDTO} - * @return {@link HttpResponse< EntityTag >} - */ - @Post - public HttpResponse createAEntityTag(@Body @Valid @NotNull EntityTagCreateDTO entityTag, HttpRequest request) { - EntityTag createdEntityTag = entityTagServices.save(new EntityTag(entityTag.getEntityId(), entityTag.getTagId(), entityTag.getType())); - return HttpResponse.created(createdEntityTag) - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getPath(), createdEntityTag.getId())))); - } - - /** - * Delete Entity Tag - * - * @param id, id of {@link EntityTag} to delete - */ - @Delete("/{id}") - @Status(HttpStatus.OK) - public void deleteEntityTag(@NotNull UUID id) { - entityTagServices.delete(id); - } - - /** - * Get EntityTag based off id - * - * @param id {@link UUID} of the entity tag entry - * @return {@link EntityTag} - */ - @Get("/{id}") - public EntityTag readEntityTag(@NotNull UUID id) { - EntityTag result = entityTagServices.read(id); - if (result == null) { - throw new NotFoundException("No entity tag for UUID"); - } - return result; - } - - /** - * Find Entity Tags that match all filled in parameters, return all results when given no params - * - * @param entityId {@link UUID} of entity tag - * @param tagId {@link UUID} of tags - * @return set of Entity Tags - */ - @Get("/{?entityId,tagId}") - public Set findEntityTag(@Nullable UUID entityId, @Nullable UUID tagId, @Nullable EntityType type) { - return entityTagServices.findByFields(entityId, tagId, type); - } -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagCreateDTO.java deleted file mode 100644 index 2e300865ca..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagCreateDTO.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.objectcomputing.checkins.services.tags.entityTag; - -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; -import io.micronaut.core.annotation.Introspected; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -import java.util.UUID; - -@Setter -@Getter -@Introspected -public class EntityTagCreateDTO { - - @NotNull - @Schema(description = "the id of the entity") - private UUID entityId; - - @NotNull - @Schema(description = "the id of the tag") - private UUID tagId; - - @NotNull - @Schema(description = "the type of the entity tag") - private EntityType type; - - -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagRepository.java deleted file mode 100644 index 5870802096..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagRepository.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.objectcomputing.checkins.services.tags.entityTag; - -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; -import io.micronaut.core.annotation.NonNull; -import io.micronaut.core.annotation.Nullable; -import io.micronaut.data.annotation.Query; -import io.micronaut.data.jdbc.annotation.JdbcRepository; -import io.micronaut.data.model.query.builder.sql.Dialect; -import io.micronaut.data.repository.CrudRepository; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; - -import java.util.List; -import java.util.Set; -import java.util.UUID; - -@JdbcRepository(dialect = Dialect.POSTGRES) -public interface EntityTagRepository extends CrudRepository { - - @Query("SELECT * " + - "FROM entity_tags EntityTag " + - "WHERE (:entityId IS NULL OR EntityTag.entity_id = :entityId) " + - "AND (:type IS NULL OR EntityTag.type = :type) " + - "AND (:tagId IS NULL OR EntityTag.tag_id = :tagId) " ) - Set search(@Nullable String entityId, @Nullable String tagId, @Nullable EntityType type); - - - @Override - List saveAll(@Valid @NotNull Iterable tags); - - @Override - S save(@Valid @NotNull @NonNull S tag); -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServices.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServices.java deleted file mode 100644 index cf36d3335c..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServices.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.objectcomputing.checkins.services.tags.entityTag; - -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; - -import java.util.Set; -import java.util.UUID; - -public interface EntityTagServices { - - EntityTag read(UUID uuid); - - EntityTag save(EntityTag entityTag); - - EntityTag update(EntityTag entityTag); - - Set findByFields(UUID entityId, UUID tagId, EntityType type); - - void delete(UUID id); -} diff --git a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServicesImpl.java deleted file mode 100644 index d6b4f8bf67..0000000000 --- a/server/src/main/java/com/objectcomputing/checkins/services/tags/entityTag/EntityTagServicesImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.objectcomputing.checkins.services.tags.entityTag; - -import com.objectcomputing.checkins.exceptions.BadArgException; -import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; -import com.objectcomputing.checkins.services.tags.TagRepository; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; -import com.objectcomputing.checkins.services.validate.PermissionsValidation; -import jakarta.inject.Singleton; -import jakarta.validation.constraints.NotNull; - -import java.util.Set; -import java.util.UUID; - -import static com.objectcomputing.checkins.util.Util.nullSafeUUIDToString; - -@Singleton -public class EntityTagServicesImpl implements EntityTagServices { - - private final EntityTagRepository entityTagRepository; - private final TagRepository tagRepository; - private final CurrentUserServices currentUserServices; - private final PermissionsValidation permissionsValidation; - - public EntityTagServicesImpl(EntityTagRepository entityTagRepository, - TagRepository tagRepository, - CurrentUserServices currentUserServices, - PermissionsValidation permissionsValidation) { - this.entityTagRepository = entityTagRepository; - this.tagRepository = tagRepository; - this.currentUserServices = currentUserServices; - this.permissionsValidation = permissionsValidation; - } - - public EntityTag save(EntityTag entityTag) { - - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - EntityTag entityTagToReturn = null; - if (entityTag != null) { - final UUID entityId = entityTag.getEntityId(); - final UUID tagId = entityTag.getTagId(); - if (entityId == null || tagId == null) { - throw new BadArgException(String.format("Invalid entity tag %s", entityTag)); - } else if (entityTag.getId() != null) { - throw new BadArgException(String.format("Found unexpected id %s for entity tag", entityTag.getId())); - } else if (tagRepository.findById(tagId).isEmpty()) { - throw new BadArgException(String.format("Tag %s doesn't exist", tagId)); - } - - entityTagToReturn = entityTagRepository.save(entityTag); - } - return entityTagToReturn; - - } - - public EntityTag read(@NotNull UUID id) { - return entityTagRepository.findById(id).orElse(null); - } - - public Set findByFields(UUID entityId, UUID tagId, EntityType type) { - return entityTagRepository.search(nullSafeUUIDToString(entityId), nullSafeUUIDToString(tagId), type); - } - - public EntityTag update(@NotNull EntityTag entityTag) { - - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - EntityTag newEntityTag = null; - - if (entityTag.getId() != null && entityTagRepository.findById(entityTag.getId()).isPresent()) { - newEntityTag = entityTagRepository.update(entityTag); - } else { - throw new BadArgException(String.format("Entity tag %s does not exist, cannot update", entityTag.getId())); - } - - return newEntityTag; - - } - - - public void delete(@NotNull UUID id) { - - final boolean isAdmin = currentUserServices.isAdmin(); - permissionsValidation.validatePermissions(!isAdmin); - - entityTagRepository.deleteById(id); - } - - -} diff --git a/server/src/main/resources/db/common/V120__remove_unused_tables.sql b/server/src/main/resources/db/common/V120__remove_unused_tables.sql new file mode 100644 index 0000000000..41a1c39ee8 --- /dev/null +++ b/server/src/main/resources/db/common/V120__remove_unused_tables.sql @@ -0,0 +1,7 @@ +ALTER TABLE questions DROP column categoryId; + +drop table if exists opportunities; +drop table if exists question_categories; +drop table if exists surveys; +drop table if exists entity_tags; +drop table if exists tags; diff --git a/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java b/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java index 4948273bb2..9ced34c828 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java @@ -35,8 +35,6 @@ private void deleteAllEntities() { getVolunteeringOrganizationRepository().deleteAll(); getEarnedCertificationRepository().deleteAll(); getCertificationRepository().deleteAll(); - getEntityTagRepository().deleteAll(); - getTagRepository().deleteAll(); getPulseResponseRepository().deleteAll(); getCheckInNoteRepository().deleteAll(); getPrivateNoteRepository().deleteAll(); @@ -49,13 +47,10 @@ private void deleteAllEntities() { getSkillCategorySkillRepository().deleteAll(); getSkillCategoryRepository().deleteAll(); getSkillRepository().deleteAll(); - getQuestionCategoryRepository().deleteAll(); - getSurveyRepository().deleteAll(); getEmployeeHoursRepository().deleteAll(); getFeedbackAnswerRepository().deleteAll(); getTemplateQuestionRepository().deleteAll(); getSettingsRepository().deleteAll(); - getOpportunitiesRepository().deleteAll(); getDemographicsRepository().deleteAll(); getRolePermissionRepository().deleteAll(); getEmailRepository().deleteAll(); @@ -117,4 +112,4 @@ static String getPassword() { public EmbeddedServer getEmbeddedServer() { return embeddedServer; } -} \ No newline at end of file +} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/EntityTagFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/EntityTagFixture.java deleted file mode 100644 index a500d65400..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/EntityTagFixture.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.objectcomputing.checkins.services.fixture; - -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag; -import com.objectcomputing.checkins.services.tags.Tag; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; - -public interface EntityTagFixture extends RepositoryFixture{ - - default EntityTag createADefaultEntityTag(MemberProfile memberProfile, Tag tag, EntityType type) { - return getEntityTagRepository().save(new EntityTag(memberProfile.getId(), tag.getId(), type)); - } -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/OpportunitiesFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/OpportunitiesFixture.java deleted file mode 100644 index 8e10f32740..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/OpportunitiesFixture.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.objectcomputing.checkins.services.fixture; - -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import com.objectcomputing.checkins.services.opportunities.Opportunities; - -import java.time.LocalDate; - -public interface OpportunitiesFixture extends RepositoryFixture { - default Opportunities createADefaultOpportunities(MemberProfile memberprofile) { - return getOpportunitiesRepository().save(new Opportunities("Name", "Description","https://objectcomputing.com/jobs", LocalDate.now(), LocalDate.now(), - memberprofile.getId(), false)); - } -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionCategoryFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionCategoryFixture.java deleted file mode 100644 index b773e89be6..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionCategoryFixture.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.objectcomputing.checkins.services.fixture; - -import com.objectcomputing.checkins.services.question_category.QuestionCategory; - -public interface QuestionCategoryFixture extends RepositoryFixture { - default QuestionCategory createADefaultQuestionCategory() { - return getQuestionCategoryRepository().save(new QuestionCategory("Serious")); - } - - default QuestionCategory createASecondaryQuestionCategory() { - return getQuestionCategoryRepository().save(new QuestionCategory("Personal")); - } -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionFixture.java index f21af6f3d7..cd40829036 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionFixture.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/fixture/QuestionFixture.java @@ -9,8 +9,4 @@ public interface QuestionFixture extends RepositoryFixture { default Question createADefaultQuestion() { return getQuestionRepository().save(new Question("How do you feel about Sluggo?")); } - - default Question createADefaultQuestionWithCategory(UUID categoryId) { - return getQuestionRepository().save(new Question("Can I ask a silly question?", categoryId)); - } } diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/RepositoryFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/RepositoryFixture.java index 2e3cd798e0..eba62d2b6e 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/RepositoryFixture.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/fixture/RepositoryFixture.java @@ -25,7 +25,6 @@ import com.objectcomputing.checkins.services.memberprofile.csvreport.MemberProfileReportRepository; import com.objectcomputing.checkins.services.private_notes.PrivateNoteRepository; import com.objectcomputing.checkins.services.pulseresponse.PulseResponseRepository; -import com.objectcomputing.checkins.services.question_category.QuestionCategoryRepository; import com.objectcomputing.checkins.services.questions.QuestionRepository; import com.objectcomputing.checkins.services.reviews.ReviewAssignmentRepository; import com.objectcomputing.checkins.services.reviews.ReviewPeriodRepository; @@ -36,8 +35,6 @@ import com.objectcomputing.checkins.services.skillcategory.SkillCategoryRepository; import com.objectcomputing.checkins.services.skillcategory.skillcategory_skill.SkillCategorySkillRepository; import com.objectcomputing.checkins.services.skills.SkillRepository; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTagRepository; -import com.objectcomputing.checkins.services.tags.TagRepository; import com.objectcomputing.checkins.services.team.TeamRepository; import com.objectcomputing.checkins.services.team.member.MemberHistoryRepository; import com.objectcomputing.checkins.services.team.member.TeamMemberRepository; @@ -45,9 +42,7 @@ import com.objectcomputing.checkins.services.volunteering.VolunteeringOrganizationRepository; import com.objectcomputing.checkins.services.volunteering.VolunteeringRelationshipRepository; import io.micronaut.runtime.server.EmbeddedServer; -import com.objectcomputing.checkins.services.survey.SurveyRepository; import com.objectcomputing.checkins.services.employee_hours.EmployeeHoursRepository; -import com.objectcomputing.checkins.services.opportunities.OpportunitiesRepository; public interface RepositoryFixture { EmbeddedServer getEmbeddedServer(); @@ -56,10 +51,6 @@ default MemberHistoryRepository getMemberHistoryRepository() { return getEmbeddedServer().getApplicationContext().getBean(MemberHistoryRepository.class); } - default TagRepository getTagRepository() { - return getEmbeddedServer().getApplicationContext().getBean(TagRepository.class); - } - default FeedbackTemplateRepository getFeedbackTemplateRepository() { return getEmbeddedServer().getApplicationContext().getBean(FeedbackTemplateRepository.class); } @@ -68,10 +59,6 @@ default TemplateQuestionRepository getTemplateQuestionRepository() { return getEmbeddedServer().getApplicationContext().getBean(TemplateQuestionRepository.class); } - default EntityTagRepository getEntityTagRepository() { - return getEmbeddedServer().getApplicationContext().getBean(EntityTagRepository.class); - } - default MemberProfileRepository getMemberProfileRepository() { return getEmbeddedServer().getApplicationContext().getBean(MemberProfileRepository.class); } @@ -138,14 +125,6 @@ default FeedbackRequestRepository getFeedbackRequestRepository() { return getEmbeddedServer().getApplicationContext().getBean(FeedbackRequestRepository.class); } - default QuestionCategoryRepository getQuestionCategoryRepository() { - return getEmbeddedServer().getApplicationContext().getBean(QuestionCategoryRepository.class); - } - - default SurveyRepository getSurveyRepository() { - return getEmbeddedServer().getApplicationContext().getBean(SurveyRepository.class); - } - default EmployeeHoursRepository getEmployeeHoursRepository() { return getEmbeddedServer().getApplicationContext().getBean(EmployeeHoursRepository.class); } @@ -158,10 +137,6 @@ default SettingsRepository getSettingsRepository() { return getEmbeddedServer().getApplicationContext().getBean(SettingsRepository.class); } - default OpportunitiesRepository getOpportunitiesRepository() { - return getEmbeddedServer().getApplicationContext().getBean(OpportunitiesRepository.class); - } - default GuildMemberHistoryRepository getGuildMemberHistoryRepository() { return getEmbeddedServer().getApplicationContext().getBean(GuildMemberHistoryRepository.class); diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/SurveyFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/SurveyFixture.java deleted file mode 100644 index 2afd642548..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/SurveyFixture.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.objectcomputing.checkins.services.fixture; - -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import com.objectcomputing.checkins.services.survey.Survey; - -import java.time.LocalDate; -import java.time.ZoneId; - -public interface SurveyFixture extends RepositoryFixture { - default Survey createADefaultSurvey(MemberProfile memberprofile) { - return getSurveyRepository().save(new Survey(LocalDate.now(ZoneId.of("UTC")), - memberprofile.getId(), "Name", "Description")); - } -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/TagFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/TagFixture.java deleted file mode 100644 index f4ffe0cddd..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/TagFixture.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.objectcomputing.checkins.services.fixture; - -import com.objectcomputing.checkins.services.tags.Tag; - -public interface TagFixture extends RepositoryFixture { - - default Tag createADefaultTag() { - return getTagRepository().save(new Tag("test tag")); - } - - default Tag createASecondaryTag() { - return getTagRepository().save(new Tag("test tag 2")); - } -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesControllerTest.java deleted file mode 100644 index 45f885a320..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/opportunities/OpportunitiesControllerTest.java +++ /dev/null @@ -1,407 +0,0 @@ -package com.objectcomputing.checkins.services.opportunities; - -import com.fasterxml.jackson.databind.JsonNode; -import com.objectcomputing.checkins.services.TestContainersSuite; -import com.objectcomputing.checkins.services.fixture.MemberProfileFixture; -import com.objectcomputing.checkins.services.fixture.OpportunitiesFixture; -import com.objectcomputing.checkins.services.fixture.RoleFixture; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import io.micronaut.core.type.Argument; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.client.HttpClient; -import io.micronaut.http.client.annotation.Client; -import io.micronaut.http.client.exceptions.HttpClientResponseException; -import jakarta.inject.Inject; -import org.junit.jupiter.api.Test; - -import java.time.LocalDate; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; - -import static com.objectcomputing.checkins.services.role.RoleType.Constants.ADMIN_ROLE; -import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; -import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -class OpportunitiesControllerTest extends TestContainersSuite implements MemberProfileFixture, OpportunitiesFixture, RoleFixture { - - @Inject - @Client("/services/opportunities") - private HttpClient client; - - @Test - void testCreateAOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - - OpportunitiesCreateDTO opportunitiesResponseCreateDTO = new OpportunitiesCreateDTO(); - opportunitiesResponseCreateDTO.setName("Name"); - opportunitiesResponseCreateDTO.setDescription("Description"); - opportunitiesResponseCreateDTO.setUrl("https://objectcomputing.com/jobs"); - opportunitiesResponseCreateDTO.setExpiresOn(LocalDate.now()); - opportunitiesResponseCreateDTO.setPending(Boolean.FALSE); - - final HttpRequest request = HttpRequest.POST("", opportunitiesResponseCreateDTO).basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Opportunities.class); - - Opportunities opportunitiesResponseResponse = response.body(); - - assertNotNull(opportunitiesResponseResponse); - assertEquals(HttpStatus.CREATED, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), opportunitiesResponseResponse.getId()), response.getHeaders().get("location")); - } - - @Test - void testMemberCreateAnOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - - OpportunitiesCreateDTO opportunitiesResponseCreateDTO = new OpportunitiesCreateDTO(); - opportunitiesResponseCreateDTO.setName("Name"); - opportunitiesResponseCreateDTO.setDescription("Description"); - opportunitiesResponseCreateDTO.setUrl("https://objectcomputing.com/jobs"); - opportunitiesResponseCreateDTO.setExpiresOn(LocalDate.now()); - opportunitiesResponseCreateDTO.setPending(Boolean.FALSE); - - final HttpRequest request = HttpRequest.POST("", opportunitiesResponseCreateDTO).basicAuth(memberProfile.getWorkEmail(), MEMBER_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Opportunities.class); - - Opportunities opportunitiesResponseResponse = response.body(); - - assertNotNull(opportunitiesResponseResponse); - assertEquals(HttpStatus.CREATED, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), opportunitiesResponseResponse.getId()), response.getHeaders().get("location")); - } - - @Test - void testCreateAnInvalidOpportunities() { - OpportunitiesCreateDTO opportunitiesResponseCreateDTO = new OpportunitiesCreateDTO(); - - final HttpRequest request = HttpRequest.POST("", opportunitiesResponseCreateDTO).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class) - ); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode errors = Objects.requireNonNull(body).get("_embedded").get("errors"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - List errorList = List.of(errors.get(0).get("message").asText(), errors.get(1).get("message").asText(), - errors.get(2).get("message").asText(), errors.get(3).get("message").asText()) - .stream().sorted().toList(); - assertEquals(4, errorList.size()); - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - } - - - @Test - void testCreateANullOpportunities() { - final HttpRequest request = HttpRequest.POST("", "").basicAuth(ADMIN_ROLE, ADMIN_ROLE); - - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode error = Objects.requireNonNull(body).get("_embedded").get("errors").get(0).get("message"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - - assertEquals("Required Body [opportunitiesResponse] not specified", error.asText()); - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - } - - @Test - void testGETFindByValueName() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?name=%s", opportunitiesResponse.getName())).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - - assertEquals(Set.of(opportunitiesResponse), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testGetFindBySubmittedBy() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?submittedBy=%s", opportunitiesResponse.getSubmittedBy())).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - assertEquals(Set.of(opportunitiesResponse), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testGetFindByDescription() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?description=%s", opportunitiesResponse.getDescription())).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - assertEquals(Set.of(opportunitiesResponse), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testGetFindByPending() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?pending=%s", opportunitiesResponse.getPending())).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - - assertEquals(Set.of(opportunitiesResponse), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testGetFindAll() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET("/").basicAuth(ADMIN_ROLE, ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - - assertEquals(HttpStatus.OK, response.getStatus()); - assertTrue(response.getContentLength() > 0, "response.getContentLength() > 0"); - assertEquals(Set.of(opportunitiesResponse), response.body()); - } - - @Test - void testFindOpportunitiesAllParams(){ - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?submittedBy=%s", opportunitiesResponse.getSubmittedBy())) - .basicAuth(ADMIN_ROLE,ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - - assertEquals(Set.of(opportunitiesResponse), response.body()); - assertEquals(HttpStatus.OK,response.getStatus()); - } - - @Test - void testOpportunitiesDoesNotExist() { - final HttpRequest request = HttpRequest.GET(String.format("/?submittedBy=%s", UUID.randomUUID())).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Opportunities.class)); - - assertEquals(Set.of(), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testUpdateOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - createAndAssignAdminRole(memberProfile); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse) - .basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Opportunities.class); - - assertEquals(opportunitiesResponse, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), opportunitiesResponse.getId()), response.getHeaders().get("location")); - } - - @Test - void testUpdateNonExistingOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - createAndAssignAdminRole(memberProfile); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - opportunitiesResponse.setId(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse) - .basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Unable to find opportunities record with id %s", opportunitiesResponse.getId()), error); - assertEquals(request.getPath(), href); - - } - - @Test - void testUpdateNotExistingMemberOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - createAndAssignAdminRole(memberProfile); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - opportunitiesResponse.setSubmittedBy(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse) - .basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Member %s doesn't exist", opportunitiesResponse.getSubmittedBy()), error); - assertEquals(request.getPath(), href); - } - - @Test - void testUpdateNotMemberOpportunitiesWithoutId() { - MemberProfile memberProfile = createADefaultMemberProfile(); - createAndAssignAdminRole(memberProfile); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - opportunitiesResponse.setId(null); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse) - .basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Unable to find opportunities record with id null", opportunitiesResponse.getId()), error); - assertEquals(request.getPath(), href); - } - - @Test - void testUpdateUnAuthorized() { - Opportunities opportunitiesResponse = new Opportunities("jobOpportunities", "opportunities job interests", "https://objectcomputing.com/jobs", LocalDate.now(), LocalDate.now(), UUID.randomUUID(), Boolean.TRUE); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, String.class)); - - assertEquals(HttpStatus.UNAUTHORIZED, responseException.getStatus()); - assertEquals("Unauthorized", responseException.getMessage()); - } - - @Test - void testUpdateANullOpportunities() { - final HttpRequest request = HttpRequest.PUT("", "") - .basicAuth(ADMIN_ROLE, ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode error = Objects.requireNonNull(body).get("_embedded").get("errors").get(0).get("message"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - - assertEquals("Required Body [opportunitiesResponse] not specified", error.asText()); - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - } - - @Test - void testUpdateInvalidDateOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - createAndAssignAdminRole(memberProfile); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - opportunitiesResponse.setSubmittedOn(LocalDate.of(1965, 12, 11)); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse) - .basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class) - ); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Invalid date for opportunities submission date %s", opportunitiesResponse.getSubmittedBy()), error); - assertEquals(request.getPath(), href); - } - - @Test - void testMemberGETFindByValueName() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?name=%s", opportunitiesResponse.getName())) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Opportunities.class); - - assertEquals(opportunitiesResponse, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testMemberGetFindBySubmittedBy() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?submittedBy=%s", opportunitiesResponse.getSubmittedBy())) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Opportunities.class); - - assertEquals(opportunitiesResponse, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testMemberUpdateOpportunities() { - MemberProfile memberProfile = createADefaultMemberProfile(); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.PUT("", opportunitiesResponse) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class) - ); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(), href); - assertEquals(NOT_AUTHORIZED_MSG, error); - } - - @Test - void testdeleteOpportunitiesByTeamByMember() { - MemberProfile memberProfile = createADefaultMemberProfile(); - - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.DELETE(String.format("/%s", opportunitiesResponse.getId())) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class) - ); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(), href); - assertEquals(NOT_AUTHORIZED_MSG, error); - } - - @Test - void testdeleteOpportunitiesIfAdmin() { - MemberProfile memberProfile = createADefaultMemberProfile(); - createAndAssignAdminRole(memberProfile); - Opportunities opportunitiesResponse = createADefaultOpportunities(memberProfile); - - final HttpRequest request = HttpRequest.DELETE(String.format("/%s", opportunitiesResponse.getId())) - .basicAuth(memberProfile.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Boolean.class); - - assertEquals(HttpStatus.OK, response.getStatus()); - } -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryControllerTest.java deleted file mode 100644 index 4ba3677f24..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/question_category/QuestionCategoryControllerTest.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.objectcomputing.checkins.services.question_category; - -import com.objectcomputing.checkins.services.TestContainersSuite; -import com.objectcomputing.checkins.services.fixture.MemberProfileFixture; -import com.objectcomputing.checkins.services.fixture.QuestionCategoryFixture; -import com.objectcomputing.checkins.services.fixture.RoleFixture; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import io.micronaut.core.type.Argument; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.client.HttpClient; -import io.micronaut.http.client.annotation.Client; -import io.micronaut.http.client.exceptions.HttpClientResponseException; -import io.micronaut.http.hateoas.JsonError; -import org.junit.jupiter.api.Test; - -import jakarta.inject.Inject; - -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import static com.objectcomputing.checkins.services.role.RoleType.Constants.*; -import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -class QuestionCategoryControllerTest extends TestContainersSuite implements QuestionCategoryFixture, MemberProfileFixture, RoleFixture { - - @Inject - @Client("/services/question-categories") - private HttpClient client; - - private String encodeValue(String value) { - return URLEncoder.encode(value, StandardCharsets.UTF_8); - } - - @Test - void testGETNonExistingEndpointReturns404() { - HttpRequest request = HttpRequest.GET(String.format("/?id=%s", UUID.randomUUID())) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException thrown = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request) - ); - assertNotNull(thrown.getResponse()); - assertEquals(HttpStatus.NOT_FOUND, thrown.getStatus()); - } - - @Test - void testGETFindByNameReturnsNotFound() { - final HttpRequest request = HttpRequest. - GET(String.format("/?name=%s", encodeValue("silly"))).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - HttpClientResponseException thrown = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Argument.setOf(QuestionCategory.class)) - ); - assertEquals(HttpStatus.NOT_FOUND, thrown.getStatus()); - } - - @Test - void testGetAllCategories() { - QuestionCategory questionCategory = createADefaultQuestionCategory(); - final HttpRequest request = HttpRequest. - GET("/").basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(QuestionCategory.class)); - - assertEquals(HttpStatus.OK, response.getStatus()); - assertEquals(Set.of(questionCategory), response.body()); - assertTrue(response.getContentLength() > 0, "response.getContentLength() > 0"); - } - - @Test - void testGETGetByIdHappyPath() { - QuestionCategory questionCategory = createADefaultQuestionCategory(); - - final HttpRequest request = HttpRequest. - GET(String.format("/?id=%s", questionCategory.getId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - final HttpResponse response = client.toBlocking().exchange(request, QuestionCategory.class); - - assertEquals(questionCategory.getName(), response.body().getName()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testGETGetByIdNotFound() { - final HttpRequest request = HttpRequest. - GET(String.format("/?id=%s", UUID.randomUUID())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class) - ); - - assertNotNull(responseException.getResponse()); - assertEquals(HttpStatus.NOT_FOUND, responseException.getStatus()); - } - - @Test - void testPUTSuccessfulUpdate() { - MemberProfile memberProfileOfAdmin = createAnUnrelatedUser(); - createAndAssignAdminRole(memberProfileOfAdmin); - - QuestionCategory questionCategory = createADefaultQuestionCategory(); - - final HttpRequest request = HttpRequest. - PUT("/", questionCategory).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, QuestionCategory.class); - - assertEquals(HttpStatus.OK, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), questionCategory.getId()), - response.getHeaders().get("location")); - } - - @Test - void testPUTUpdateNoPermission() { - QuestionCategory questionCategory = createADefaultQuestionCategory(); - - final HttpRequest request = HttpRequest. - PUT("/", questionCategory).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - assertEquals(HttpStatus.FORBIDDEN, responseException.getStatus()); - assertEquals(NOT_AUTHORIZED_MSG, responseException.getMessage()); - - } - - @Test - void testPUTNoIDSupplied() { - QuestionCategoryCreateDTO requestBody = new QuestionCategoryCreateDTO(); - requestBody.setName("Fake Category"); - HttpRequest request = HttpRequest.PUT("/", requestBody) - .basicAuth(ADMIN_ROLE, ADMIN_ROLE); - HttpClientResponseException thrown = assertThrows(HttpClientResponseException.class, () -> { - client.toBlocking().exchange(request); - }); - - JsonError responseBody = thrown.getResponse().getBody(JsonError.class).get(); - - assertEquals("This question category does not exist", responseBody.getMessage()); - assertEquals(HttpStatus.BAD_REQUEST, thrown.getStatus()); - } - - @Test - void testPUTQuestionCategoryNotFound() { - QuestionCategory requestBody = new QuestionCategory(); - requestBody.setId(UUID.randomUUID()); - requestBody.setName("Fake Category"); - HttpRequest request = HttpRequest.PUT("/", requestBody) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - HttpClientResponseException thrown = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request) - ); - - JsonError responseBody = thrown.getResponse().getBody(JsonError.class).get(); - - assertEquals(("No category with id " + requestBody.getId()), responseBody.getMessage()); - assertEquals(HttpStatus.NOT_FOUND, thrown.getStatus()); - } - - @Test - void testPOSTCreateAQuestionCategory() { - MemberProfile memberProfileOfAdmin = createAnUnrelatedUser(); - createAndAssignAdminRole(memberProfileOfAdmin); - - QuestionCategoryCreateDTO newQuestionCategory = new QuestionCategoryCreateDTO(); - newQuestionCategory.setName("Inquisitive"); - - final HttpRequest request = HttpRequest. - POST("/", newQuestionCategory).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, QuestionCategory.class); - - assertEquals(HttpStatus.CREATED, response.getStatus()); - assertEquals(newQuestionCategory.getName(), response.body().getName()); - } - - @Test - void testPOSTCreateAQuestionCategoryNoPermission() { - - QuestionCategoryCreateDTO newQuestionCategory = new QuestionCategoryCreateDTO(); - newQuestionCategory.setName("Inquisitive"); - - final HttpRequest request = HttpRequest. - POST("/", newQuestionCategory).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - assertEquals(HttpStatus.FORBIDDEN, responseException.getStatus()); - assertEquals(NOT_AUTHORIZED_MSG, responseException.getMessage()); - } - - @Test - void testPOSTCreateAQuestionCategoryAlreadyExists() { - MemberProfile memberProfileOfAdmin = createAnUnrelatedUser(); - createAndAssignAdminRole(memberProfileOfAdmin); - - QuestionCategory questionCategory = createADefaultQuestionCategory(); - QuestionCategoryCreateDTO newQuestionCategory = new QuestionCategoryCreateDTO(); - newQuestionCategory.setName(questionCategory.getName()); - - final HttpRequest request = HttpRequest. - POST("/", newQuestionCategory).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - assertNotNull(responseException.getResponse()); - assertEquals(HttpStatus.CONFLICT, responseException.getStatus()); - } - - @Test - void testPOSTCreateAQuestionNullQuestion() { - - QuestionCategoryCreateDTO newQuestionCategory = new QuestionCategoryCreateDTO(); - - final HttpRequest request = HttpRequest. - POST("/", newQuestionCategory).basicAuth(ADMIN_ROLE, ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - assertNotNull(responseException.getResponse()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - } - - @Test - void testDELETEQuestionCategory() { - MemberProfile memberProfileOfAdmin = createAnUnrelatedUser(); - createAndAssignAdminRole(memberProfileOfAdmin); - - QuestionCategory questionCategory = createADefaultQuestionCategory(); - - final HttpRequest request = HttpRequest. - DELETE(String.format("/%s", questionCategory.getId())).basicAuth(memberProfileOfAdmin.getWorkEmail(), ADMIN_ROLE); - - final HttpResponse response = client.toBlocking().exchange(request, Boolean.class); - - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testDELETEQuestionCategoryNoPermission() { - QuestionCategory questionCategory = createADefaultQuestionCategory(); - - final HttpRequest request = HttpRequest. - DELETE(String.format("/%s", questionCategory.getId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class) - ); - - assertEquals(NOT_AUTHORIZED_MSG, responseException.getMessage()); - assertEquals(HttpStatus.FORBIDDEN, responseException.getStatus()); - } - -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/questions/QuestionControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/questions/QuestionControllerTest.java index 079498b213..fe84eb8e86 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/questions/QuestionControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/questions/QuestionControllerTest.java @@ -2,9 +2,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.objectcomputing.checkins.services.TestContainersSuite; -import com.objectcomputing.checkins.services.fixture.QuestionCategoryFixture; import com.objectcomputing.checkins.services.fixture.QuestionFixture; -import com.objectcomputing.checkins.services.question_category.QuestionCategory; import io.micronaut.core.type.Argument; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; @@ -29,7 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -class QuestionControllerTest extends TestContainersSuite implements QuestionFixture, QuestionCategoryFixture { +class QuestionControllerTest extends TestContainersSuite implements QuestionFixture { @Inject @Client("/services/questions") @@ -78,15 +76,13 @@ void testGETFindQuestionsSimilar() { @Test void testGETGetByIdHappyPath() { - QuestionCategory questionCategory = createADefaultQuestionCategory(); - Question question = createADefaultQuestionWithCategory(questionCategory.getId()); + Question question = createADefaultQuestion(); final HttpRequest request = HttpRequest. GET(String.format("/%s", question.getId())).basicAuth(MEMBER_ROLE,MEMBER_ROLE); final HttpResponse response = client.toBlocking().exchange(request, Question.class); - assertEquals(question.getCategoryId(), response.body().getCategoryId()); assertEquals(question.getText(), response.body().getText()); assertEquals(HttpStatus.OK,response.getStatus()); } @@ -191,32 +187,4 @@ void testPOSTCreateAQuestionNullQuestion() { assertNotNull(responseException.getResponse()); assertEquals(HttpStatus.BAD_REQUEST,responseException.getStatus()); } - - @Test - void testGETFindQuestionWithCategory() { - QuestionCategory questionCategory = createADefaultQuestionCategory(); - Question question = createADefaultQuestionWithCategory(questionCategory.getId()); - - UUID categoryId = question.getCategoryId(); - final HttpRequest request = HttpRequest. - GET(String.format("/?categoryId=%s", encodeValue(String.valueOf(categoryId)))).basicAuth(MEMBER_ROLE,MEMBER_ROLE); - - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Question.class)); - - assertEquals(HttpStatus.OK, response.getStatus()); - assertEquals(Set.of(question), response.body()); - assertTrue(response.getContentLength() > 0, "response.getContentLength() > 0"); - } - - @Test - void testGETFindQuestionWithCategoryNotFound() { - - final HttpRequest request = HttpRequest. - GET(String.format("/?categoryId=%s", encodeValue(String.valueOf(UUID.randomUUID())))).basicAuth(MEMBER_ROLE,MEMBER_ROLE); - - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Question.class)); - - assertEquals(HttpStatus.OK, response.getStatus()); - assert(response.body().isEmpty()); - } } diff --git a/server/src/test/java/com/objectcomputing/checkins/services/survey/SurveyControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/survey/SurveyControllerTest.java deleted file mode 100644 index 4415de5bca..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/survey/SurveyControllerTest.java +++ /dev/null @@ -1,489 +0,0 @@ -package com.objectcomputing.checkins.services.survey; - -import com.fasterxml.jackson.databind.JsonNode; -import com.objectcomputing.checkins.services.TestContainersSuite; -import com.objectcomputing.checkins.services.fixture.MemberProfileFixture; -import com.objectcomputing.checkins.services.fixture.RoleFixture; -import com.objectcomputing.checkins.services.fixture.SurveyFixture; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import io.micronaut.core.type.Argument; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.client.HttpClient; -import io.micronaut.http.client.annotation.Client; -import io.micronaut.http.client.exceptions.HttpClientResponseException; -import jakarta.inject.Inject; -import org.junit.jupiter.api.Test; - -import java.time.LocalDate; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; - -import static com.objectcomputing.checkins.services.role.RoleType.Constants.ADMIN_ROLE; -import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; -import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -class SurveyControllerTest extends TestContainersSuite implements MemberProfileFixture, RoleFixture, SurveyFixture { - - @Inject - @Client("/services/surveys") - private HttpClient client; - - @Test - void testCreateASurvey(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - SurveyCreateDTO surveyResponseCreateDTO = new SurveyCreateDTO(); - surveyResponseCreateDTO.setName("Name"); - surveyResponseCreateDTO.setDescription("Description"); - surveyResponseCreateDTO.setCreatedOn(LocalDate.now()); - surveyResponseCreateDTO.setCreatedBy(memberProfile.getId()); - - final HttpRequest request = HttpRequest.POST("",surveyResponseCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request,Survey.class); - - Survey surveyResponseResponse = response.body(); - - assertNotNull(surveyResponseResponse); - assertEquals(HttpStatus.CREATED, response.getStatus()); - assertEquals(surveyResponseCreateDTO.getCreatedBy(),surveyResponseResponse.getCreatedBy()); - assertEquals(String.format("%s/%s", request.getPath(), surveyResponseResponse.getId()), response.getHeaders().get("location")); - } - - @Test - void testCreateAnInvalidSurvey() { - SurveyCreateDTO surveyResponseCreateDTO = new SurveyCreateDTO(); - - final HttpRequest request = HttpRequest.POST("",surveyResponseCreateDTO).basicAuth(ADMIN_ROLE,ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode errors = Objects.requireNonNull(body).get("_embedded").get("errors"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - List errorList = List.of(errors.get(0).get("message").asText(), errors.get(1).get("message").asText(), - errors.get(2).get("message").asText(), errors.get(3).get("message").asText()) - .stream().sorted().collect(Collectors.toList()); - assertEquals(4,errorList.size()); - assertEquals(request.getPath(),href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - } - - @Test - void testCreateSurveyForNonExistingMember(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - SurveyCreateDTO surveyResponseCreateDTO = new SurveyCreateDTO(); - surveyResponseCreateDTO.setName("Name"); - surveyResponseCreateDTO.setDescription("Description"); - surveyResponseCreateDTO.setCreatedOn(LocalDate.now()); - surveyResponseCreateDTO.setCreatedBy(UUID.randomUUID()); - - HttpRequest request = HttpRequest.POST("",surveyResponseCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(),href); - assertEquals(String.format("Member %s doesn't exists",surveyResponseCreateDTO.getCreatedBy()),error); - } - - @Test - void testCreateANullSurvey() { - final HttpRequest request = HttpRequest.POST("","").basicAuth(ADMIN_ROLE,ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode error = Objects.requireNonNull(body).get("_embedded").get("errors").get(0).get("message"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - - assertEquals("Required Body [surveyResponse] not specified",error.asText()); - assertEquals(request.getPath(),href.asText()); - assertEquals(HttpStatus.BAD_REQUEST,responseException.getStatus()); - - } - - @Test - void testCreateASurveyForInvalidDate() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - SurveyCreateDTO surveyResponseCreateDTO = new SurveyCreateDTO(); - surveyResponseCreateDTO.setName("Name"); - surveyResponseCreateDTO.setDescription("Description"); - surveyResponseCreateDTO.setCreatedOn(LocalDate.of(1965,11,12)); - surveyResponseCreateDTO.setCreatedBy(memberProfile.getId()); - - final HttpRequest request = HttpRequest.POST("",surveyResponseCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(),href); - assertEquals(String.format("Invalid date for survey submission date %s",surveyResponseCreateDTO.getCreatedBy()),error); - - } - - @Test - void testGETFindByValueName() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - final HttpRequest request = HttpRequest.GET(String.format("/?name=%s", surveyResponse.getName())).basicAuth(user.getWorkEmail(),ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - assertEquals(Set.of(surveyResponse), response.body()); - assertEquals(HttpStatus.OK,response.getStatus()); - - } - - @Test - void testGetFindByCreatedBy() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?createdBy=%s", surveyResponse.getCreatedBy())).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - assertEquals(Set.of(surveyResponse), response.body()); - assertEquals(HttpStatus.OK,response.getStatus()); - - } - - @Test - void testGetFindAll() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.GET("/").basicAuth(user.getWorkEmail(), ADMIN_ROLE); - - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - - assertEquals(HttpStatus.OK, response.getStatus()); - assertTrue(Objects.requireNonNull(response.body()).contains(surveyResponse)); - } - - @Test - void testFindSurveyByCreateBy(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey expectedResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?createdBy=%s", expectedResponse.getCreatedBy())).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - - - assertTrue(Objects.requireNonNull(response.body()).contains(expectedResponse)); - assertEquals(HttpStatus.OK,response.getStatus()); - } - - @Test - void testFindSurveyAllParams(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey expectedResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?name=%s&createdBy=%s", expectedResponse.getName(), expectedResponse.getCreatedBy())).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - - assertTrue(Objects.requireNonNull(response.body()).contains(expectedResponse)); - assertEquals(HttpStatus.OK,response.getStatus()); - } - - @Test - void testFindSurveyAllParams_WrongCreateByID(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey expectedResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?name=%s&createdBy=%s", expectedResponse.getName(), UUID.randomUUID())).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - - - assertFalse(Objects.requireNonNull(response.body()).contains(expectedResponse)); - assertEquals(HttpStatus.OK,response.getStatus()); - } - - @Test - void testSurveyDoesNotExist() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - final HttpRequest request = HttpRequest.GET(String.format("/?createdBy=%s",UUID.randomUUID())).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - - assertEquals(Set.of(), response.body()); - assertEquals(HttpStatus.OK,response.getStatus()); - - } - - @Test - void testUpdateSurvey(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse) - .basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Survey.class); - - assertEquals(surveyResponse, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), surveyResponse.getId()), response.getHeaders().get("location")); - } - - @Test - void testUpdateNonExistingSurvey(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - surveyResponse.setId(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse) - .basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Unable to find survey record with id %s", surveyResponse.getId()), error); - assertEquals(request.getPath(), href); - - } - - @Test - void testUpdateNotExistingMemberSurvey(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - surveyResponse.setCreatedBy(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse) - .basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Member %s doesn't exist", surveyResponse.getCreatedBy()), error); - assertEquals(request.getPath(), href); - - } - - @Test - void testUpdateNotMemberSurveyWithoutId(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - surveyResponse.setId(null); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse) - .basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Unable to find survey record with id null", surveyResponse.getId()), error); - assertEquals(request.getPath(), href); - - } - - @Test - void testUpdateUnAuthorized() { - Survey surveyResponse = new Survey(LocalDate.now(),UUID.randomUUID(),"jobSurvey","survey job interests"); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, String.class)); - - assertEquals(HttpStatus.UNAUTHORIZED, responseException.getStatus()); - assertEquals("Unauthorized", responseException.getMessage()); - - } - - @Test - void testUpdateANullSurvey() { - final HttpRequest request = HttpRequest.PUT("","").basicAuth(ADMIN_ROLE, ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode error = Objects.requireNonNull(body).get("_embedded").get("errors").get(0).get("message"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - - assertEquals("Required Body [surveyResponse] not specified",error.asText()); - assertEquals(request.getPath(),href.asText()); - assertEquals(HttpStatus.BAD_REQUEST,responseException.getStatus()); - - } - - @Test - void testUpdateInvalidDateSurvey(){ - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - surveyResponse.setCreatedOn(LocalDate.of(1965,12,11)); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse) - .basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> - client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(String.format("Invalid date for survey submission date %s", surveyResponse.getCreatedBy()), error); - assertEquals(request.getPath(), href); - - } - - @Test - void testMemberCreateASurvey(){ - MemberProfile memberProfile = createADefaultMemberProfile(); - - SurveyCreateDTO surveyResponseCreateDTO = new SurveyCreateDTO(); - surveyResponseCreateDTO.setName("Name"); - surveyResponseCreateDTO.setDescription("Description"); - surveyResponseCreateDTO.setCreatedOn(LocalDate.now()); - surveyResponseCreateDTO.setCreatedBy(memberProfile.getId()); - - final HttpRequest request = HttpRequest.POST("",surveyResponseCreateDTO).basicAuth(MEMBER_ROLE,MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(), href); - assertEquals(NOT_AUTHORIZED_MSG, error); - } - - @Test - void testMemberGETFindByValueName() { - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - final HttpRequest request = HttpRequest.GET(String.format("/?name=%s", surveyResponse.getName())).basicAuth(MEMBER_ROLE,MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(NOT_AUTHORIZED_MSG, error); - - } - - @Test - void testMemberGetFindByCreatedBy() { - - MemberProfile memberProfile = createADefaultMemberProfile(); - - - Survey surveyResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.GET(String.format("/?createdBy=%s", surveyResponse.getCreatedBy())).basicAuth(MEMBER_ROLE,MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - - assertEquals(NOT_AUTHORIZED_MSG, error); - - } - - @Test - void testMemberUpdateSurvey(){ - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.PUT("", surveyResponse) - .basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(), href); - assertEquals(NOT_AUTHORIZED_MSG, error); - } - - @Test - void deleteTeamByMember() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - Survey surveyResponse = createADefaultSurvey(memberProfile); - - final HttpRequest request = HttpRequest.DELETE(String.format("/%s", surveyResponse.getId())).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Survey.class)); - - assertEquals(HttpStatus.OK,response.getStatus()); - } - -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/tags/EntityTagControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/tags/EntityTagControllerTest.java deleted file mode 100644 index e8850a2d62..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/tags/EntityTagControllerTest.java +++ /dev/null @@ -1,246 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import com.fasterxml.jackson.databind.JsonNode; -import com.objectcomputing.checkins.services.TestContainersSuite; -import com.objectcomputing.checkins.services.fixture.EntityTagFixture; -import com.objectcomputing.checkins.services.fixture.MemberProfileFixture; -import com.objectcomputing.checkins.services.fixture.RoleFixture; -import com.objectcomputing.checkins.services.fixture.TagFixture; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTag.EntityType; -import com.objectcomputing.checkins.services.tags.entityTag.EntityTagCreateDTO; -import io.micronaut.core.type.Argument; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.client.HttpClient; -import io.micronaut.http.client.annotation.Client; -import io.micronaut.http.client.exceptions.HttpClientResponseException; -import jakarta.inject.Inject; -import org.junit.jupiter.api.Test; - -import java.util.*; -import java.util.stream.Collectors; - -import static com.objectcomputing.checkins.services.role.RoleType.Constants.ADMIN_ROLE; -import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - -class EntityTagControllerTest extends TestContainersSuite implements EntityTagFixture, TagFixture, MemberProfileFixture, RoleFixture { - - @Inject - @Client("/services/entity-tags") - HttpClient client; - - - @Test - void testCreateAEntityTag() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag() ; - EntityType type = EntityType.SKILL; - - EntityTagCreateDTO entityTagCreateDTO = new EntityTagCreateDTO(); - entityTagCreateDTO.setEntityId(memberProfile.getId()); - entityTagCreateDTO.setTagId(tag.getId()); - entityTagCreateDTO.setType(type); - - final HttpRequest request = HttpRequest.POST("", entityTagCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, EntityTag.class); - - EntityTag entityTag = response.body(); - - assertEquals(entityTag, response.body()); - assertEquals(HttpStatus.CREATED, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), entityTag.getId()), response.getHeaders().get("location")); - assertEquals(entityTag.getType(), type); - - } - - - @Test - void testCreateAnInvalidEntityTag() { - EntityTagCreateDTO entityTagCreateDTO = new EntityTagCreateDTO(); - - final HttpRequest request = HttpRequest.POST("", entityTagCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode errors = Objects.requireNonNull(body).get("_embedded").get("errors"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - List errorList = List.of(errors.get(0).get("message").asText(), errors.get(1).get("message").asText(), errors.get(2).get("message").asText()) - .stream().sorted().collect(Collectors.toList()); - assertEquals("entityTag.entityId: must not be null", errorList.get(0)); - assertEquals("entityTag.tagId: must not be null", errorList.get(1)); - assertEquals("entityTag.type: must not be null", errorList.get(2)); - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - } - - @Test - void testCreateANullEntityTag() { - - final HttpRequest request = HttpRequest.POST("", "").basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode error = Objects.requireNonNull(body).get("_embedded").get("errors").get(0).get("message"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - assertEquals("Required Body [entityTag] not specified", error.asText()); - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - - } - - @Test - void createAEntityTagForNonExistingTag() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - EntityTagCreateDTO entityTagCreateDTO = new EntityTagCreateDTO(); - entityTagCreateDTO.setEntityId(UUID.randomUUID()); - entityTagCreateDTO.setType(EntityType.TEAM); - entityTagCreateDTO.setTagId(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.POST("", entityTagCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(), href); - assertEquals(String.format("Tag %s doesn't exist",entityTagCreateDTO.getTagId()),error); - - } - - @Test - void createAEntityTagForExistingTag() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - - EntityTagCreateDTO entityTagCreateDTO = new EntityTagCreateDTO(); - entityTagCreateDTO.setEntityId(memberProfile.getId()); - entityTagCreateDTO.setType(EntityType.SKILL); - entityTagCreateDTO.setTagId(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.POST("", entityTagCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - String error = Objects.requireNonNull(body).get("message").asText(); - String href = Objects.requireNonNull(body).get("_links").get("self").get("href").asText(); - - assertEquals(request.getPath(), href); - assertEquals(String.format("Tag %s doesn't exist",entityTagCreateDTO.getTagId()),error); - - } - - @Test - void deleteEntityTagAsAdmin() { - - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag(); - EntityType type = EntityType.SKILL; - - final HttpRequest request = HttpRequest.DELETE(memberProfile.getId().toString()).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, String.class); - - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testReadAllEntityTags() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag(); - EntityType type = EntityType.SKILL; - - EntityTag entityTag = createADefaultEntityTag(memberProfile,tag, type); - - final HttpRequest request = HttpRequest.GET(String.format("/?entityId=%s&tagId=%s","","")).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(EntityTag.class)); - - assertEquals(Set.of(entityTag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testReadEntityTag() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag(); - EntityType type = EntityType.TEAM; - - EntityTag entityTag = createADefaultEntityTag(memberProfile,tag, type); - - final HttpRequest request = HttpRequest.GET(String.format("/%s", entityTag.getId().toString())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, EntityTag.class); - - assertEquals(entityTag, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testFindEntityTags() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag(); - EntityType type = EntityType.SKILL; - - EntityTag entityTag = createADefaultEntityTag(memberProfile, tag, type); - - final HttpRequest request = HttpRequest.GET(String.format("/?entityId=%s&tagId=%s", entityTag.getEntityId(), - entityTag.getTagId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(EntityTag.class)); - - assertEquals(Set.of(entityTag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testFindEntityTagsByEntityId() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag(); - EntityType type = EntityType.SKILL; - - EntityTag entityTag = createADefaultEntityTag(memberProfile,tag, type); - - final HttpRequest request = HttpRequest.GET(String.format("/?entityId=%s", entityTag.getEntityId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(EntityTag.class)); - - assertEquals(Set.of(entityTag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testFindEntityIdByTagId() { - MemberProfile memberProfile = createADefaultMemberProfile(); - Tag tag = createADefaultTag(); - EntityType type = EntityType.TEAM; - - EntityTag entityTag = createADefaultEntityTag(memberProfile, tag, type); - - final HttpRequest request = HttpRequest.GET(String.format("/?tagId=%s", tag.getId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(EntityTag.class)); - - assertEquals(Set.of(entityTag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - -} diff --git a/server/src/test/java/com/objectcomputing/checkins/services/tags/TagControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/tags/TagControllerTest.java deleted file mode 100644 index ea6041cf5c..0000000000 --- a/server/src/test/java/com/objectcomputing/checkins/services/tags/TagControllerTest.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.objectcomputing.checkins.services.tags; - -import com.fasterxml.jackson.databind.JsonNode; -import com.objectcomputing.checkins.services.TestContainersSuite; -import com.objectcomputing.checkins.services.fixture.MemberProfileFixture; -import com.objectcomputing.checkins.services.fixture.RoleFixture; -import com.objectcomputing.checkins.services.fixture.TagFixture; -import com.objectcomputing.checkins.services.memberprofile.MemberProfile; -import io.micronaut.core.type.Argument; -import io.micronaut.http.HttpRequest; -import io.micronaut.http.HttpResponse; -import io.micronaut.http.HttpStatus; -import io.micronaut.http.client.HttpClient; -import io.micronaut.http.client.annotation.Client; -import io.micronaut.http.client.exceptions.HttpClientResponseException; -import org.apache.commons.lang3.RandomStringUtils; -import org.junit.jupiter.api.Test; - -import jakarta.inject.Inject; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; - -import static com.objectcomputing.checkins.services.role.RoleType.Constants.ADMIN_ROLE; -import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - -class TagControllerTest extends TestContainersSuite implements TagFixture, RoleFixture, MemberProfileFixture { - - @Inject - @Client("/services/tags") - HttpClient client; - - @Test - void testCreateATag() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - String generatedString = RandomStringUtils.randomAlphabetic(10); - TagCreateDTO tagCreateDTO = new TagCreateDTO(); - tagCreateDTO.setName(generatedString); - - final HttpRequest request = HttpRequest.POST("", tagCreateDTO).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Tag.class); - - Tag tag = response.body(); - - assertEquals(HttpStatus.CREATED, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), tag.getId()), response.getHeaders().get("location")); - assertEquals(tag.getName(), generatedString); - } - - @Test - void deleteTagAsAdmin() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - Tag tag = createADefaultTag(); - - final HttpRequest request = HttpRequest.DELETE(tag.getId().toString()).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, String.class); - - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testReadAllTags() { - Tag tag = createADefaultTag(); - Tag secondTag = createASecondaryTag(); - - final HttpRequest request = HttpRequest.GET("/?").basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Tag.class)); - - assertEquals(Set.of(tag, secondTag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testReadTag() { - Tag tag = createADefaultTag(); - - final HttpRequest request = HttpRequest.GET(String.format("/?%s", tag.getId().toString())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Tag.class); - - assertEquals(tag, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - } - - @Test - void testReadTagNotFound() { - - final HttpRequest request = HttpRequest.GET(String.format("/%s", UUID.randomUUID())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, () -> client.toBlocking().exchange(request, Tag.class)); - - assertEquals(HttpStatus.NOT_FOUND, responseException.getStatus()); - } - - @Test - void testFindTag() { - Tag tag = createADefaultTag(); - - final HttpRequest request = HttpRequest.GET(String.format("/?tagid=%s", tag.getId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Tag.class)); - - assertEquals(Set.of(tag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testFindTagByTagId() { - Tag tag = createADefaultTag(); - - final HttpRequest request = HttpRequest.GET(String.format("/?tagid=%s", tag.getId())).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(Tag.class)); - - assertEquals(Set.of(tag), response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - - } - - @Test - void testPUTUpdateTag() { - MemberProfile user = createAnUnrelatedUser(); - createAndAssignAdminRole(user); - - Tag tag = createADefaultTag(); - - final HttpRequest request = HttpRequest.PUT("/", tag).basicAuth(user.getWorkEmail(), ADMIN_ROLE); - final HttpResponse response = client.toBlocking().exchange(request, Tag.class); - - assertEquals(tag, response.body()); - assertEquals(HttpStatus.OK, response.getStatus()); - assertEquals(String.format("%s/%s", request.getPath(), tag.getId()), - response.getHeaders().get("location")); - } - - @Test - void testPUTUpdateNullTag() { - - final HttpRequest request = HttpRequest.PUT("", "").basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode error = Objects.requireNonNull(body).get("_embedded").get("errors").get(0).get("message"); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - - assertEquals("Required Body [tag] not specified", error.asText()); - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus()); - - } - - @Test - void testPUTUpdateNonexistentTag() { - - Tag tag = createADefaultTag(); - - tag.setId(UUID.randomUUID()); - - final HttpRequest request = HttpRequest.PUT("/", tag).basicAuth(MEMBER_ROLE, MEMBER_ROLE); - HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, - () -> client.toBlocking().exchange(request, Map.class)); - - JsonNode body = responseException.getResponse().getBody(JsonNode.class).orElse(null); - JsonNode href = Objects.requireNonNull(body).get("_links").get("self").get("href"); - - assertEquals(request.getPath(), href.asText()); - assertEquals(HttpStatus.FORBIDDEN, responseException.getStatus()); - - } - -}