Ignore:
Timestamp:
2017-08-02T20:41:01+02:00 (7 years ago)
Author:
Don-vip
Message:

see #15102 - first batch of HTTP unit tests mocking, using WireMock 2.7.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java

    r11917 r12557  
    22package org.openstreetmap.josm.io;
    33
     4import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
     5import static com.github.tomakehurst.wiremock.client.WireMock.get;
     6import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
     7import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
    48import static org.junit.Assert.assertEquals;
    59import static org.junit.Assert.assertTrue;
     
    711import java.util.regex.Matcher;
    812
     13import org.junit.Before;
    914import org.junit.Rule;
    1015import org.junit.Test;
     16import org.openstreetmap.josm.TestUtils;
    1117import org.openstreetmap.josm.data.Bounds;
    12 import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
    1318import org.openstreetmap.josm.io.OverpassDownloadReader.OverpassOutpoutFormat;
    1419import org.openstreetmap.josm.testutils.JOSMTestRules;
    1520import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
    1621import org.openstreetmap.josm.tools.Utils;
     22
     23import com.github.tomakehurst.wiremock.junit.WireMockRule;
    1724
    1825import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
     
    2835    @Rule
    2936    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
    30     public JOSMTestRules test = new JOSMTestRules().timeout(15000);
     37    public JOSMTestRules test = new JOSMTestRules().preferences();
     38
     39    /**
     40     * HTTP mock.
     41     */
     42    @Rule
     43    public WireMockRule wireMockRule = new WireMockRule(options().dynamicPort().usingFilesUnderDirectory(TestUtils.getTestDataRoot()));
     44
     45    private static final String NOMINATIM_URL_PATH = "/search?format=xml&q=";
     46
     47    /**
     48     * Setup test.
     49     */
     50    @Before
     51    public void setUp() {
     52        NameFinder.NOMINATIM_URL_PROP.put("http://localhost:" + wireMockRule.port() + NOMINATIM_URL_PATH);
     53    }
    3154
    3255    private String getExpandedQuery(String search) {
    3356        final String query = OverpassTurboQueryWizard.getInstance().constructQuery(search);
    34         final String request = new OverpassDownloadReader(new Bounds(1, 2, 3, 4), OverpassServerPreference.getOverpassServer(), query)
     57        final String request = new OverpassDownloadReader(new Bounds(1, 2, 3, 4), null, query)
    3558                .getRequestForBbox(1, 2, 3, 4)
    3659                .substring("interpreter?data=".length());
     
    5578    }
    5679
     80    private void stubNominatim(String query) {
     81        wireMockRule.stubFor(get(urlEqualTo(NOMINATIM_URL_PATH + query))
     82                .willReturn(aResponse()
     83                    .withStatus(200)
     84                    .withHeader("Content-Type", "text/xml")
     85                    .withBodyFile("nominatim/" + query + ".xml")));
     86    }
     87
    5788    /**
    5889     * Tests evaluating the extended query feature {@code geocodeArea}.
     
    6091    @Test
    6192    public void testGeocodeArea() {
     93        stubNominatim("London");
    6294        final String query = getExpandedQuery("amenity=drinking_water in London");
    6395        assertEquals("" +
     
    78110    @Test
    79111    public void testGeocodeUnknownArea() {
     112        stubNominatim("foo-bar-baz-does-not-exist");
    80113        final String query = OverpassDownloadReader.expandExtendedQueries("{{geocodeArea:foo-bar-baz-does-not-exist}}");
    81114        assertEquals("// Failed to evaluate {{geocodeArea:foo-bar-baz-does-not-exist}}\n", query);
Note: See TracChangeset for help on using the changeset viewer.