Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Migrate user group endpoints to Tapir and remove UserRouteADM #3046

Merged
merged 12 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import org.knora.webapi.slice.admin.api.service.StoreRestService
import org.knora.webapi.slice.admin.api.service.UsersRestService
import org.knora.webapi.slice.admin.domain.service.*
import org.knora.webapi.slice.admin.repo.service.KnoraProjectRepoLive
import org.knora.webapi.slice.admin.repo.service.KnoraUserGroupRepoLive
import org.knora.webapi.slice.admin.repo.service.KnoraUserRepoLive
import org.knora.webapi.slice.common.api.*
import org.knora.webapi.slice.common.repo.service.PredicateObjectMapper
Expand Down Expand Up @@ -179,6 +180,7 @@ object LayersTest {
KnoraProjectRepoLive.layer,
KnoraResponseRenderer.layer,
KnoraUserRepoLive.layer,
KnoraUserGroupRepoLive.layer,
ListRestService.layer,
ListsEndpoints.layer,
ListsEndpointsHandlers.layer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1108,6 +1108,16 @@ class UsersADME2ESpec
}

"used to modify project membership" should {

"NOT add a user to project if the requesting user is not a SystemAdmin or ProjectAdmin" in {
val request = Post(
baseApiUrl + s"/admin/users/iri/${URLEncoder.encode(normalUser.id, "utf-8")}/project-memberships/$imagesProjectIriEnc"
) ~> addCredentials(BasicHttpCredentials(normalUser.email, "test654321"))
val response: HttpResponse = singleAwaitingRequest(request)

assert(response.status === StatusCodes.Forbidden)
}

"add user to project" in {
val membershipsBeforeUpdate = getUserProjectMemberships(normalUser.id)
membershipsBeforeUpdate should equal(Seq())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

package org.knora.webapi.messages.admin.responder.usersmessages

import dsp.errors.BadRequestException
import org.knora.webapi.*
import org.knora.webapi.messages.admin.responder.permissionsmessages.PermissionProfileType
import org.knora.webapi.sharedtestdata.SharedTestDataADM
Expand Down Expand Up @@ -74,62 +73,4 @@ class UsersMessagesADMSpec extends CoreSpec {
)
}
}

"The ChangeUserApiRequestADM case class" should {

"throw a BadRequestException if number of parameters is wrong" in {

// all parameters are None
assertThrows[BadRequestException](
ChangeUserApiRequestADM()
)

val errorNoParameters = the[BadRequestException] thrownBy ChangeUserApiRequestADM()
errorNoParameters.getMessage should equal("No data sent in API request.")

// more than one parameter for status update
assertThrows[BadRequestException](
ChangeUserApiRequestADM(status = Some(true), systemAdmin = Some(true))
)

val errorTooManyParametersStatusUpdate =
the[BadRequestException] thrownBy ChangeUserApiRequestADM(status = Some(true), systemAdmin = Some(true))
errorTooManyParametersStatusUpdate.getMessage should equal("Too many parameters sent for change request.")

// more than one parameter for systemAdmin update
assertThrows[BadRequestException](
ChangeUserApiRequestADM(systemAdmin = Some(true), status = Some(true))
)

val errorTooManyParametersSystemAdminUpdate =
the[BadRequestException] thrownBy ChangeUserApiRequestADM(systemAdmin = Some(true), status = Some(true))
errorTooManyParametersSystemAdminUpdate.getMessage should equal("Too many parameters sent for change request.")

// more than 5 parameters for basic user information update
assertThrows[BadRequestException](
ChangeUserApiRequestADM(
username = Some("newUsername"),
email = Some("newEmail@email.com"),
givenName = Some("newGivenName"),
familyName = Some("familyName"),
lang = Some("en"),
status = Some(true),
systemAdmin = Some(false)
)
)

val errorTooManyParametersBasicInformationUpdate = the[BadRequestException] thrownBy ChangeUserApiRequestADM(
username = Some("newUsername"),
email = Some("newEmail@email.com"),
givenName = Some("newGivenName"),
familyName = Some("familyName"),
lang = Some("en"),
status = Some(true),
systemAdmin = Some(false)
)
errorTooManyParametersBasicInformationUpdate.getMessage should equal(
"Too many parameters sent for change request."
)
}
}
}