1 package dst.ass2.service.facade;
5 import org.glassfish.jersey.server.ResourceConfig;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Value;
9 import org.springframework.boot.SpringBootConfiguration;
10 import org.springframework.context.annotation.Bean;
11 import org.springframework.context.annotation.Profile;
13 import dst.ass2.service.api.auth.AuthenticationException;
14 import dst.ass2.service.api.auth.NoSuchUserException;
15 import dst.ass2.service.auth.client.AuthenticationClientProperties;
16 import dst.ass2.service.auth.client.IAuthenticationClient;
17 import dst.ass2.service.auth.client.impl.GrpcAuthenticationClient;
19 @SpringBootConfiguration
20 public class ServiceFacadeApplicationConfig {
23 public ResourceConfig jerseyConfig() {
24 return new ResourceConfig()
25 .packages("dst.ass2.service.facade");
29 public URI coursePlanURI(@Value("${courseplan.uri}") URI target) {
34 public AuthenticationClientProperties authenticationClientProperties(
35 @Value("${auth.host}") String host,
36 @Value("${auth.port}") int port) {
37 return new AuthenticationClientProperties(host, port);
41 @Profile("!AuthenticationResourceTest")
42 // only use this when we're not running individual tests
43 public IAuthenticationClient grpcAuthenticationClient(AuthenticationClientProperties authenticationClientProperties) {
44 return new GrpcAuthenticationClient(authenticationClientProperties);
48 @Profile("AuthenticationResourceTest")
49 public IAuthenticationClient mockAuthenticationClient() {
50 return new MockAuthenticationClient();
53 public static class MockAuthenticationClient implements IAuthenticationClient {
55 private static final Logger LOG = LoggerFactory.getLogger(MockAuthenticationClient.class);
57 public static String TOKEN = "123e4567-e89b-12d3-a456-426655440000";
60 public String authenticate(String email, String password) throws NoSuchUserException, AuthenticationException {
61 LOG.info("Calling MockAuthenticationClient with {}, {}", email, password);
63 if (email.equals("junit@example.com")) {
64 if (password.equals("junit")) {
67 throw new AuthenticationException();
69 throw new NoSuchUserException();
73 public boolean isTokenValid(String t) {
74 return TOKEN.equals(t);