opencv/src/test/java/pl/edu/amu/wmi/bookapi/Integration/api/MessageControllerInt.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());
}
}