Spaces:
Build error
Build error
File size: 3,971 Bytes
1c19d33 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
package com.dalab.autoarchival.controller;
import com.dalab.autoarchival.dto.ArchivalConfigDTO;
import com.dalab.autoarchival.service.IArchivalConfigService;
import com.fasterxml.jackson.databind.ObjectMapper;
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.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;
import java.util.HashMap;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@WebMvcTest(ArchivalConfigController.class)
class ArchivalConfigControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private IArchivalConfigService archivalConfigService;
@Autowired
private ObjectMapper objectMapper;
private ArchivalConfigDTO sampleConfigDTO;
@BeforeEach
void setUp() {
sampleConfigDTO = ArchivalConfigDTO.builder()
.enabled(true)
.defaultArchivalTier("S3_GLACIER")
.defaultRetentionDays(365L)
.requireApprovalForArchival(true)
.requireApprovalForRestore(false)
.providerConfigs(new HashMap<>())
.build();
}
@Test
@WithMockUser(authorities = "ROLE_ADMIN")
void getArchivalConfiguration_AsAdmin_ShouldReturnConfig() throws Exception {
when(archivalConfigService.getArchivalConfig()).thenReturn(sampleConfigDTO);
mockMvc.perform(get("/api/v1/archival/config"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.enabled").value(true))
.andExpect(jsonPath("$.defaultArchivalTier").value("S3_GLACIER"));
}
@Test
@WithMockUser(authorities = "ROLE_DATA_STEWARD")
void getArchivalConfiguration_AsDataSteward_ShouldReturnConfig() throws Exception {
when(archivalConfigService.getArchivalConfig()).thenReturn(sampleConfigDTO);
mockMvc.perform(get("/api/v1/archival/config"))
.andExpect(status().isOk());
}
@Test
@WithMockUser(authorities = "ROLE_USER")
void getArchivalConfiguration_AsUser_ShouldBeForbidden() throws Exception {
mockMvc.perform(get("/api/v1/archival/config"))
.andExpect(status().isForbidden());
}
@Test
@WithMockUser(authorities = "ROLE_ADMIN")
void updateArchivalConfiguration_AsAdmin_ShouldReturnOk() throws Exception {
doNothing().when(archivalConfigService).updateArchivalConfig(any(ArchivalConfigDTO.class));
mockMvc.perform(put("/api/v1/archival/config")
.with(csrf()) // Add CSRF token for PUT if Spring Security CSRF is enabled
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(sampleConfigDTO)))
.andExpect(status().isOk());
verify(archivalConfigService, times(1)).updateArchivalConfig(any(ArchivalConfigDTO.class));
}
@Test
@WithMockUser(authorities = "ROLE_DATA_STEWARD")
void updateArchivalConfiguration_AsDataSteward_ShouldBeForbidden() throws Exception {
mockMvc.perform(put("/api/v1/archival/config")
.with(csrf())
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(sampleConfigDTO)))
.andExpect(status().isForbidden());
}
} |