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

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.");
}
}