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.
96 lines
2.8 KiB
96 lines
2.8 KiB
package de.fd.fh.network;
|
|
|
|
import de.fd.fh.shared.Utils;
|
|
import de.fd.fh.shared.network.messages.LoginResponse;
|
|
import de.fd.fh.shared.network.messages.RegistrateRequest;
|
|
import feign.Feign;
|
|
import feign.Request;
|
|
import feign.Response;
|
|
import feign.gson.GsonDecoder;
|
|
import feign.gson.GsonEncoder;
|
|
import feign.mock.HttpMethod;
|
|
import feign.mock.MockClient;
|
|
import feign.mock.MockTarget;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
class AccessClientTest
|
|
{
|
|
private AccessClient client;
|
|
private MockClient mockClient;
|
|
|
|
@BeforeEach
|
|
void before()
|
|
{
|
|
mockClient = new MockClient();
|
|
|
|
client = Feign.builder()
|
|
.decoder(new GsonDecoder())
|
|
.encoder(new GsonEncoder())
|
|
.client(mockClient)
|
|
.target(new MockTarget<>(AccessClient.class));
|
|
}
|
|
|
|
@Test
|
|
void testRegistrate()
|
|
{
|
|
mockClient.ok(HttpMethod.POST, "/accounts/registrate");
|
|
|
|
final RegistrateRequest request = RegistrateRequest.of("TestName", "TestPassword");
|
|
|
|
final Response result = client.registrate(request);
|
|
|
|
assertEquals(200, result.status(), "Should return status code 200.");
|
|
|
|
mockClient.verifyStatus();
|
|
}
|
|
|
|
@Test
|
|
void testLogin()
|
|
{
|
|
mockClient
|
|
.ok(HttpMethod.POST, "/accounts/login",
|
|
"{\n" +
|
|
" \"name\":\"testName\",\n" +
|
|
" \"userId\": \"12345\",\n" +
|
|
" \"token\": \"testToken\"\n" +
|
|
"}"
|
|
);
|
|
final LoginResponse result = client.login("testToken");
|
|
|
|
final Request request = mockClient.verifyOne(HttpMethod.POST, "/accounts/login");
|
|
|
|
assertNotNull(result);
|
|
assertEquals("testName", result.getName());
|
|
assertEquals("12345", result.getUserId());
|
|
assertEquals("testToken", result.getToken());
|
|
|
|
assertTrue(request.headers().get(Utils.AUTHENTICATION_HEADER).stream().findFirst().isPresent(),
|
|
"Should have auth header");
|
|
final String authHeader = request.headers().get(Utils.AUTHENTICATION_HEADER).stream().findFirst().get();
|
|
|
|
assertEquals("Basic testToken", authHeader, "Should use given token.");
|
|
}
|
|
|
|
@Test
|
|
void testLogout()
|
|
{
|
|
mockClient.ok(HttpMethod.POST, "/accounts/logout");
|
|
|
|
final Response result = client.logout("testToken");
|
|
|
|
assertEquals(200, result.status(), "Should return status code 200.");
|
|
}
|
|
|
|
@Test
|
|
void testDeletePlayer()
|
|
{
|
|
mockClient.ok(HttpMethod.DELETE, "/accounts/12345");
|
|
|
|
final Response result = client.deletePlayer("12345");
|
|
|
|
assertEquals(200, result.status(), "Should return status code 200.");
|
|
}
|
|
}
|