116 lines
4.4 KiB
Java
116 lines
4.4 KiB
Java
package pl.edu.amu.wmi.bookapi.Integration.api;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.TestInstance;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
|
import org.springframework.test.web.servlet.MockMvc;
|
|
import pl.edu.amu.wmi.bookapi.fixtures.IntegrationTestUtil;
|
|
import pl.edu.amu.wmi.bookapi.fixtures.api.MessageControllerRequests;
|
|
import pl.edu.amu.wmi.bookapi.fixtures.api.UserControllerRequests;
|
|
import pl.edu.amu.wmi.bookapi.models.MessageDocument;
|
|
import pl.edu.amu.wmi.bookapi.models.ThreadDocument;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
|
|
@SpringBootTest
|
|
@AutoConfigureMockMvc
|
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
|
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class })
|
|
public class MessageControllerInt {
|
|
|
|
@Autowired
|
|
MongoTemplate mongoTemplate;
|
|
|
|
@Autowired
|
|
MockMvc mvc;
|
|
|
|
@Autowired
|
|
IntegrationTestUtil testUtil;
|
|
|
|
private MessageControllerRequests messageControllerRequests;
|
|
private UserControllerRequests userControllerRequests;
|
|
|
|
@BeforeEach
|
|
void cleanCollections() {
|
|
this.messageControllerRequests = new MessageControllerRequests(mvc, new ObjectMapper());
|
|
this.userControllerRequests = new UserControllerRequests(mvc, new ObjectMapper());
|
|
testUtil.cleanCollections();
|
|
}
|
|
|
|
@Test
|
|
void should_start_new_thread_if_does_not_exist() throws Exception {
|
|
userControllerRequests.registerUser("a","b");
|
|
String user1 = userControllerRequests.loginAsUserAndReturnAuthorizationHeader("a", "b");
|
|
|
|
messageControllerRequests.postMessage(
|
|
"content",
|
|
"id-1",
|
|
user1
|
|
).andExpect(status().isOk());;
|
|
assertEquals(1, mongoTemplate.findAll(ThreadDocument.class).size());
|
|
assertEquals(1, mongoTemplate.findAll(MessageDocument.class).size());
|
|
}
|
|
|
|
@Test
|
|
void if_thread_exists_it_should_not_create_new() throws Exception {
|
|
userControllerRequests.registerUser("a","b");
|
|
String user1 = userControllerRequests.loginAsUserAndReturnAuthorizationHeader("a", "b");
|
|
|
|
userControllerRequests.registerUser("b","b");
|
|
String user2 = userControllerRequests.loginAsUserAndReturnAuthorizationHeader("b", "b");
|
|
|
|
userControllerRequests.registerUser("c","b");
|
|
String user3 = userControllerRequests.loginAsUserAndReturnAuthorizationHeader("c", "b");
|
|
|
|
messageControllerRequests.postMessage(
|
|
"content",
|
|
"b",
|
|
user1
|
|
).andExpect(status().isOk());
|
|
assertEquals(1, mongoTemplate.findAll(ThreadDocument.class).size());
|
|
assertEquals(1, mongoTemplate.findAll(MessageDocument.class).size());
|
|
|
|
messageControllerRequests.postMessage(
|
|
"content",
|
|
"a",
|
|
user2
|
|
).andExpect(status().isOk());;
|
|
|
|
assertEquals(1, mongoTemplate.findAll(ThreadDocument.class).size());
|
|
assertEquals(2, mongoTemplate.findAll(MessageDocument.class).size());
|
|
|
|
messageControllerRequests.postMessage(
|
|
"content",
|
|
"b",
|
|
user3
|
|
).andExpect(status().isOk());
|
|
|
|
assertEquals(2, mongoTemplate.findAll(ThreadDocument.class).size());
|
|
assertEquals(3, mongoTemplate.findAll(MessageDocument.class).size());
|
|
}
|
|
|
|
@Test
|
|
void it_should_allow_to_send_a_message() throws Exception {
|
|
userControllerRequests.registerUser("a","b");
|
|
String user1 = userControllerRequests.loginAsUserAndReturnAuthorizationHeader("a", "b");
|
|
|
|
messageControllerRequests.postMessage(
|
|
"content",
|
|
"id-5",
|
|
user1
|
|
|
|
).andExpect(status().isOk());
|
|
|
|
assertEquals(1, mongoTemplate.findAll(ThreadDocument.class).size());
|
|
assertEquals(1, mongoTemplate.findAll(MessageDocument.class).size());
|
|
}
|
|
}
|