You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.8 KiB

  1. package de.fd.fh.network;
  2. import de.fd.fh.shared.Utils;
  3. import de.fd.fh.shared.network.messages.LoginResponse;
  4. import de.fd.fh.shared.network.messages.RegistrateRequest;
  5. import feign.Feign;
  6. import feign.Request;
  7. import feign.Response;
  8. import feign.gson.GsonDecoder;
  9. import feign.gson.GsonEncoder;
  10. import feign.mock.HttpMethod;
  11. import feign.mock.MockClient;
  12. import feign.mock.MockTarget;
  13. import org.junit.jupiter.api.BeforeEach;
  14. import org.junit.jupiter.api.Test;
  15. import static org.junit.jupiter.api.Assertions.*;
  16. class AccessClientTest
  17. {
  18. private AccessClient client;
  19. private MockClient mockClient;
  20. @BeforeEach
  21. void before()
  22. {
  23. mockClient = new MockClient();
  24. client = Feign.builder()
  25. .decoder(new GsonDecoder())
  26. .encoder(new GsonEncoder())
  27. .client(mockClient)
  28. .target(new MockTarget<>(AccessClient.class));
  29. }
  30. @Test
  31. void testRegistrate()
  32. {
  33. mockClient.ok(HttpMethod.POST, "/accounts/registrate");
  34. final RegistrateRequest request = RegistrateRequest.of("TestName", "TestPassword");
  35. final Response result = client.registrate(request);
  36. assertEquals(200, result.status(), "Should return status code 200.");
  37. mockClient.verifyStatus();
  38. }
  39. @Test
  40. void testLogin()
  41. {
  42. mockClient
  43. .ok(HttpMethod.POST, "/accounts/login",
  44. "{\n" +
  45. " \"name\":\"testName\",\n" +
  46. " \"userId\": \"12345\",\n" +
  47. " \"token\": \"testToken\"\n" +
  48. "}"
  49. );
  50. final LoginResponse result = client.login("testToken");
  51. final Request request = mockClient.verifyOne(HttpMethod.POST, "/accounts/login");
  52. assertNotNull(result);
  53. assertEquals("testName", result.getName());
  54. assertEquals("12345", result.getUserId());
  55. assertEquals("testToken", result.getToken());
  56. assertTrue(request.headers().get(Utils.AUTHENTICATION_HEADER).stream().findFirst().isPresent(),
  57. "Should have auth header");
  58. final String authHeader = request.headers().get(Utils.AUTHENTICATION_HEADER).stream().findFirst().get();
  59. assertEquals("Basic testToken", authHeader, "Should use given token.");
  60. }
  61. @Test
  62. void testLogout()
  63. {
  64. mockClient.ok(HttpMethod.POST, "/accounts/logout");
  65. final Response result = client.logout("testToken");
  66. assertEquals(200, result.status(), "Should return status code 200.");
  67. }
  68. @Test
  69. void testDeletePlayer()
  70. {
  71. mockClient.ok(HttpMethod.DELETE, "/accounts/12345");
  72. final Response result = client.deletePlayer("12345");
  73. assertEquals(200, result.status(), "Should return status code 200.");
  74. }
  75. }