Запись Wiremock - переписать ответы «на лету» в режиме записи - PullRequest
0 голосов
/ 19 октября 2018

У меня запущен экземпляр Wiremock, как в примере ниже:

java -jar wiremock-standalone-2.19.0.jar --port=8080 --root-dir="/data" --proxy-all="https://api.github.com" --verbose

Теперь, когда я начинаю запись для домена https://api.github.com на локальном хосте: 8080 / __ admin / рекордер / и запрашиваю прокси-URL, подобный этому

https://api.github.com/repos/MyOrganisationName/MyRepoName/contents/

Я получаю следующий ответ:

[
  {
    "name": "a-file-in-my-repo.md",
    "path": "content/articles/a-file-in-my-repo.md",
    "sha": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "size": 0,
    "url": "https://api.github.com/repos/MyOrganisationName/MyRepoName/contents/content/articles/a-file-in-my-repo.md?ref=develop",
    "html_url": "https://github.com/MyOrganisationName/MyRepoName/blob/develop/content/articles/a-file-in-my-repo.md",
    "git_url": "https://api.github.com/repos/MyOrganisationName/MyRepoName/git/blobs/e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "download_url": "https://raw.githubusercontent.com/MyOrganisationName/MyRepoName/develop/content/articles/a-file-in-my-repo.md",
    "type": "file",
    "_links": {
      "self": "https://api.github.com/repos/MyOrganisationName/MyRepoName/contents/content/articles/a-file-in-my-repo.md?ref=develop",
      "git": "https://api.github.com/repos/MyOrganisationName/MyRepoName/git/blobs/e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "html": "https://github.com/MyOrganisationName/MyRepoName/blob/develop/content/articles/a-file-in-my-repo.md"
    }
  }
]

Сейчас «проблема» состоит в том, что я хочу следовать этим URL-адресам, например, https://api.github.com/repos/MyOrganisationName/MyRepoName/contents/content/articles/a-file-in-my-repo.md?ref=develop- но тогда запрос выполняется непосредственно против API github, а не через мой настроенный прокси Wiremock.

Так что мне нужна некоторая функциональность перезаписи / замены (на уровне wiremock), которая переписывает соответствие URL https://api.github.com в http://localhost:8080 перед сохранением записи, чтобы я получил ответ, как показано ниже:

[
  {
    "name": "a-file-in-my-repo.md",
    "path": "content/articles/a-file-in-my-repo.md",
    "sha": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "size": 0,
    "url": "http://localhost:8080/repos/MyOrganisationName/MyRepoName/contents/content/articles/a-file-in-my-repo.md?ref=develop",
    "html_url": "https://github.com/MyOrganisationName/MyRepoName/blob/develop/content/articles/a-file-in-my-repo.md",
    "git_url": "http://localhost:8080/repos/MyOrganisationName/MyRepoName/git/blobs/e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
    "download_url": "https://raw.githubusercontent.com/MyOrganisationName/MyRepoName/develop/content/articles/a-file-in-my-repo.md",
    "type": "file",
    "_links": {
      "self": "http://localhost:8080/repos/MyOrganisationName/MyRepoName/contents/content/articles/a-file-in-my-repo.md?ref=develop",
      "git": "http://localhost:8080/repos/MyOrganisationName/MyRepoName/git/blobs/e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "html": "https://github.com/MyOrganisationName/MyRepoName/blob/develop/content/articles/a-file-in-my-repo.md"
    }
  }
]

Возможно ли это как-то без ручной замены и перезапуска каждый раз?

Заранее спасибо

1 Ответ

0 голосов
/ 26 октября 2018

Wiremock не будет заботиться о http://localhost:8080 против http://github.com, потому что он уже будет перезаписывать их, если конечные точки совпадают.

Если вы настроите его так, как намереваетесь,вам все равно придется предоставить настраиваемое сопоставление для Wiremock для предоставления правильного ответа.

Можете ли вы уточнить, почему вы хотите заменить URL-адреса?

Чтобы попытаться ответить на часть вашеговопрос, я не знаю, как преобразовать отклик сопоставлений во время первоначального прокси, однако вы можете использовать что-то вроде Wiremock Body Transformer OpenTable для очистки записей, чтобы они работали так, как вы хотели бы в будущемвоспроизведение.

...