Restored the deleted test file
This commit is contained in:
parent
a26d45e5c0
commit
502f947cdb
|
@ -0,0 +1,118 @@
|
||||||
|
package com.baeldung.mongoauth;
|
||||||
|
|
||||||
|
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
|
||||||
|
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
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.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
|
import org.springframework.test.annotation.DirtiesContext;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||||
|
import org.springframework.web.context.WebApplicationContext;
|
||||||
|
|
||||||
|
import com.baeldung.mongoauth.domain.Role;
|
||||||
|
import com.baeldung.mongoauth.domain.User;
|
||||||
|
import com.baeldung.mongoauth.domain.UserRole;
|
||||||
|
|
||||||
|
@SpringBootTest(classes = { MongoAuthApplication.class })
|
||||||
|
@AutoConfigureMockMvc
|
||||||
|
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
|
||||||
|
class MongoAuthApplicationIntegrationTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WebApplicationContext context;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MongoTemplate mongoTemplate;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BCryptPasswordEncoder bCryptPasswordEncoder;
|
||||||
|
|
||||||
|
private MockMvc mvc;
|
||||||
|
|
||||||
|
private static final String USER_NAME = "user@gmail.com";
|
||||||
|
private static final String ADMIN_NAME = "admin@gmail.com";
|
||||||
|
private static final String PASSWORD = "password";
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setup() {
|
||||||
|
|
||||||
|
setUp();
|
||||||
|
|
||||||
|
mvc = MockMvcBuilders.webAppContextSetup(context)
|
||||||
|
.apply(springSecurity())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUp() {
|
||||||
|
Role roleUser = new Role();
|
||||||
|
roleUser.setName("ROLE_USER");
|
||||||
|
mongoTemplate.save(roleUser);
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setUsername(USER_NAME);
|
||||||
|
user.setPassword(bCryptPasswordEncoder.encode(PASSWORD));
|
||||||
|
|
||||||
|
UserRole userRole = new UserRole();
|
||||||
|
userRole.setRole(roleUser);
|
||||||
|
user.setUserRoles(new HashSet<>(Collections.singletonList(userRole)));
|
||||||
|
mongoTemplate.save(user);
|
||||||
|
|
||||||
|
User admin = new User();
|
||||||
|
admin.setUsername(ADMIN_NAME);
|
||||||
|
admin.setPassword(bCryptPasswordEncoder.encode(PASSWORD));
|
||||||
|
|
||||||
|
Role roleAdmin = new Role();
|
||||||
|
roleAdmin.setName("ROLE_ADMIN");
|
||||||
|
mongoTemplate.save(roleAdmin);
|
||||||
|
|
||||||
|
UserRole adminRole = new UserRole();
|
||||||
|
adminRole.setRole(roleAdmin);
|
||||||
|
admin.setUserRoles(new HashSet<>(Collections.singletonList(adminRole)));
|
||||||
|
mongoTemplate.save(admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenUserCredentials_whenInvokeUserAuthorizedEndPoint_thenReturn200() throws Exception {
|
||||||
|
mvc.perform(get("/user").with(httpBasic(USER_NAME, PASSWORD)))
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenUserNotExists_whenInvokeEndPoint_thenReturn401() throws Exception {
|
||||||
|
mvc.perform(get("/user").with(httpBasic("not_existing_user", "password")))
|
||||||
|
.andExpect(status().isUnauthorized());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenUserExistsAndWrongPassword_whenInvokeEndPoint_thenReturn401() throws Exception {
|
||||||
|
mvc.perform(get("/user").with(httpBasic(USER_NAME, "wrong_password")))
|
||||||
|
.andExpect(status().isUnauthorized());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenUserCredentials_whenInvokeAdminAuthorizedEndPoint_thenReturn403() throws Exception {
|
||||||
|
mvc.perform(get("/admin").with(httpBasic(USER_NAME, PASSWORD)))
|
||||||
|
.andExpect(status().isForbidden());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenAdminCredentials_whenInvokeAdminAuthorizedEndPoint_thenReturn200() throws Exception {
|
||||||
|
mvc.perform(get("/admin").with(httpBasic(ADMIN_NAME, PASSWORD)))
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
|
||||||
|
mvc.perform(get("/user").with(httpBasic(ADMIN_NAME, PASSWORD)))
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue