小编Mak*_*ski的帖子

如何根据 JSON Schema 中其他属性的存在有条件地禁止属性?

在我的模式中,我声明了这些属性:

"index_name": {
      "type": "string",
      "examples": ["foo-wwen-live", "foo"]
    },
"locale": {
      "type": "string",
      "examples": ["wwen", "usen", "frfr"]
},
"environment": {
      "type": "string",
      "default": "live",
      "examples": [
        "staging",
        "edgengram",
        "test"
      ]
}
Run Code Online (Sandbox Code Playgroud)

我希望根据我的模式验证的 JSON 主体仅在以下情况下才有效:

  • index_name 存在,并且两者 localeenvironment 存在;
  • locale和/或enviroment 存在,并且index_name 存在

总之,localeenvironment绝不应该以混合index_name

测试用例和预期结果:

这些应该通过:
案例#1

{
  "locale": "usen"
}
Run Code Online (Sandbox Code Playgroud)

案例#2

{
  "environment": "foo"
}
Run Code Online (Sandbox Code Playgroud)

案例#3

{
  "environment": "foo",
  "locale": "usen"
}
Run Code Online (Sandbox Code Playgroud)

案例#4 …

validation json jsonschema

8
推荐指数
1
解决办法
520
查看次数

为什么在启用 Spring Security 的情况下,MockMvc 在有效路径上返回 404 错误?

我正在尝试使用 MockMvc 测试我的 Spring Boot REST 控制器。以下是我的测试课:

UserControllerImplTest(版本 1)

@SpringBootTest
@AutoConfigureMockMvc
class UserControllerImplTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private UserDTOService userDTOService;

    @MockBean
    private ImageDTOService imageDTOService;

    @Test
    public void whenUsers_shouldReturnUsers() throws Exception {

        UserDTO user1 = getSampleUser("user1");
        UserDTO user2 = getSampleUser("user2");
        UserDTO user3 = getSampleUser("user3");
        List<UserDTO> users = List.of(user1, user2, user3);

        Mockito.when(userDTOService.getAll()).thenReturn(users);

        mockMvc.perform(get("/user"))
                .andExpect(status().isOk())
                .andExpect(content().string(users.toString()));
    }

    private UserDTO getSampleUser(String username) {
        return UserDTO.builder()
                .username(username)
                .email(username + "@example.com")
                .password("password")
                .registerTime(LocalDateTime.now())
                .isActive(true)
                .build();
    }
}
Run Code Online (Sandbox Code Playgroud)

待测试控制器: UserController:

@Api(tags={"User info"})
@RequestMapping("/user")
public interface …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot mockmvc

6
推荐指数
1
解决办法
9298
查看次数