Тестируем Jenkins Plugin: Crumb, CSRF

«No valid crumb was included in the request» при тестах UnprotectedRootAction

Опуская все подробности того что такое UnprotectedRootAction и с чем его едят, остановимся на конкретном вопросе. Создаем плагин с таким экшеном, а в тестах настроив рулу дженкинса делаем POST запрос. И получаем Error 403 No valid crumb was included in the request. Что в этом случае делать?

Что говорит официальное wiki

В разделе CSRF Protection написано что нужно получить некий CSRF токен. И даже дают пример как его получить (JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb) с выводом вроде .crumb:1234abcd)

Что с этим делать

Я догадался не сразу, а только покопав слегка исходники. Оказывается это заголовок:значение, либо параметр:значение. В тестах значение всегда равно test (благодаря TestCrumbIssuer). Поэтому запрос на получение токена можно не делать, а сразу использовать это примерно так:

@ClassRule
public static JenkinsRule jenkins = new JenkinsRule();

@Test
public void shouldGet200OnRequestToUnprotectedAction() throws Exception {
  given() .baseUri(jenkins.getInstance().getRootUrl())
          .header(".crumb", "test")
          .content("some content")
          .post("url-of-unprotected-action");
}