@@ -16,13 +16,15 @@ See `docs` and sub folders to learn how ESS Naming Convention is implemented in
### Environment
Tools
* Java 17 (openjdk)
* Maven 3.8+ (e.g. 3.8.5)
* PostgreSQL (9.6 client lib)
* Docker (compose file version 3.7 to be supported, docker engine 20+ recommended)
* Java 17 - openjdk
* Maven 3.8+
* PostgreSQL - 9.6 client lib
* Docker - engine 18.06.0+ or later, compose 1.29.2 or later, compose file version 3.7 to be supported
* Git
Dependencies
* postgresql
* springdoc
* springframework
...
...
@@ -40,31 +42,30 @@ In addition, Hibernate is used through Springframework.
#### Start application
For first time users, recommended way to start application is with Docker and database with demo content.
For first time users, recommended way to start application is with Docker and database with demo content. See Note for more on configuration.
Either with Docker
* start the application with database
* existing container
* start application & database
* existing database container
*`docker-compose up --build`
* empty
*`docker-compose -f docker-compose-integrationtest.yml up --build`
* demo content
*`docker-compose -f docker-compose-demo.yml up --build`
* start the application without database
* make sure database available as in `src/main/resources/application.properties`
* have local docker compose file without postgres container
* browse to `http://localhost:8080/swagger-ui.html`
or with `java -jar`
* make sure database available as in `src/main/resources/application.properties`
* start the application
* start application
*`java -jar target/naming-backend-*.jar`
* browse to `http://localhost:8083/swagger-ui.html`
#### Integration tests with Docker containers
Purpose of integration tests is to ensure REST API works as expected for parts and as a whole by running tests against running instances of application and database.
See `src/test/java` and packages
*`org.openepics.names.docker`
*`org.openepics.names.docker.complex`
...
...
@@ -84,9 +85,13 @@ Thereafter a number of http requests (GET) and curl commands (POST, PUT, PATCH,
**Do not*
**commit sensitive data*
**modify docker-compose files unless necessary*
*`application.properties` available in both ´src/main/resources´ and `src/test/resources`. Key difference is that in-memory database is used in test.
* Flyway not (yet) used
**modify application properties and docker-compose files unless necessary - there are multiple dependencies*
* Not yet
* Authentication / Authorization
* Flyway
* Configuration
* Application and database may be started separately, with or without Docker, in which case configuration set by environment variables, docker compose files and `application.properties` must reflect this. An example of this is hostname/ip address/port for database that is to be available for application. Configuration must not be in conflict with environment in which application and database run.
* If tools need to be installed or upgraded, recommendation is to install or upgrade to most recent versions that are available, unless otherwise stated.
* Pre-populated database to be available if data to be available at start of application. Otherwise database may be populated through `curl` at command line or Swagger UI.
* See `src/test/resources` and sub folders for database scripts. This includes scripts for database schema, migration and example content.
* If no prior database is available, see integration tests for examples on how to populate database. E.g. tests may be debugged and database content may be examined at any debug point. It's possible to backup database at such debug point and later restore it outside test. In such way, database may be set to state of choice.