Error: javax.ws.rs.NotFoundException: HTTP 404 Not Found

Viewed 76

I am trying to test my code that gets all the user details from Keycloak using the Keycloak library. But I keep seeing this error. can anyone help me with this?

Test code:

    trait Setup {
        val keycloak: Keycloak = mock[Keycloak]
        val keycloakBuilder: KeycloakBuilder = mock[KeycloakBuilder]
        val service = new NewUserService(conf)
        val restEasy: ResteasyClientBuilder = mock[ResteasyClientBuilder]
        val restEasyClient: ResteasyClient = mock[ResteasyClient]
        val realmResource: RealmResource = mock[RealmResource]
        val usersResource: UsersResource = mock[UsersResource]
      }
      "NewUserService#getAllUsers" should {
    
        "return all users" in new Setup {
          when(restEasy.build()) thenReturn restEasyClient
          when(keycloakBuilder.build()) thenReturn keycloak
          when(restEasy.build()) thenReturn restEasyClient
          when(keycloak.realm(any[String])) thenReturn realmResource
          when(realmResource.users()) thenReturn usersResource
          when(usersResource.list()) thenReturn List(any[UserRepresentation]).asJava
          whenReady(service.getAllUsers) { result =>
            assert(result.isRight)
          }
        }
      }

NewUserService.scala:

class NewUserService(conf: Config)(implicit val ec: ExecutionContext, logger: LoggingAdapter) {
    
      def getAllUsers: Future[Either[NewUserServiceError, util.List[idm.UserRepresentation]]] = {
        val keycloakConf = conf.getConfig("keycloak")
        val serverUrl = keycloakConf.getString("realmServerURL")
        val realm = keycloakConf.getString("realmName")
        val userName = keycloakConf.getString("username")
        val password = keycloakConf.getString("password")
        val clientId = keycloakConf.getString("clientId")
        val clientSecret = keycloakConf.getString("clientSecret")
        val keycloakBuild = KeycloakBuilder
          .builder()
          .serverUrl(serverUrl)
          .realm(realm)
          .username(userName)
          .password(password)
          .clientId(clientId)
          .clientSecret(clientSecret)
          .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(20).build())
          .build()
        val usersList = Future(Try(keycloakBuild.realm("knoldus").users().list()))
        usersList.map {
          case Success(users) =>
            users.asRight
          case Failure(exception) =>
            logger.error(s"Unable to get user details $exception")
            NewUserServiceError.UserNotFoundError.asLeft
        }
      }
    }
    
    object NewUserService {
    
      sealed trait NewUserServiceError
    
      object NewUserServiceError {
        case object UserNotFoundError extends NewUserServiceError
    
        case object InternalServerError extends NewUserServiceError
      }
    
    }

I get the connection refused error when i donot start my keycloak server at 8080 port. And when i start it on 8080 port i see user not found error. Please tell me what am i doing wrong.

Error:

Unable to get user details javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:8080 [/127.0.0.1] failed: Connection refused

Unable to get user details javax.ws.rs.ProcessingException: javax.ws.rs.NotFoundException: HTTP 404 Not Found

0 Answers
Related