Как сгенерировать регулярное выражение тела запроса с пружинными документами и пружинным контрактом? - PullRequest
0 голосов
/ 04 октября 2019

Используя mockMvc, Spring restDocs и облачный контракт Spring со следующим @Test кодом:

var adminDTO = HandlerTestObjectGenerator.createRandomAdminDTO();

        mockMvc.perform(
                RestDocumentationRequestBuilders
                        .post("/api/admins")
                        .content(objectMapper.writeValueAsString(adminDTO))
                        .contentType(MediaType.APPLICATION_JSON_UTF8)
        ).andExpect(status().isCreated())
                .andDo(document("create-admin",
                        preprocessRequest(),
                        preprocessResponse(),
                        requestFields(
                                usernameFieldDescriptor,
                                passwordFieldDescriptor,
                                rolesFieldDescriptor
                        ),
                        responseFields(
                                admin_adminIdFieldDescriptor,
                                admin_usernameFieldDescriptor,
                                admin_rolesFieldDescriptor
                        ),
                        SpringCloudContractRestDocs.dslContract()
                ));

Я получаю следующий нестандартный контракт:

Contract.make {
    request {
        method 'POST'
        url '/api/admins'
        body('''{
  "username" : "6ddfee05-75c2-4cdb-b35e-668e79226e92",
  "password" : "91a96b76-283f-44eb-b6cc-72945872b287",
  "roles" : [ "ADMIN" ]
}''')
...

Значения тела запроса дляusername и password жестко закодированы в Groovy-контракте, что делает их непредсказуемыми на стороне потребителя.

Вместо того, чтобы жестко их кодировать, я хотел бы иметь проверку шаблона регулярного выражения, поэтому любой действительный ввод возвращает контрактответ

Можно ли это сделать? Пожалуйста, предоставьте конкретный код, так как я застрял с документацией.

...