source: josm/trunk/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportSenderTest.java

Last change on this file was 18106, checked in by Don-vip, 3 years ago

fix #21150 - Add JUnit5 annotation for WireMockServer (patch by taylor.smock)

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools.bugreport;
3
4import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
5import static com.github.tomakehurst.wiremock.client.WireMock.containing;
6import static com.github.tomakehurst.wiremock.client.WireMock.exactly;
7import static com.github.tomakehurst.wiremock.client.WireMock.post;
8import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
9import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
10import static org.junit.jupiter.api.Assertions.assertEquals;
11import static org.junit.jupiter.api.Assertions.assertFalse;
12import static org.junit.jupiter.api.Assertions.assertNotNull;
13import static org.junit.jupiter.api.Assertions.assertNull;
14
15import java.net.URI;
16import java.util.List;
17
18import org.junit.jupiter.api.Test;
19import org.openstreetmap.josm.actions.ShowStatusReportAction;
20import org.openstreetmap.josm.spi.preferences.Config;
21import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
22import org.openstreetmap.josm.testutils.annotations.BasicWiremock;
23import org.openstreetmap.josm.testutils.annotations.HTTP;
24import org.openstreetmap.josm.testutils.mockers.OpenBrowserMocker;
25
26import com.github.tomakehurst.wiremock.WireMockServer;
27
28/**
29 * Unit tests of {@link BugReportSender} class.
30 */
31@BasicPreferences
32@BasicWiremock
33@HTTP
34class BugReportSenderTest {
35 /**
36 * HTTP mock
37 */
38 @BasicWiremock
39 WireMockServer wireMockServer;
40
41 /**
42 * Unit test for {@link BugReportSender#BugReportSender}.
43 * @throws InterruptedException if the thread is interrupted
44 */
45 @Test
46 void testBugReportSender() throws InterruptedException {
47 Config.getPref().put("josm.url", wireMockServer.baseUrl());
48 wireMockServer.stubFor(post(urlEqualTo("/josmticket"))
49 .willReturn(aResponse()
50 .withStatus(200)
51 .withHeader("Content-Type", "text/xml")
52 .withBody("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
53 "<josmticket status=\"ok\">\n" +
54 " <preparedid>6bccff5c0417217bfbbe5fff</preparedid>\n" +
55 "</josmticket>\n")));
56 new OpenBrowserMocker();
57
58 BugReportSender sender = BugReportSender.reportBug(ShowStatusReportAction.getReportHeader());
59 assertNotNull(sender);
60 synchronized (sender) {
61 while (sender.isAlive()) {
62 sender.wait();
63 }
64 }
65
66 assertFalse(sender.isAlive());
67 assertNull(sender.getErrorMessage(), sender.getErrorMessage());
68 wireMockServer.verify(exactly(1), postRequestedFor(urlEqualTo("/josmticket")).withRequestBody(containing("pdata=")));
69
70 List<URI> calledURIs = OpenBrowserMocker.getCalledURIs();
71 assertEquals(1, calledURIs.size());
72 assertEquals(wireMockServer.url("/josmticket?pdata_stored=6bccff5c0417217bfbbe5fff"), calledURIs.get(0).toString());
73 }
74}
Note: See TracBrowser for help on using the repository browser.