Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
c494c0c81b
|
|||
bb0d11d10c
|
|||
bcc47d5f05
|
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -11,11 +11,11 @@ jobs:
|
|||||||
analysis: true
|
analysis: true
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Set up Java
|
- name: Set up Java
|
||||||
uses: actions/setup-java@v2
|
uses: actions/setup-java@v3
|
||||||
with:
|
with:
|
||||||
java-version: ${{ matrix.jdk }}
|
java-version: ${{ matrix.jdk }}
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
|
16
CHANGELOG.md
16
CHANGELOG.md
@ -1,6 +1,16 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## 2.0.3 - 2022-08-30
|
||||||
|
### Security
|
||||||
|
* Updated dependencies
|
||||||
|
|
||||||
|
|
||||||
|
## 2.0.2 - 2022-04-13
|
||||||
|
### Security
|
||||||
|
* Updated dependencies
|
||||||
|
|
||||||
|
|
||||||
## 2.0.1 - 2021-10-02
|
## 2.0.1 - 2021-10-02
|
||||||
### Security
|
### Security
|
||||||
* Updated dependencies
|
* Updated dependencies
|
||||||
@ -26,6 +36,12 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
## 1.3.2 - 2022-08-30
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
* Dependency updates
|
||||||
|
|
||||||
|
|
||||||
## 1.3.1 - 2020-12-12
|
## 1.3.1 - 2020-12-12
|
||||||
### Fixed
|
### Fixed
|
||||||
* Allow reopening an `AsyncUraTripReader` without raising an exception (#13)
|
* Allow reopening an `AsyncUraTripReader` without raising an exception (#13)
|
||||||
|
@ -81,7 +81,7 @@ List<Message> msgs = ura.forStop("100000")
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.stklcode.pubtrans</groupId>
|
<groupId>de.stklcode.pubtrans</groupId>
|
||||||
<artifactId>juraclient</artifactId>
|
<artifactId>juraclient</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
22
pom.xml
22
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>de.stklcode.pubtrans</groupId>
|
<groupId>de.stklcode.pubtrans</groupId>
|
||||||
<artifactId>juraclient</artifactId>
|
<artifactId>juraclient</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.3</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
@ -50,13 +50,13 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>2.13.0</version>
|
<version>2.13.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter</artifactId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<version>5.8.1</version>
|
<version>5.9.0</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -67,8 +67,8 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.tomakehurst</groupId>
|
<groupId>com.github.tomakehurst</groupId>
|
||||||
<artifactId>wiremock</artifactId>
|
<artifactId>wiremock-jre8</artifactId>
|
||||||
<version>2.27.2</version>
|
<version>2.33.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.sonarsource.scanner.maven</groupId>
|
<groupId>org.sonarsource.scanner.maven</groupId>
|
||||||
<artifactId>sonar-maven-plugin</artifactId>
|
<artifactId>sonar-maven-plugin</artifactId>
|
||||||
<version>3.9.0.2155</version>
|
<version>3.9.1.2184</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
@ -88,15 +88,17 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>3.8.1</version>
|
<version>3.10.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<release>11</release>
|
<release>11</release>
|
||||||
|
<source>11</source>
|
||||||
|
<target>11</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.2.2</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<archive>
|
<archive>
|
||||||
<manifestEntries>
|
<manifestEntries>
|
||||||
@ -121,7 +123,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.jacoco</groupId>
|
<groupId>org.jacoco</groupId>
|
||||||
<artifactId>jacoco-maven-plugin</artifactId>
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
<version>0.8.7</version>
|
<version>0.8.8</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>prepare-agent</id>
|
<id>prepare-agent</id>
|
||||||
@ -176,7 +178,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
<version>3.3.1</version>
|
<version>3.4.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<overview>${basedir}/src/main/javadoc/overview.html</overview>
|
<overview>${basedir}/src/main/javadoc/overview.html</overview>
|
||||||
<source>11</source>
|
<source>11</source>
|
||||||
|
@ -16,17 +16,14 @@
|
|||||||
|
|
||||||
package de.stklcode.pubtrans.ura;
|
package de.stklcode.pubtrans.ura;
|
||||||
|
|
||||||
import com.github.tomakehurst.wiremock.WireMockServer;
|
|
||||||
import com.github.tomakehurst.wiremock.client.WireMock;
|
|
||||||
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
|
|
||||||
import com.github.tomakehurst.wiremock.http.Fault;
|
import com.github.tomakehurst.wiremock.http.Fault;
|
||||||
|
import com.github.tomakehurst.wiremock.junit5.WireMockExtension;
|
||||||
import de.stklcode.pubtrans.ura.exception.UraClientException;
|
import de.stklcode.pubtrans.ura.exception.UraClientException;
|
||||||
import de.stklcode.pubtrans.ura.model.Message;
|
import de.stklcode.pubtrans.ura.model.Message;
|
||||||
import de.stklcode.pubtrans.ura.model.Stop;
|
import de.stklcode.pubtrans.ura.model.Stop;
|
||||||
import de.stklcode.pubtrans.ura.model.Trip;
|
import de.stklcode.pubtrans.ura.model.Trip;
|
||||||
import org.junit.jupiter.api.AfterAll;
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.http.HttpConnectTimeoutException;
|
import java.net.http.HttpConnectTimeoutException;
|
||||||
@ -36,6 +33,7 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static com.github.tomakehurst.wiremock.client.WireMock.*;
|
import static com.github.tomakehurst.wiremock.client.WireMock.*;
|
||||||
|
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
|
||||||
import static org.hamcrest.CoreMatchers.nullValue;
|
import static org.hamcrest.CoreMatchers.nullValue;
|
||||||
import static org.hamcrest.CoreMatchers.startsWith;
|
import static org.hamcrest.CoreMatchers.startsWith;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
@ -46,27 +44,17 @@ import static org.junit.jupiter.api.Assertions.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit test for the URA Client.
|
* Unit test for the URA Client.
|
||||||
* Tests run against mocked data collected from ASEAG API (http://ivu.aseag.de) and
|
* Tests run against mocked data collected from ASEAG API (no longer available) and
|
||||||
* TFL API (http://http://countdown.api.tfl.gov.uk)
|
* TFL API (http://countdown.api.tfl.gov.uk)
|
||||||
*
|
*
|
||||||
* @author Stefan Kalscheuer
|
* @author Stefan Kalscheuer
|
||||||
*/
|
*/
|
||||||
public class UraClientTest {
|
public class UraClientTest {
|
||||||
private static WireMockServer httpMock;
|
|
||||||
|
|
||||||
@BeforeAll
|
@RegisterExtension
|
||||||
public static void setUp() {
|
public static WireMockExtension wireMock = WireMockExtension.newInstance()
|
||||||
// Initialize HTTP mock.
|
.options(wireMockConfig().dynamicPort())
|
||||||
httpMock = new WireMockServer(WireMockConfiguration.options().dynamicPort());
|
.build();
|
||||||
httpMock.start();
|
|
||||||
WireMock.configureFor("localhost", httpMock.port());
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterAll
|
|
||||||
public static void tearDown() {
|
|
||||||
httpMock.stop();
|
|
||||||
httpMock = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getStopsTest() throws UraClientException {
|
public void getStopsTest() throws UraClientException {
|
||||||
@ -74,7 +62,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(2, "instant_V2_stops.txt");
|
mockHttpToFile(2, "instant_V2_stops.txt");
|
||||||
|
|
||||||
// List stops and verify some values.
|
// List stops and verify some values.
|
||||||
List<Stop> stops = new UraClient(httpMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream").getStops();
|
List<Stop> stops = new UraClient(wireMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream").getStops();
|
||||||
assertThat(stops, hasSize(10));
|
assertThat(stops, hasSize(10));
|
||||||
assertThat(stops.get(0).getId(), is("100210"));
|
assertThat(stops.get(0).getId(), is("100210"));
|
||||||
assertThat(stops.get(1).getName(), is("Brockenberg"));
|
assertThat(stops.get(1).getName(), is("Brockenberg"));
|
||||||
@ -86,7 +74,7 @@ public class UraClientTest {
|
|||||||
mockHttpToError(500);
|
mockHttpToError(500);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
new UraClient(httpMock.baseUrl()).getStops();
|
new UraClient(wireMock.baseUrl()).getStops();
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
assertThat(e, is(instanceOf(IllegalStateException.class)));
|
assertThat(e, is(instanceOf(IllegalStateException.class)));
|
||||||
assertThat(e.getCause(), is(instanceOf(IOException.class)));
|
assertThat(e.getCause(), is(instanceOf(IOException.class)));
|
||||||
@ -100,7 +88,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(2, "instant_V2_stops_line.txt");
|
mockHttpToFile(2, "instant_V2_stops_line.txt");
|
||||||
|
|
||||||
// List stops and verify some values.
|
// List stops and verify some values.
|
||||||
List<Stop> stops = new UraClient(httpMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream")
|
List<Stop> stops = new UraClient(wireMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream")
|
||||||
.forLines("33")
|
.forLines("33")
|
||||||
.getStops();
|
.getStops();
|
||||||
assertThat(stops, hasSize(47));
|
assertThat(stops, hasSize(47));
|
||||||
@ -118,7 +106,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_stops_circle.txt");
|
mockHttpToFile(1, "instant_V1_stops_circle.txt");
|
||||||
|
|
||||||
// List stops and verify some values.
|
// List stops and verify some values.
|
||||||
List<Stop> stops = new UraClient(httpMock.baseUrl())
|
List<Stop> stops = new UraClient(wireMock.baseUrl())
|
||||||
.forPosition(51.51009, -0.1345734, 200)
|
.forPosition(51.51009, -0.1345734, 200)
|
||||||
.getStops();
|
.getStops();
|
||||||
assertThat(stops, hasSize(13));
|
assertThat(stops, hasSize(13));
|
||||||
@ -130,7 +118,7 @@ public class UraClientTest {
|
|||||||
assertThat(stops.get(5).getIndicator(), is(nullValue()));
|
assertThat(stops.get(5).getIndicator(), is(nullValue()));
|
||||||
|
|
||||||
mockHttpToFile(1, "instant_V1_stops_circle_name.txt");
|
mockHttpToFile(1, "instant_V1_stops_circle_name.txt");
|
||||||
stops = new UraClient(httpMock.baseUrl())
|
stops = new UraClient(wireMock.baseUrl())
|
||||||
.forStopsByName("Piccadilly Circus")
|
.forStopsByName("Piccadilly Circus")
|
||||||
.forPosition(51.51009, -0.1345734, 200)
|
.forPosition(51.51009, -0.1345734, 200)
|
||||||
.getStops();
|
.getStops();
|
||||||
@ -144,13 +132,13 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_trips_destination.txt");
|
mockHttpToFile(1, "instant_V1_trips_destination.txt");
|
||||||
|
|
||||||
// List stops and verify some values.
|
// List stops and verify some values.
|
||||||
List<Trip> trips = new UraClient(httpMock.baseUrl()).forDestinationNames("Piccadilly Circus").getTrips();
|
List<Trip> trips = new UraClient(wireMock.baseUrl()).forDestinationNames("Piccadilly Circus").getTrips();
|
||||||
assertThat(trips, hasSize(9));
|
assertThat(trips, hasSize(9));
|
||||||
assertThat(trips.stream().filter(t -> !t.getDestinationName().equals("Piccadilly Cir")).findAny(),
|
assertThat(trips.stream().filter(t -> !t.getDestinationName().equals("Piccadilly Cir")).findAny(),
|
||||||
is(Optional.empty()));
|
is(Optional.empty()));
|
||||||
|
|
||||||
mockHttpToFile(1, "instant_V1_trips_stop_destination.txt");
|
mockHttpToFile(1, "instant_V1_trips_stop_destination.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl())
|
trips = new UraClient(wireMock.baseUrl())
|
||||||
.forStops("156")
|
.forStops("156")
|
||||||
.forDestinationNames("Marble Arch")
|
.forDestinationNames("Marble Arch")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
@ -167,11 +155,11 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_trips_towards.txt");
|
mockHttpToFile(1, "instant_V1_trips_towards.txt");
|
||||||
|
|
||||||
/* List stops and verify some values */
|
/* List stops and verify some values */
|
||||||
List<Trip> trips = new UraClient(httpMock.baseUrl()).towards("Marble Arch").getTrips();
|
List<Trip> trips = new UraClient(wireMock.baseUrl()).towards("Marble Arch").getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
|
|
||||||
mockHttpToFile(1, "instant_V1_trips_stop_towards.txt");
|
mockHttpToFile(1, "instant_V1_trips_stop_towards.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl()).forStops("156").towards("Marble Arch").getTrips();
|
trips = new UraClient(wireMock.baseUrl()).forStops("156").towards("Marble Arch").getTrips();
|
||||||
assertThat(trips, hasSize(17));
|
assertThat(trips, hasSize(17));
|
||||||
assertThat(trips.stream().filter(t -> !t.getStop().getId().equals("156")).findAny(), is(Optional.empty()));
|
assertThat(trips.stream().filter(t -> !t.getStop().getId().equals("156")).findAny(), is(Optional.empty()));
|
||||||
}
|
}
|
||||||
@ -182,7 +170,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_trips_all.txt");
|
mockHttpToFile(1, "instant_V1_trips_all.txt");
|
||||||
|
|
||||||
// Get trips without filters and verify some values.
|
// Get trips without filters and verify some values.
|
||||||
List<Trip> trips = new UraClient(httpMock.baseUrl()).getTrips();
|
List<Trip> trips = new UraClient(wireMock.baseUrl()).getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
assertThat(trips.get(0).getId(), is("27000165015001"));
|
assertThat(trips.get(0).getId(), is("27000165015001"));
|
||||||
assertThat(trips.get(1).getLineID(), is("55"));
|
assertThat(trips.get(1).getLineID(), is("55"));
|
||||||
@ -199,7 +187,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(2, "instant_V2_trips_all.txt");
|
mockHttpToFile(2, "instant_V2_trips_all.txt");
|
||||||
|
|
||||||
// Get trips without filters and verify some values.
|
// Get trips without filters and verify some values.
|
||||||
trips = new UraClient(httpMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream")
|
trips = new UraClient(wireMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
assertThat(trips.get(0).getId(), is("27000165015001"));
|
assertThat(trips.get(0).getId(), is("27000165015001"));
|
||||||
@ -215,13 +203,13 @@ public class UraClientTest {
|
|||||||
|
|
||||||
// Get limited number of trips.
|
// Get limited number of trips.
|
||||||
mockHttpToFile(1, "instant_V1_trips_all.txt");
|
mockHttpToFile(1, "instant_V1_trips_all.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl()).getTrips(5);
|
trips = new UraClient(wireMock.baseUrl()).getTrips(5);
|
||||||
assertThat(trips, hasSize(5));
|
assertThat(trips, hasSize(5));
|
||||||
|
|
||||||
// Test mockException handling.
|
// Test mockException handling.
|
||||||
mockHttpToError(502);
|
mockHttpToError(502);
|
||||||
try {
|
try {
|
||||||
new UraClient(httpMock.baseUrl()).getTrips();
|
new UraClient(wireMock.baseUrl()).getTrips();
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
assertThat(e, is(instanceOf(IllegalStateException.class)));
|
assertThat(e, is(instanceOf(IllegalStateException.class)));
|
||||||
assertThat(e.getCause(), is(instanceOf(IOException.class)));
|
assertThat(e.getCause(), is(instanceOf(IOException.class)));
|
||||||
@ -231,7 +219,7 @@ public class UraClientTest {
|
|||||||
mockHttpToException();
|
mockHttpToException();
|
||||||
UraClientException exception = assertThrows(
|
UraClientException exception = assertThrows(
|
||||||
UraClientException.class,
|
UraClientException.class,
|
||||||
() -> new UraClient(httpMock.baseUrl()).getTrips(),
|
() -> new UraClient(wireMock.baseUrl()).getTrips(),
|
||||||
"Expected reader to raise an exception"
|
"Expected reader to raise an exception"
|
||||||
);
|
);
|
||||||
assertEquals("Failed to read trips from API", exception.getMessage(), "Unexpected error message");
|
assertEquals("Failed to read trips from API", exception.getMessage(), "Unexpected error message");
|
||||||
@ -244,7 +232,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_trips_stop.txt");
|
mockHttpToFile(1, "instant_V1_trips_stop.txt");
|
||||||
|
|
||||||
// Get trips for stop ID 100000 (Aachen Bushof) and verify some values.
|
// Get trips for stop ID 100000 (Aachen Bushof) and verify some values.
|
||||||
List<Trip> trips = new UraClient(httpMock.baseUrl())
|
List<Trip> trips = new UraClient(wireMock.baseUrl())
|
||||||
.forStops("100000")
|
.forStops("100000")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
@ -256,7 +244,7 @@ public class UraClientTest {
|
|||||||
|
|
||||||
// Get trips for stop name "Uniklinik" and verify some values.
|
// Get trips for stop name "Uniklinik" and verify some values.
|
||||||
mockHttpToFile(1, "instant_V1_trips_stop_name.txt");
|
mockHttpToFile(1, "instant_V1_trips_stop_name.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl())
|
trips = new UraClient(wireMock.baseUrl())
|
||||||
.forStopsByName("Uniklinik")
|
.forStopsByName("Uniklinik")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
@ -270,7 +258,7 @@ public class UraClientTest {
|
|||||||
mockHttpToException();
|
mockHttpToException();
|
||||||
UraClientException exception = assertThrows(
|
UraClientException exception = assertThrows(
|
||||||
UraClientException.class,
|
UraClientException.class,
|
||||||
() -> new UraClient(httpMock.baseUrl()).getStops(),
|
() -> new UraClient(wireMock.baseUrl()).getStops(),
|
||||||
"Expected reader to raise an exception"
|
"Expected reader to raise an exception"
|
||||||
);
|
);
|
||||||
assertEquals("Failed to read stops from API", exception.getMessage(), "Unexpected error message");
|
assertEquals("Failed to read stops from API", exception.getMessage(), "Unexpected error message");
|
||||||
@ -283,7 +271,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_trips_line.txt");
|
mockHttpToFile(1, "instant_V1_trips_line.txt");
|
||||||
|
|
||||||
// Get trips for line ID 3 and verify some values.
|
// Get trips for line ID 3 and verify some values.
|
||||||
List<Trip> trips = new UraClient(httpMock.baseUrl())
|
List<Trip> trips = new UraClient(wireMock.baseUrl())
|
||||||
.forLines("3")
|
.forLines("3")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
@ -295,7 +283,7 @@ public class UraClientTest {
|
|||||||
|
|
||||||
// Get trips for line name "3.A" and verify some values.
|
// Get trips for line name "3.A" and verify some values.
|
||||||
mockHttpToFile(1, "instant_V1_trips_line_name.txt");
|
mockHttpToFile(1, "instant_V1_trips_line_name.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl())
|
trips = new UraClient(wireMock.baseUrl())
|
||||||
.forLinesByName("3.A")
|
.forLinesByName("3.A")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
assertThat(trips, hasSize(10));
|
assertThat(trips, hasSize(10));
|
||||||
@ -307,7 +295,7 @@ public class UraClientTest {
|
|||||||
|
|
||||||
// Get trips for line 3 with direction 1 and verify some values.
|
// Get trips for line 3 with direction 1 and verify some values.
|
||||||
mockHttpToFile(1, "instant_V1_trips_line_direction.txt");
|
mockHttpToFile(1, "instant_V1_trips_line_direction.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl())
|
trips = new UraClient(wireMock.baseUrl())
|
||||||
.forLines("412")
|
.forLines("412")
|
||||||
.forDirection(2)
|
.forDirection(2)
|
||||||
.getTrips();
|
.getTrips();
|
||||||
@ -317,7 +305,7 @@ public class UraClientTest {
|
|||||||
|
|
||||||
// Test lineID and direction in different order.
|
// Test lineID and direction in different order.
|
||||||
mockHttpToFile(1, "instant_V1_trips_line_direction.txt");
|
mockHttpToFile(1, "instant_V1_trips_line_direction.txt");
|
||||||
trips = new UraClient(httpMock.baseUrl())
|
trips = new UraClient(wireMock.baseUrl())
|
||||||
.forDirection(2)
|
.forDirection(2)
|
||||||
.forLines("412")
|
.forLines("412")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
@ -332,7 +320,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_trips_stop_line.txt");
|
mockHttpToFile(1, "instant_V1_trips_stop_line.txt");
|
||||||
|
|
||||||
// Get trips for line ID 25 and 25 at stop 100000 and verify some values.
|
// Get trips for line ID 25 and 25 at stop 100000 and verify some values.
|
||||||
List<Trip> trips = new UraClient(httpMock.baseUrl())
|
List<Trip> trips = new UraClient(wireMock.baseUrl())
|
||||||
.forLines("25", "35")
|
.forLines("25", "35")
|
||||||
.forStops("100000")
|
.forStops("100000")
|
||||||
.getTrips();
|
.getTrips();
|
||||||
@ -353,7 +341,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(1, "instant_V1_messages.txt");
|
mockHttpToFile(1, "instant_V1_messages.txt");
|
||||||
|
|
||||||
// Get messages without filter and verify some values.
|
// Get messages without filter and verify some values.
|
||||||
List<Message> messages = new UraClient(httpMock.baseUrl())
|
List<Message> messages = new UraClient(wireMock.baseUrl())
|
||||||
.getMessages();
|
.getMessages();
|
||||||
assertThat(messages, hasSize(2));
|
assertThat(messages, hasSize(2));
|
||||||
assertThat(messages.get(0).getStop().getId(), is("100707"));
|
assertThat(messages.get(0).getStop().getId(), is("100707"));
|
||||||
@ -368,7 +356,7 @@ public class UraClientTest {
|
|||||||
mockHttpToException();
|
mockHttpToException();
|
||||||
UraClientException exception = assertThrows(
|
UraClientException exception = assertThrows(
|
||||||
UraClientException.class,
|
UraClientException.class,
|
||||||
() -> new UraClient(httpMock.baseUrl()).getMessages(),
|
() -> new UraClient(wireMock.baseUrl()).getMessages(),
|
||||||
"Expected reader to raise an exception"
|
"Expected reader to raise an exception"
|
||||||
);
|
);
|
||||||
assertEquals("Failed to read messages from API", exception.getMessage(), "Unexpected error message");
|
assertEquals("Failed to read messages from API", exception.getMessage(), "Unexpected error message");
|
||||||
@ -381,7 +369,7 @@ public class UraClientTest {
|
|||||||
mockHttpToFile(2, "instant_V2_messages_stop.txt");
|
mockHttpToFile(2, "instant_V2_messages_stop.txt");
|
||||||
|
|
||||||
// Get trips for stop ID 100707 (Berensberger Str.) and verify some values.
|
// Get trips for stop ID 100707 (Berensberger Str.) and verify some values.
|
||||||
List<Message> messages = new UraClient(httpMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream")
|
List<Message> messages = new UraClient(wireMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream")
|
||||||
.forStops("100707")
|
.forStops("100707")
|
||||||
.getMessages();
|
.getMessages();
|
||||||
assertThat(messages, hasSize(1));
|
assertThat(messages, hasSize(1));
|
||||||
@ -407,14 +395,14 @@ public class UraClientTest {
|
|||||||
assertTrue(exception.getCause() instanceof HttpConnectTimeoutException, "Exception cause is not HttpConnectionTimeoutException");
|
assertTrue(exception.getCause() instanceof HttpConnectTimeoutException, "Exception cause is not HttpConnectionTimeoutException");
|
||||||
|
|
||||||
// Mock the HTTP call with delay of 200ms, but immediate connection.
|
// Mock the HTTP call with delay of 200ms, but immediate connection.
|
||||||
WireMock.stubFor(
|
wireMock.stubFor(
|
||||||
get(urlPathEqualTo("/interfaces/ura/instant_V1")).willReturn(
|
get(urlPathEqualTo("/interfaces/ura/instant_V1")).willReturn(
|
||||||
aResponse().withFixedDelay(200).withBodyFile("instant_V1_trips_destination.txt")
|
aResponse().withFixedDelay(200).withBodyFile("instant_V1_trips_destination.txt")
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
assertDoesNotThrow(
|
assertDoesNotThrow(
|
||||||
() -> new UraClient(
|
() -> new UraClient(
|
||||||
UraClientConfiguration.forBaseURL(httpMock.baseUrl())
|
UraClientConfiguration.forBaseURL(wireMock.baseUrl())
|
||||||
.withConnectTimeout(Duration.ofMillis(100))
|
.withConnectTimeout(Duration.ofMillis(100))
|
||||||
.build()
|
.build()
|
||||||
).forDestinationNames("Piccadilly Circus").getTrips(),
|
).forDestinationNames("Piccadilly Circus").getTrips(),
|
||||||
@ -425,7 +413,7 @@ public class UraClientTest {
|
|||||||
exception = assertThrows(
|
exception = assertThrows(
|
||||||
UraClientException.class,
|
UraClientException.class,
|
||||||
() -> new UraClient(
|
() -> new UraClient(
|
||||||
UraClientConfiguration.forBaseURL(httpMock.baseUrl())
|
UraClientConfiguration.forBaseURL(wireMock.baseUrl())
|
||||||
.withTimeout(Duration.ofMillis(100))
|
.withTimeout(Duration.ofMillis(100))
|
||||||
.build()
|
.build()
|
||||||
).forDestinationNames("Piccadilly Circus").getTrips(),
|
).forDestinationNames("Piccadilly Circus").getTrips(),
|
||||||
@ -435,7 +423,7 @@ public class UraClientTest {
|
|||||||
|
|
||||||
assertDoesNotThrow(
|
assertDoesNotThrow(
|
||||||
() -> new UraClient(
|
() -> new UraClient(
|
||||||
UraClientConfiguration.forBaseURL(httpMock.baseUrl())
|
UraClientConfiguration.forBaseURL(wireMock.baseUrl())
|
||||||
.withTimeout(Duration.ofMillis(300))
|
.withTimeout(Duration.ofMillis(300))
|
||||||
.build()
|
.build()
|
||||||
).forDestinationNames("Piccadilly Circus").getTrips(),
|
).forDestinationNames("Piccadilly Circus").getTrips(),
|
||||||
@ -444,7 +432,7 @@ public class UraClientTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void mockHttpToFile(int version, String resourceFile) {
|
private static void mockHttpToFile(int version, String resourceFile) {
|
||||||
WireMock.stubFor(
|
wireMock.stubFor(
|
||||||
get(urlPathEqualTo("/interfaces/ura/instant_V" + version)).willReturn(
|
get(urlPathEqualTo("/interfaces/ura/instant_V" + version)).willReturn(
|
||||||
aResponse().withBodyFile(resourceFile)
|
aResponse().withBodyFile(resourceFile)
|
||||||
)
|
)
|
||||||
@ -452,7 +440,7 @@ public class UraClientTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void mockHttpToError(int code) {
|
private static void mockHttpToError(int code) {
|
||||||
WireMock.stubFor(
|
wireMock.stubFor(
|
||||||
get(anyUrl()).willReturn(
|
get(anyUrl()).willReturn(
|
||||||
aResponse().withStatus(code)
|
aResponse().withStatus(code)
|
||||||
)
|
)
|
||||||
@ -460,7 +448,7 @@ public class UraClientTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void mockHttpToException() {
|
private static void mockHttpToException() {
|
||||||
WireMock.stubFor(
|
wireMock.stubFor(
|
||||||
get(anyUrl()).willReturn(
|
get(anyUrl()).willReturn(
|
||||||
aResponse().withFault(Fault.MALFORMED_RESPONSE_CHUNK)
|
aResponse().withFault(Fault.MALFORMED_RESPONSE_CHUNK)
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user