Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/io/download/MapillarySequenceDownloadThreadTest.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/io/download/MapillarySequenceDownloadThreadTest.java	(revision 31831)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/io/download/MapillarySequenceDownloadThreadTest.java	(revision 31833)
@@ -6,5 +6,4 @@
 import static org.junit.Assert.assertTrue;
 
-import java.util.Locale;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -15,7 +14,4 @@
 import org.openstreetmap.josm.plugins.mapillary.AbstractTest;
 import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryPlugin;
-import org.openstreetmap.josm.plugins.mapillary.io.download.MapillaryDownloader;
-import org.openstreetmap.josm.plugins.mapillary.io.download.MapillarySequenceDownloadThread;
 
 /**
Index: applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryURLTest.java
===================================================================
--- applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryURLTest.java	(revision 31831)
+++ applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryURLTest.java	(revision 31833)
@@ -3,4 +3,5 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -61,15 +62,27 @@
   @Test
   public void testConnectURL() throws MalformedURLException {
-    assertEquals(
-        new URL("https://www.mapillary.com/connect/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&scope=user%3Aread+public%3Aupload+public%3Awrite&response_type=token&redirect_uri=http%3A%2F%2Fredirect-host%2F%C3%A4"),
-        MapillaryURL.connectURL("http://redirect-host/ä")
-    );
-    assertEquals(
-        new URL("https://www.mapillary.com/connect/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&scope=user%3Aread+public%3Aupload+public%3Awrite&response_type=token"),
-        MapillaryURL.connectURL(null)
-    );
-    assertEquals(
-        new URL("https://www.mapillary.com/connect/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&scope=user%3Aread+public%3Aupload+public%3Awrite&response_type=token"),
-        MapillaryURL.connectURL("")
+    assertUrlEquals(
+        MapillaryURL.connectURL("http://redirect-host/ä"),
+        "https://www.mapillary.com/connect/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "scope=user%3Aread+public%3Aupload+public%3Awrite",
+        "response_type=token",
+        "redirect_uri=http%3A%2F%2Fredirect-host%2F%C3%A4"
+    );
+
+    assertUrlEquals(
+        MapillaryURL.connectURL(null),
+        "https://www.mapillary.com/connect/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "scope=user%3Aread+public%3Aupload+public%3Awrite",
+        "response_type=token"
+    );
+
+    assertUrlEquals(
+        MapillaryURL.connectURL(""),
+        "https://www.mapillary.com/connect/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "scope=user%3Aread+public%3Aupload+public%3Awrite",
+        "response_type=token"
     );
   }
@@ -77,11 +90,21 @@
   @Test
   public void testSearchImageURL() throws MalformedURLException {
-    assertEquals(
-        new URL("https://a.mapillary.com/v2/search/im/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&min_lon=2.220000&max_lat=3.333000&max_lon=4.444400&limit=20&page=42&min_lat=1.100000"),
-        MapillaryURL.searchImageURL(new Bounds(1.1, 2.22, 3.333, 4.4444), 42)
-    );
-    assertEquals(
-        new URL("https://a.mapillary.com/v2/search/im/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&limit=20&page=-73"),
-        MapillaryURL.searchImageURL(null, -73)
+    assertUrlEquals(
+        MapillaryURL.searchImageURL(new Bounds(1.1, 2.22, 3.333, 4.4444), 42),
+        "https://a.mapillary.com/v2/search/im/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "min_lon=2.220000",
+        "max_lon=4.444400",
+        "min_lat=1.100000",
+        "max_lat=3.333000",
+        "limit=20",
+        "page=42"
+    );
+    assertUrlEquals(
+        MapillaryURL.searchImageURL(null, -73),
+        "https://a.mapillary.com/v2/search/im/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "limit=20",
+        "page=-73"
     );
   }
@@ -89,11 +112,21 @@
   @Test
   public void testSearchSequenceURL() throws MalformedURLException {
-    assertEquals(
-        new URL("https://a.mapillary.com/v2/search/s/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&min_lon=-66.666666&max_lat=77.777778&max_lon=88.888889&limit=10&page=42&min_lat=-55.555550"),
-        MapillaryURL.searchSequenceURL(new Bounds(-55.55555, -66.666666, 77.7777777, 88.88888888, false), 42)
-    );
-    assertEquals(
-        new URL("https://a.mapillary.com/v2/search/s/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&limit=10&page=-73"),
-        MapillaryURL.searchSequenceURL(null, -73)
+    assertUrlEquals(
+        MapillaryURL.searchSequenceURL(new Bounds(-55.55555, -66.666666, 77.7777777, 88.88888888, false), 42),
+        "https://a.mapillary.com/v2/search/s/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "min_lon=-66.666666",
+        "max_lon=88.888889",
+        "min_lat=-55.555550",
+        "max_lat=77.777778",
+        "limit=10",
+        "page=42"
+    );
+    assertUrlEquals(
+        MapillaryURL.searchSequenceURL(null, -73),
+        "https://a.mapillary.com/v2/search/s/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "limit=10",
+        "page=-73"
     );
   }
@@ -101,11 +134,21 @@
   @Test
   public void testSearchTrafficSignURL() throws MalformedURLException {
-    assertEquals(
-        new URL("https://a.mapillary.com/v2/search/im/or/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&min_lon=2.220000&max_lat=3.333000&max_lon=4.444400&limit=20&page=-42&min_lat=1.100000"),
-        MapillaryURL.searchTrafficSignURL(new Bounds(1.1, 2.22, 3.333, 4.4444), -42)
-    );
-    assertEquals(
-        new URL("https://a.mapillary.com/v2/search/im/or/?client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz&limit=20&page=73"),
-        MapillaryURL.searchTrafficSignURL(null, 73)
+    assertUrlEquals(
+        MapillaryURL.searchTrafficSignURL(new Bounds(1.1, 2.22, 3.333, 4.4444), -42),
+        "https://a.mapillary.com/v2/search/im/or/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "min_lon=2.220000",
+        "max_lon=4.444400",
+        "min_lat=1.100000",
+        "max_lat=3.333000",
+        "limit=20",
+        "page=-42"
+    );
+    assertUrlEquals(
+        MapillaryURL.searchTrafficSignURL(null, 73),
+        "https://a.mapillary.com/v2/search/im/or/",
+        "client_id=T1Fzd20xZjdtR0s1VDk5OFNIOXpYdzoxNDYyOGRkYzUyYTFiMzgz",
+        "limit=20",
+        "page=73"
     );
   }
@@ -128,5 +171,6 @@
 
   @Test
-  public void testString2URL() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
+  public void testString2MalformedURL()
+      throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
     Method method = MapillaryURL.class.getDeclaredMethod("string2URL", String.class);
     method.setAccessible(true);
@@ -138,3 +182,19 @@
     TestUtil.testUtilityClass(MapillaryURL.class);
   }
+
+  private void assertUrlEquals(URL actualUrl, String expectedBaseUrl, String... expectedParams) {
+    assertEquals(expectedBaseUrl, actualUrl.toString().substring(0, actualUrl.toString().indexOf('?')));
+    String[] actualParams = actualUrl.getQuery().split("&");
+    assertEquals(expectedParams.length, actualParams.length);
+    for (int exIndex = 0; exIndex < expectedParams.length; exIndex++) {
+      boolean parameterIsPresent = false;
+      for (int acIndex = 0; !parameterIsPresent && acIndex < actualParams.length; acIndex++) {
+        parameterIsPresent |= actualParams[acIndex].equals(expectedParams[exIndex]);
+      }
+      assertTrue(
+          expectedParams[exIndex] + " was expected in the query string of " + actualUrl.toString() + " but wasn't there." ,
+          parameterIsPresent
+      );
+    }
+  }
 }
