From 985915c08c920e3b3cdde801b9c88deb1c82e304 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Tue, 11 Feb 2025 14:16:35 +0100 Subject: [PATCH] TD-3: Test for Playername uniqueness --- .../towerdefence/server/IntegrationTest.java | 8 +++-- .../server/server/PlayerRegistrationTest.java | 35 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/test/java/de/towerdefence/server/server/PlayerRegistrationTest.java diff --git a/src/test/java/de/towerdefence/server/IntegrationTest.java b/src/test/java/de/towerdefence/server/IntegrationTest.java index 70e8bba..5964f75 100644 --- a/src/test/java/de/towerdefence/server/IntegrationTest.java +++ b/src/test/java/de/towerdefence/server/IntegrationTest.java @@ -1,6 +1,8 @@ package de.towerdefence.server; import com.fasterxml.jackson.databind.ObjectMapper; +import de.towerdefence.server.player.PlayerRepository; +import de.towerdefence.server.player.PlayerService; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; @@ -20,15 +22,17 @@ public abstract class IntegrationTest { protected MockMvc mvc; @Autowired protected ObjectMapper objectMapper; + @Autowired + protected PlayerRepository playerRepository; @BeforeEach void setUp() { - //repository.deleteAll(); + playerRepository.deleteAll(); } @AfterEach void cleanUp() { - //repository.deleteAll(); + playerRepository.deleteAll(); } } diff --git a/src/test/java/de/towerdefence/server/server/PlayerRegistrationTest.java b/src/test/java/de/towerdefence/server/server/PlayerRegistrationTest.java new file mode 100644 index 0000000..4a76286 --- /dev/null +++ b/src/test/java/de/towerdefence/server/server/PlayerRegistrationTest.java @@ -0,0 +1,35 @@ +package de.towerdefence.server.server; + +import de.towerdefence.server.IntegrationTest; +import de.towerdefence.server.oas.models.PlayerRegistrationData; +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.RequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +public class PlayerRegistrationTest extends IntegrationTest { + + @Test + void playerUsernameIsUnique() throws Exception { + PlayerRegistrationData body = new PlayerRegistrationData(); + body.setUsername("test"); + body.setPassword("password"); + + this.mvc + .perform(getRequest(body)) + .andExpect(status().isCreated()); + this.mvc + .perform(getRequest(body)) + .andExpect(status().isConflict()); + } + + private RequestBuilder getRequest(PlayerRegistrationData playerRegistrationData) throws Exception { + return MockMvcRequestBuilders + .post(baseUri + "/player/register") + .content(this.objectMapper.writeValueAsString(playerRegistrationData)) + .contentType(MediaType.APPLICATION_JSON); + } + + +}