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: Move caching from UserResponder to UserService #3064

Merged
merged 11 commits into from
Feb 27, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ import org.knora.webapi.slice.search.api.SearchEndpoints
import org.knora.webapi.store.cache.CacheServiceRequestMessageHandler
import org.knora.webapi.store.cache.CacheServiceRequestMessageHandlerLive
import org.knora.webapi.store.cache.api.CacheService
import org.knora.webapi.store.cache.impl.CacheServiceInMemImpl
import org.knora.webapi.store.cache.impl.CacheServiceLive
import org.knora.webapi.store.iiif.IIIFRequestMessageHandler
import org.knora.webapi.store.iiif.IIIFRequestMessageHandlerLive
import org.knora.webapi.store.iiif.api.SipiService
Expand Down Expand Up @@ -87,9 +87,10 @@ object LayersTest {
type CommonR0 = ActorSystem with AppConfigurationsTest with JwtService with SipiService with StringFormatter
type CommonR =
ApiRoutes
with ApiV2Endpoints
with AdminApiEndpoints
with ApiV2Endpoints
with AppRouter
with AssetPermissionsResponder
with Authenticator
with AuthorizationRestService
with CacheService
Expand Down Expand Up @@ -136,14 +137,14 @@ object LayersTest {
with RestResourceInfoService
with SearchApiRoutes
with SearchResponderV2
with AssetPermissionsResponder
with StandoffResponderV2
with StandoffTagUtilV2
with State
with StoreRestService
with TestClientService
with TriplestoreService
with UsersResponder
with UsersRestService
with ValuesResponderV2

private val commonLayersForAllIntegrationTests =
Expand All @@ -157,7 +158,7 @@ object LayersTest {
AuthenticatorLive.layer,
AuthorizationRestServiceLive.layer,
BaseEndpoints.layer,
CacheServiceInMemImpl.layer,
CacheServiceLive.layer,
CacheServiceRequestMessageHandlerLive.layer,
CardinalityHandlerLive.layer,
CardinalityService.layer,
Expand All @@ -179,8 +180,8 @@ object LayersTest {
IriService.layer,
KnoraProjectRepoLive.layer,
KnoraResponseRenderer.layer,
KnoraUserRepoLive.layer,
KnoraUserGroupRepoLive.layer,
KnoraUserRepoLive.layer,
ListRestService.layer,
ListsEndpoints.layer,
ListsEndpointsHandlers.layer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
package org.knora.webapi.responders.admin

import org.apache.pekko.testkit.ImplicitSender
import zio.ZIO

import java.util.UUID

import dsp.errors.BadRequestException
import dsp.errors.DuplicateValueException
import dsp.errors.ForbiddenException
import dsp.valueobjects.LanguageCode
import org.knora.webapi.*
import org.knora.webapi.messages.StringFormatter
Expand All @@ -26,6 +28,7 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM
import org.knora.webapi.slice.admin.api.UsersEndpoints.Requests.BasicUserInformationChangeRequest
import org.knora.webapi.slice.admin.api.UsersEndpoints.Requests.PasswordChangeRequest
import org.knora.webapi.slice.admin.api.UsersEndpoints.Requests.UserCreateRequest
import org.knora.webapi.slice.admin.api.service.UsersRestService
import org.knora.webapi.slice.admin.domain.model.*
import org.knora.webapi.util.ZioScalaTestUtil.assertFailsWithA

Expand All @@ -43,29 +46,28 @@ class UsersResponderSpec extends CoreSpec with ImplicitSender {

implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance

"The UsersResponder " when {
"asked about all users" should {
"return a list if asked by SystemAdmin" in {
val response = UnsafeZioRun.runOrThrow(UsersResponder.findAllUsers())
response.users.nonEmpty should be(true)
response.users.size should be(18)
}
"The UsersRestService" when {
"calling getAllUsers" should {

"return a list if asked by ProjectAdmin" in {
val response = UnsafeZioRun.runOrThrow(UsersResponder.findAllUsers())
response.users.nonEmpty should be(true)
response.users.size should be(18)
}
def getAllUsers(requestingUser: User): ZIO[UsersRestService, Throwable, UsersGetResponseADM] =
ZIO.serviceWithZIO[UsersRestService](_.getAllUsers(requestingUser))

"not return the system and anonymous users" in {
val response = UnsafeZioRun.runOrThrow(UsersResponder.findAllUsers())
"with a SystemAdmin should return all real users" in {
val response = UnsafeZioRun.runOrThrow(getAllUsers(rootUser))
response.users.nonEmpty should be(true)
response.users.size should be(18)
response.users.count(_.id == KnoraSystemInstances.Users.AnonymousUser.id) should be(0)
response.users.count(_.id == KnoraSystemInstances.Users.SystemUser.id) should be(0)
}

"fail with unauthorized when asked by an anonymous user" in {
val exit = UnsafeZioRun.run(getAllUsers(SharedTestDataADM.anonymousUser))
assertFailsWithA[ForbiddenException](exit)
}
}
}

"The UsersResponder " when {
"asked about an user identified by 'iri' " should {
"return a profile if the user (root user) is known" in {
val actual = UnsafeZioRun.runOrThrow(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,44 +7,19 @@ package org.knora.webapi.store.cache

import dsp.errors.BadRequestException
import org.knora.webapi.*
import org.knora.webapi.messages.StringFormatter
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectIdentifierADM.*
import org.knora.webapi.messages.store.cacheservicemessages.*
import org.knora.webapi.sharedtestdata.SharedTestDataADM
import org.knora.webapi.slice.admin.domain.model.*

/**
* This spec is used to test [[org.knora.webapi.store.cache.serialization.CacheSerialization]].
*/
class CacheServiceManagerSpec extends CoreSpec {

implicit protected val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance

val user = SharedTestDataADM.imagesUser01
val project = SharedTestDataADM.imagesProject

"The CacheManager" should {

"successfully store a user" in {
appActor ! CacheServicePutUserADM(user)
expectMsg(())
}

"successfully retrieve a user by IRI" in {
appActor ! CacheServiceGetUserByIriADM(UserIri.unsafeFrom(user.id))
expectMsg(Some(user))
}

"successfully retrieve a user by USERNAME" in {
appActor ! CacheServiceGetUserByUsernameADM(Username.unsafeFrom(user.username))
expectMsg(Some(user))
}

"successfully retrieve a user by EMAIL" in {
appActor ! CacheServiceGetUserByEmailADM(Email.unsafeFrom(user.email))
expectMsg(Some(user))
}

"successfully store a project" in {
appActor ! CacheServicePutProjectADM(project)
expectMsg(())
Expand Down

This file was deleted.

Loading
Loading