Commit c45367d0 authored by Matija Obreza's avatar Matija Obreza

Base classes for tests of GLIS Production and Test environments

- Uses GLIS_USERNAME, GLIS_PASSWORD env vars for authentication against production
- Uses GLISTEST_USERNAME, GLISTEST_PASSWORD env vars for test
- GLIS_DEBUG env var sets API client to debug mode
parent 0e0d1a80
......@@ -5,8 +5,10 @@ stages:
run tests in branches:
stage: compile
image: maven:3-jdk-8
before_script:
- echo "Using username ${GLISTEST_USERNAME} for authentication against https://glistest.planttreaty.org"
- echo "Using username ${GLIS_USERNAME} for authentication against https://ssl.fao.org"
script:
- echo "Using username ${GLIS_USERNAME} for authentication against https://glistest.planttreaty.org"
- MAVEN_OPTS="${MAVEN_OPTS} -Dorg.slf4j.simpleLogger.defaultLogLevel=warn" mvn test -B -U -DskipTests=false
except:
- master
......@@ -18,8 +20,9 @@ publish snapshot artifacts:
before_script:
- echo "${GPG_KEY_SECRET}" | gpg --batch --import
- gpg --list-keys
- echo "Using username ${GLISTEST_USERNAME} for authentication against https://glistest.planttreaty.org"
- echo "Using username ${GLIS_USERNAME} for authentication against https://ssl.fao.org"
script:
- echo "Using username ${GLIS_USERNAME} for authentication against https://glistest.planttreaty.org"
- MAVEN_OPTS="${MAVEN_OPTS} -Dorg.slf4j.simpleLogger.defaultLogLevel=warn" mvn clean deploy -B -U --settings .ci-maven-settings.xml -B -U -DskipTests=false
only:
- master
......@@ -30,8 +33,9 @@ publish artifacts to central:
before_script:
- echo "${GPG_KEY_SECRET}" | gpg --batch --import
- gpg --list-keys
- echo "Using username ${GLISTEST_USERNAME} for authentication against https://glistest.planttreaty.org"
- echo "Using username ${GLIS_USERNAME} for authentication against https://ssl.fao.org"
script:
- echo "Using username ${GLIS_USERNAME} for authentication against https://glistest.planttreaty.org"
- MAVEN_OPTS="${MAVEN_OPTS} -Dorg.slf4j.simpleLogger.defaultLogLevel=warn" mvn -P release clean deploy --settings .ci-maven-settings.xml -B -U -DskipTests=false
only:
- /^glis\-client\-/
......@@ -85,6 +85,12 @@
<version>2.2</version>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>org.genesys-pgr</groupId>
<artifactId>glis-client-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
......
......@@ -16,17 +16,12 @@
package org.genesys.glis.v1.api;
import org.genesys.glis.test.ProductionEnvironmentTest;
import org.genesys.glis.v1.invoker.ApiClient;
import org.genesys.glis.v1.invoker.auth.HttpBasicAuth;
import org.junit.BeforeClass;
public abstract class BaseApiTest {
public static final String GLIS_DOI_PATTERN = "^(doi:)?10\\.[0-9]+\\/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]+[0123456789ABCDEFGHJKMNPQRSTVWXYZ~\\*\\$=U]$";
public static final String THE_DOI = "10.0155/AA";
protected static String GLIS_USERNAME = System.getenv("GLIS_USERNAME");
protected static String GLIS_PASSWORD = System.getenv("GLIS_PASSWORD");
public abstract class BaseApiTest extends ProductionEnvironmentTest {
protected static ApiClient defaultClient;
......@@ -35,14 +30,14 @@ public abstract class BaseApiTest {
@BeforeClass
public static void config() {
defaultClient = new ApiClient();
if ("true".equals(System.getenv("GLIS_DEBUG"))) {
defaultClient.setDebugging(true);
}
defaultClient.setDebugging(isDebugging());
defaultClient.setBasePath(getBasePath());
// Configure HTTP basic authorization: glis_auth
HttpBasicAuth easySmtaAuth = (HttpBasicAuth) defaultClient.getAuthentication("easySmta");
easySmtaAuth.setUsername(GLIS_USERNAME);
easySmtaAuth.setUsername(getUsername());
System.out.println("Using GLIS username " + easySmtaAuth.getUsername());
easySmtaAuth.setPassword(GLIS_PASSWORD);
easySmtaAuth.setPassword(getPassword());
}
}
......@@ -16,8 +16,9 @@
package org.genesys.glis.v1.api;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import java.util.List;
......@@ -48,15 +49,14 @@ public class QueryApiTest extends BaseApiTest {
String oper = null;
List<Relationship> response = queryApi.listRelationships(THE_DOI, role, oper);
// GLIS test environment is occasionally cleaned
// assertThat(response.size(), greaterThan(0));
assertThat(response.size(), equalTo(0));
}
/**
* GLIS vocabularies
*
* To describe the kind of information that will be found in the targets, GLIS adopts a simple controlled
* vocabulary.
* To describe the kind of information that will be found in the targets, GLIS
* adopts a simple controlled vocabulary.
*
* @throws ApiException if the Api call fails
*/
......@@ -77,7 +77,6 @@ public class QueryApiTest extends BaseApiTest {
public void searchTest() throws ApiException {
Integer page = null;
Integer perPage = null;
List<String> lang = null;
// String doi = null;
String identifier = null;
String genus = null;
......@@ -104,27 +103,23 @@ public class QueryApiTest extends BaseApiTest {
String biostatus = null;
String mlsstatus = null;
String targetkw = null;
List<PGRFA> response = queryApi.search(page, perPage, null, THE_DOI, identifier, genus, species, name, holdwiews, holdpid, holdname, holdcountry, methodcode, provwiews, provpid, provname,
provcountry, provenance, collwiews, collpid, collname, collcountry, bredwiews, bredpid, bredname, bredcountry, biostatus, mlsstatus, targetkw);
List<PGRFA> response = queryApi.search(page, perPage, null, THE_DOI, identifier, genus, species, name, holdwiews, holdpid, holdname, holdcountry, methodcode, provwiews,
provpid, provname, provcountry, provenance, collwiews, collpid, collname, collcountry, bredwiews, bredpid, bredname, bredcountry, biostatus, mlsstatus, targetkw);
// assertThat(response.size(), greaterThan(0));
assertThat(response.size(), equalTo(1));
}
/**
* Get PGRFA relationships
*
* Multiple status values can be provided with comma separated strings
* List DOI Holders
*
* @throws ApiException if the Api call fails
*/
@Test
public void listDOIHolders() throws ApiException {
DOIArray dois=new DOIArray();
DOIArray dois = new DOIArray();
dois.addDoisItem(THE_DOI);
List<DOIHolder> response = queryApi.listHolders(dois);
// GLIS test environment is occasionally cleaned
// assertThat(response.size(), greaterThan(0));
assertThat(response.size(), equalTo(1));
}
}
......@@ -42,6 +42,12 @@
<version>${gson-version}</version>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>org.genesys-pgr</groupId>
<artifactId>glis-client-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
......
......@@ -16,29 +16,25 @@
package org.genesys.glis.v1.api;
import org.genesys.glis.test.ProductionEnvironmentTest;
import org.genesys.glis.v1.invoker.ApiClient;
import org.genesys.glis.v1.invoker.auth.HttpBasicAuth;
import org.junit.BeforeClass;
public abstract class BaseApiTest {
public static final String THE_DOI = "10.0155/AA";
protected static String GLIS_USERNAME = System.getenv("GLIS_USERNAME");
protected static String GLIS_PASSWORD = System.getenv("GLIS_PASSWORD");
public abstract class BaseApiTest extends ProductionEnvironmentTest {
protected static ApiClient defaultClient;
@BeforeClass
public static void config() {
defaultClient = new ApiClient();
if ("true".equals(System.getenv("GLIS_DEBUG"))) {
defaultClient.setDebugging(true);
}
defaultClient.setDebugging(isDebugging());
defaultClient.setBasePath(getBasePath());
// Configure HTTP basic authorization: glis_auth
HttpBasicAuth easySmtaAuth = (HttpBasicAuth) defaultClient.getAuthentication("easySmta");
easySmtaAuth.setUsername(GLIS_USERNAME);
easySmtaAuth.setUsername(getUsername());
System.out.println("Using GLIS username " + easySmtaAuth.getUsername());
easySmtaAuth.setPassword(GLIS_PASSWORD);
easySmtaAuth.setPassword(getPassword());
}
}
......@@ -16,8 +16,9 @@
package org.genesys.glis.v1.api;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import java.util.List;
......@@ -38,15 +39,13 @@ public class QueryApiTest extends BaseApiTest {
/**
* Find passport data on PGRFA in GLIS
*
*
*
* @throws ApiException if the Api call fails
*/
@Test
public void findPgrfaTest() throws ApiException {
List<PGRFA> response = api.search(null, null, null, THE_DOI, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null);
assertThat(response.size(), greaterThan(0));
List<PGRFA> response = api.search(null, null, null, THE_DOI, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null);
assertThat(response.size(), equalTo(1));
}
/**
......@@ -62,15 +61,14 @@ public class QueryApiTest extends BaseApiTest {
String oper = null;
List<Relationship> response = api.listRelationships(THE_DOI, role, oper);
// GLIS test environment is occasionally cleaned
// assertThat(response.size(), greaterThan(0));
assertThat(response.size(), equalTo(0));
}
/**
* GLIS vocabularies
*
* To describe the kind of information that will be found in the targets, GLIS adopts a simple controlled
* vocabulary.
* To describe the kind of information that will be found in the targets, GLIS
* adopts a simple controlled vocabulary.
*
* @throws ApiException if the Api call fails
*/
......
......@@ -42,6 +42,7 @@
</issueManagement>
<modules>
<module>tests</module>
<module>okhttp-gson</module>
<module>jersey2</module>
<module>resteasy</module>
......
......@@ -76,6 +76,12 @@
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>org.genesys-pgr</groupId>
<artifactId>glis-client-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
......
......@@ -16,34 +16,27 @@
package org.genesys.glis.v1.api;
import org.genesys.glis.test.ProductionEnvironmentTest;
import org.genesys.glis.v1.invoker.ApiClient;
import org.genesys.glis.v1.invoker.auth.HttpBasicAuth;
import org.junit.BeforeClass;
public abstract class BaseApiTest {
public static final String THE_DOI = "10.0155/AA";
protected static String GLIS_USERNAME = System.getenv("GLIS_USERNAME");
protected static String GLIS_PASSWORD = System.getenv("GLIS_PASSWORD");
public abstract class BaseApiTest extends ProductionEnvironmentTest {
protected static ApiClient defaultClient;
@BeforeClass
public static void config() {
defaultClient = new ApiClient();
if ("true".equals(System.getenv("GLIS_DEBUG"))) {
defaultClient.setDebugging(true);
}
if (System.getenv("GLIS_URL") != null) {
defaultClient.setBasePath(System.getenv("GLIS_URL"));
}
defaultClient.setDebugging(isDebugging());
defaultClient.setBasePath(getBasePath());
System.out.println("Using GLIS at " + defaultClient.getBasePath());
// Configure HTTP basic authorization: glis_auth
HttpBasicAuth easySmtaAuth = (HttpBasicAuth) defaultClient.getAuthentication("easySmta");
easySmtaAuth.setUsername(GLIS_USERNAME);
easySmtaAuth.setUsername(getUsername());
System.out.println("Using GLIS username " + easySmtaAuth.getUsername());
easySmtaAuth.setPassword(GLIS_PASSWORD);
easySmtaAuth.setPassword(getPassword());
}
}
......@@ -16,8 +16,9 @@
package org.genesys.glis.v1.api;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.util.List;
......@@ -49,15 +50,14 @@ public class QueryApiTest extends BaseApiTest {
String oper = null;
List<Relationship> response = api.listRelationships(THE_DOI, role, oper);
// GLIS test environment is occasionally cleaned
// assertThat(response.size(), greaterThan(0));
assertThat(response.size(), is(0));
}
/**
* GLIS vocabularies
*
* To describe the kind of information that will be found in the targets, GLIS adopts a simple controlled
* vocabulary.
* To describe the kind of information that will be found in the targets, GLIS
* adopts a simple controlled vocabulary.
*
* @throws ApiException if the Api call fails
*/
......@@ -105,10 +105,10 @@ public class QueryApiTest extends BaseApiTest {
String biostatus = null;
String mlsstatus = null;
String targetkw = null;
List<PGRFA> response = api.search(page, perPage, lang, THE_DOI, identifier, genus, species, name, holdwiews, holdpid, holdname, holdcountry, methodcode, provwiews, provpid, provname,
provcountry, provenance, collwiews, collpid, collname, collcountry, bredwiews, bredpid, bredname, bredcountry, biostatus, mlsstatus, targetkw);
List<PGRFA> response = api.search(page, perPage, lang, THE_DOI, identifier, genus, species, name, holdwiews, holdpid, holdname, holdcountry, methodcode, provwiews, provpid,
provname, provcountry, provenance, collwiews, collpid, collname, collcountry, bredwiews, bredpid, bredname, bredcountry, biostatus, mlsstatus, targetkw);
// assertThat(response.size(), greaterThan(0));
assertThat(response.size(), is(0));
}
}
......@@ -75,6 +75,12 @@
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.genesys-pgr</groupId>
<artifactId>glis-client-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
......
......@@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
import org.genesys.glis.test.ProductionEnvironmentTest;
import org.genesys.glis.v1.invoker.ApiClient;
import org.genesys.glis.v1.invoker.auth.HttpBasicAuth;
import org.junit.BeforeClass;
......@@ -37,19 +38,7 @@ import org.springframework.web.client.RestTemplate;
*
* @author Matija Obreza
*/
public abstract class ProductionApiTest {
public static final String GLIS_DOI_PATTERN = "^(doi:)?10\\.[0-9]+\\/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]+[0123456789ABCDEFGHJKMNPQRSTVWXYZ~\\*\\$=U]$";
/**
* This test DOI is a sweet potato accession at CIP, Lima, Peru.
*/
public static final String THE_DOI = "10.18730/583E";
private static final String GLIS_PRODUCTION_URL = "https://ssl.fao.org";
protected static String GLIS_USERNAME = System.getenv("GLIS_USERNAME");
protected static String GLIS_PASSWORD = System.getenv("GLIS_PASSWORD");
public abstract class ProductionEnvironmentAPITest extends ProductionEnvironmentTest {
protected static ApiClient defaultClient;
......@@ -69,18 +58,15 @@ public abstract class ProductionApiTest {
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(restTemplate.getRequestFactory()));
defaultClient = new ApiClient(restTemplate);
if ("true".equals(System.getenv("GLIS_DEBUG"))) {
defaultClient.setDebugging(true);
}
defaultClient.setBasePath(GLIS_PRODUCTION_URL);
defaultClient.setDebugging(isDebugging());
defaultClient.setBasePath(getBasePath());
System.out.println("Using GLIS at " + defaultClient.getBasePath());
// Configure HTTP basic authorization: glis_auth
HttpBasicAuth easySmtaAuth = (HttpBasicAuth) defaultClient.getAuthentication("easySmta");
easySmtaAuth.setUsername(GLIS_USERNAME);
easySmtaAuth.setUsername(getUsername());
System.out.println("Using GLIS username " + easySmtaAuth.getUsername());
easySmtaAuth.setPassword(GLIS_PASSWORD);
easySmtaAuth.setPassword(getPassword());
}
}
......@@ -17,7 +17,7 @@
package org.genesys.glis.v1.api;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
......@@ -33,7 +33,7 @@ import org.junit.Test;
/**
* API tests for QueryApi
*/
public class QueryApiTest extends ProductionApiTest {
public class QueryApiTest extends ProductionEnvironmentAPITest {
private final QueryApi api = new QueryApi(defaultClient);
......@@ -50,7 +50,7 @@ public class QueryApiTest extends ProductionApiTest {
String oper = null;
List<Relationship> response = api.listRelationships(THE_DOI, role, oper);
assertThat(response.size(), is(0));
assertThat(response.size(), equalTo(0));
}
/**
......@@ -109,26 +109,26 @@ public class QueryApiTest extends ProductionApiTest {
List<PGRFA> response = api.search(page, perPage, lang, THE_DOI, identifier, genus, species, name, holdwiews, holdpid, holdname, holdcountry, methodcode, provwiews, provpid,
provname, provcountry, provenance, collwiews, collpid, collname, collcountry, bredwiews, bredpid, bredname, bredcountry, biostatus, mlsstatus, targetkw);
assertThat(response.size(), is(1));
assertThat(response.size(), equalTo(1));
PGRFA pgrfa = response.get(0);
assertThat(pgrfa.getDoi(), is(THE_DOI));
assertThat(pgrfa.getUrl(), is("https://ssl.fao.org/glis/doi/" + THE_DOI));
assertThat(pgrfa.getM01().getWiews(), is("PER001"));
assertThat(pgrfa.getM01().getCountry(), is("PER"));
assertThat(pgrfa.getDoi(), equalTo(THE_DOI));
assertThat(pgrfa.getUrl(), equalTo("https://ssl.fao.org/glis/doi/" + THE_DOI));
assertThat(pgrfa.getM01().getWiews(), equalTo("PER001"));
assertThat(pgrfa.getM01().getCountry(), equalTo("PER"));
}
/**
* Assert that PER001 is the holder of {@link TestApiTest#THE_DOI}
* Assert that PER001 is the holder of {@link TestEnvironmentAPITest#THE_DOI}
*/
@Test
public void ownerTest() {
DOIArray dois=new DOIArray();
dois.addDoisItem(THE_DOI);
List<DOIHolder> holders = api.listHolders(dois);
assertThat(holders.size(), is(1));
assertThat(holders.size(), equalTo(1));
DOIHolder holder=holders.get(0);
assertThat(holder.getDoi(), is(THE_DOI));
assertThat(holder.getHoldwiews(), is("PER001"));
assertThat(holder.getDoi(), equalTo(THE_DOI));
assertThat(holder.getHoldwiews(), equalTo("PER001"));
}
}
/*
* Copyright 2017 Global Crop Diversity Trust
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.genesys.glis.v1.api;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
import org.genesys.glis.v1.invoker.ApiClient;
import org.genesys.glis.v1.invoker.auth.HttpBasicAuth;
import org.junit.BeforeClass;
import org.springframework.http.client.BufferingClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
/**
* Tests against GLIS Test environment at https://glistest.planttreaty.org/`
*
* @author Matija Obreza
*/
public abstract class TestApiTest {
public static final String GLIS_DOI_PATTERN = "^(doi:)?10\\.[0-9]+\\/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]+[0123456789ABCDEFGHJKMNPQRSTVWXYZ~\\*\\$=U]$";
/**
* This test DOI is a sweet potato accession at CIP, Lima, Peru.
*/
public static final String THE_DOI = "10.18730/583E";
protected static String GLIS_USERNAME = System.getenv("GLIS_USERNAME");
protected static String GLIS_PASSWORD = System.getenv("GLIS_PASSWORD");
protected static ApiClient defaultClient;
protected static XmlMapper xmlMapper;
@BeforeClass
public static void config() {
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJackson2HttpMessageConverter());
xmlMapper = new XmlMapper();
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
xmlMapper.setSerializationInclusion(Include.NON_NULL);
messageConverters.add(new MappingJackson2XmlHttpMessageConverter(xmlMapper));
RestTemplate restTemplate = new RestTemplate(messageConverters);
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(restTemplate.getRequestFactory()));
defaultClient = new ApiClient(restTemplate);
if ("true".equals(System.getenv("GLIS_DEBUG"))) {
defaultClient.setDebugging(true);
}
if (System.getenv("GLIS_URL") != null) {
defaultClient.setBasePath(System.getenv("GLIS_URL"));
}
System.out.println("Using GLIS at " + defaultClient.getBasePath());
// Configure HTTP basic authorization: glis_auth
HttpBasicAuth easySmtaAuth = (HttpBasicAuth) defaultClient.getAuthentication("easySmta");
easySmtaAuth.setUsername(GLIS_USERNAME);
System.out.println("Using GLIS username " + easySmtaAuth.getUsername());
easySmtaAuth.setPassword(GLIS_PASSWORD);
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.genesys-pgr</groupId>
<artifactId>glis-client-project</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>glis-client-tests</artifactId>
<packaging>jar</packaging>
<name>GLIS API client tests</name>
<description>Tests for GLIS API client</description>
<properties>
<org.slf4j.version>1.7.25</org.slf4j.version>
</properties>
<dependencies>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>