Próbuję przetestować klasę dostawca openid. Otwarta klasa konsumenta tworzy żądanie http. Szydzę z odpowiedzi na to żądanie za pomocą drutu. Próbuję wyśmiać poprawną odpowiedź typu openid. Jednak poprawna odpowiedź zależy od parametrów żądania. Korzystając z wiremocka, mogę ustawić fałszywe żądanie, w którym treść odpowiedzi zależy od parametrów żądania?Korzystanie z wiremock, czy mogę zwrócić ciało, które jest zależne od post request
Odpowiedz
Nigdy nie używałam drutu. Ale zgodnie z ich online documentation można napisać próbę, która pasuje do parametrów adresu URL i żądania. Więc powinieneś być w stanie zwrócić różne mocks w zależności od parametrów w samym URL lub osadzonych w treści żądania.
O ile wiem i moje doświadczenia z WireMock, nie.
Nie można sparametryzować odpowiedzi za pomocą argumentów przekazanych przez żądanie. Najlepsze, co możesz zrobić, to użyć dopasowań, aby twój kpiący serwer odpowiednio zareagował.
Zalecam wykonanie pewnych testów jednostkowych lub integracyjnych za pomocą zwykłego jUnit w celu przetestowania żądań/odpowiedzi w takich przypadkach. Powinny one być szybsze, jeśli chcesz przetestować, czy żądania odbioru są prawidłowe. Widzę WireMock jako alternatywę dla testu akceptacji, aby upewnić się, że twój interfejs z innymi usługami REST nie zostanie zerwany.
Sprawdziłem to trochę, a odpowiedź brzmi "nie" (na dzisiaj).
Należy ustawić określoną (statyczną) odpowiedź dla każdego żądania, które wymaga unikalnej odpowiedzi.
Jest to możliwe, wystarczy skorzystać z ResponseTansformer. W poniższym przykładowym kodzie parametr ResponseDefinition jest określany przez skrótowy podany poniżej. Tutaj kpię z usługi kodowania, po prostu zwracając bajty ciała z powrotem do dzwoniącego. Chociaż w transformatorze mogę zwrócić to, co mi się podoba w oparciu o treść zapytania.
int port = 8080;
WireMockServer wireMockServer = new WireMockServer(new WireMockConfiguration().port(port).extensions(new ResponseTransformer() {
@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files) {
return new ResponseDefinitionBuilder().like(responseDefinition)
.withBody(request.getBodyAsString().getBytes())
.build();
}
@Override
public String name() {
return "request body returning request transformer";
}
}));
wireMockServer.start();
WireMock.configureFor("localhost", port);
stubFor(post(urlEqualTo("/encode"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/octet-stream")
.withStatus(200)));
stubFor(post(urlEqualTo("/decode"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/octet-stream")
.withStatus(200)));
Wiremock obsługuje rozszerzenia, które można napisać samemu, który działa jako middleware używany do przechwycenia żądania i odpowiedzi ciała, dzięki czemu można sformatować go jednak chcesz. Jest bardzo elastyczny i umożliwia dynamiczne tworzenie nowych ciał odpowiedzi lub nawet brak odpowiedzi.
Jako przykład, napisaliśmy przedłużenie tego w Opentable i otworzyliśmy go na Maven Central. Pozwala to traktować atrybuty json jako zmienne i interpolować je w swoje ciało odpowiedzi. Sprawdź to. Daj nam znać, jak to działa lub jeśli masz jakieś pytania. https://github.com/opentable/wiremock-body-transformer
- 1. Webhook Mailgun Ciało POST wydaje się puste
- 2. JAVA: http post request
- 3. Które rozszerzenia plików są zależne od zaufanej pamięci ColdFusion
- 4. Druty wzajemnie zależne od Netwire
- 5. python-request post z nazwą pliku Unicode
- 6. Dlaczego jQuery jest zależne od Ember.js?
- 7. Zastrzyki zależne od adnotacji, które obsługują różne środowiska.
- 8. ExtJS 4 - Problemy z JsonStore + Post Request
- 9. Motywy: Rysowanie zależne od motywu?
- 10. Jak zdobyć ciało POST w php?
- 11. Korzystanie z żądania JSON POST
- 12. Jak znaleźć artefakty zależne od innego artefaktu?
- 13. Dlaczego powiązanie procesora Java jest zależne od procesora?
- 14. std :: async - Użycie zależne od implementacji?
- 15. Czy możliwe są zależne od pobrania żądania w Github?
- 16. Czy adresy URL zależne od protokołu działają między różnymi platformami?
- 17. axios post request przesłanie danych formularza
- 18. angularjs + spring mvc + json post request
- 19. Czy Perl6 obsługuje zależne typy?
- 20. Dopasowywanie zależne od typów - jak uniknąć asInstanceOf?
- 21. POST od XMLHttp z parametrami
- 22. Posiadanie repozytorium zależne od innego repozytorium
- 23. Czy jest jakiś sposób, aby powiedzieć sidekiq, że jedno zlecenie jest zależne od innego
- 24. Ustawienia zależne od lokalizacji dla std :: string
- 25. Czy mogę zbudować własne ramy sieciowe (zależne od AFNetworking) jako szkielet watchOS2?
- 26. Korzystanie z ASIHTTPRequest do POST zagnieżdżonych parametrów przy użyciu NSDictionary
- 27. argparse dwa argumenty są od siebie zależne
- 28. lwp-request w powłoce: jak wykonać żądanie POST z treścią?
- 29. Co powinieneś zwrócić RESTful API POST/DELETE w treści?
- 30. Zastrzyki zależne od dyrektywy kątowej - TypeScript
Muszę zweryfikować podpis cyfrowy adresu URL dla żądania otwarcia. Nie sądzę, że to zadziała, więc zajrzę do innego serwera http java, aby to zrobić. –