Падает ошибка при запуске тестов в response body "Could not find matching close for.."

spring
Теги: #<Tag:0x00007f7b601848f8>

(Arina) #1

Доброе время суток

Дано:
использование org.springframework.cloud.contract.spec.Contract.make
Где следует в response body приходят jwt токены

response {
                status 200
                body([
                        llt: $(consumer("jwt_blabla"),
                                producer(regex('[A-Za-z0-9\\-\\._~\\+\\/]'))),
                        slt: $(consumer("jwt_blablatoken"),
                                producer(regex('[A-Za-z0-9\\-\\._~\\+\\/]')))
                ])
                headers {
                    contentType(applicationJsonUtf8())
                }
            }

При запуске падает ошибка -
com.jayway.jsonpath.InvalidPathException: Could not find matching close for / when parsing regex in : $[?(@.['llt'] =~ /[A-Za-z0-9\-\._~\+\\/]+=*/)]

Регулярное выражение верное, проверено с помощью Java Regular Expression Tester

Вопрос, как это пофиксить?

Может есть альтернатива для producer?


(Ruslan Semerenko) #2

Похоже на баг в библиотеке jsonpath. Возможно поможет двойное экранирование символа /, например \\\\/.
Как вариант можно заменить юникод последовательностью \\x{002f}.


(Arina) #3

: value(producer(regex('[A-Za-z0-9\\-\\._]+=*'))) пришлось немного сократить
но хотя бы работает