sirixdb / sirix

SirixDB is an an embeddable, bitemporal, append-only database system and event store, storing immutable lightweight snapshots. It keeps the full history of each resource. Every commit stores a space-efficient snapshot through structural sharing. It is log-structured and never overwrites data. SirixDB uses a novel page-level versioning approach.
https://sirix.io
BSD 3-Clause "New" or "Revised" License
1.13k stars 253 forks source link

Usermanagement for the REST-API (Vert.x / Kotlin / Keycloak) #124

Closed JohannesLichtenberger closed 5 years ago

JohannesLichtenberger commented 5 years ago

We have to provide permission checks not only based on the roles "create", "view", "modify" and "delete" but we should make this database dependent (databasename-create, databasename-view...)?

yiss commented 5 years ago

Can you provide more details on this issue please ? I'm intersted on working on this

JohannesLichtenberger commented 5 years ago

I think basically we only need to add database specific roles in Keycloak and then check for "${dbname}-view" for checking if a user is permitted to view/read a specific database. And equivalent for the other roles.

yiss commented 5 years ago

@JohannesLichtenberger is there a reason why the auth role passed to Auth.kt always begins with "realm:" for example create "realm:create ?

JohannesLichtenberger commented 5 years ago

@yiss, if I'm not mistaken it's because Keycloak differentiates between realm roles and application roles and Vert.x seems to support realm roles at least.

BTW: There's also:

https://github.com/sirixdb/sirix/blob/master/bundles/sirix-rest-api/src/main/kotlin/org/sirix/rest/crud/json/JsonSessionDBStore.kt

and

https://github.com/sirixdb/sirix/blob/master/bundles/sirix-rest-api/src/main/kotlin/org/sirix/rest/crud/xml/XmlSessionDBStore.kt

which check the roles as a user can execute a full-blown XQuery or JSONiq like Script sent via POST to the "/" endpoint. And within the script databases can be opened, manipulated...

JohannesLichtenberger commented 5 years ago

I've also just updated the documentation of how to setup Keycloak with the SirixDB HTTP-Server:

https://sirix.io/rest-api.html

For instance the realm export should now be automatically imported by docker-compose. To run the integration tests an admin user with the pass admin is missing which has all the roles assigned.

JohannesLichtenberger commented 5 years ago

Maybe we should also provide the roles as they currently are (for instance a special admin or group could have permission to access and manipulate all databases) plus the additional database wide roles :-)

yiss commented 5 years ago

@JohannesLichtenberger Yeah, it was new for me because I've never used KeyCloack, but I've just read the documentation and now I understand. Also thank you for all the infromations. I'll satrt working on it :-)

JohannesLichtenberger commented 5 years ago

Cool, I'm also not an expert with Vert.x, Kotlin and Keycloak... :-)

yiss commented 5 years ago

@JohannesLichtenberger Hey I'm getting this exception when I try to run the project any idea why ?

/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=50281:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/tools.jar:/Users/ilias/Workspace/sirix/bundles/sirix-rest-api/target/classes:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.3.10/kotlin-stdlib-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.10/kotlin-stdlib-common-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.0.1/kotlinx-coroutines-core-1.0.1.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.0.1/kotlinx-coroutines-core-common-1.0.1.jar:/Users/ilias/.m2/repository/io/vertx/vertx-core/3.7.0/vertx-core-3.7.0.jar:/Users/ilias/.m2/repository/io/netty/netty-common/4.1.30.Final/netty-common-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-buffer/4.1.30.Final/netty-buffer-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-transport/4.1.30.Final/netty-transport-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-handler/4.1.30.Final/netty-handler-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec/4.1.30.Final/netty-codec-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-handler-proxy/4.1.30.Final/netty-handler-proxy-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-socks/4.1.30.Final/netty-codec-socks-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-http/4.1.30.Final/netty-codec-http-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-http2/4.1.30.Final/netty-codec-http2-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-resolver/4.1.30.Final/netty-resolver-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-resolver-dns/4.1.30.Final/netty-resolver-dns-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-dns/4.1.30.Final/netty-codec-dns-4.1.30.Final.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-web/3.7.0/vertx-web-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-web-common/3.7.0/vertx-web-common-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-auth-common/3.7.0/vertx-auth-common-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-bridge-common/3.7.0/vertx-bridge-common-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-lang-kotlin/3.7.0/vertx-lang-kotlin-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-lang-kotlin-coroutines/3.7.0/vertx-lang-kotlin-coroutines-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-auth-oauth2/3.7.0/vertx-auth-oauth2-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-jwt/3.7.0/vertx-jwt-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-web-client/3.7.0/vertx-web-client-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-config/3.7.0/vertx-config-3.7.0.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.10/kotlin-stdlib-jdk8-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.10/kotlin-stdlib-jdk7-1.3.10.jar:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar:/Users/ilias/.m2/repository/org/xerial/snappy/snappy-java/1.1.7.2/snappy-java-1.1.7.2.jar:/Users/ilias/.m2/repository/org/magicwerk/brownies-collections/0.9.13/brownies-collections-0.9.13.jar:/Users/ilias/.m2/repository/com/google/crypto/tink/tink/1.2.1/tink-1.2.1.jar:/Users/ilias/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.166/aws-java-sdk-core-1.11.166.jar:/Users/ilias/.m2/repository/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7/jackson-dataformat-cbor-2.6.7.jar:/Users/ilias/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.166/aws-java-sdk-kms-1.11.166.jar:/Users/ilias/.m2/repository/com/amazonaws/jmespath-java/1.11.166/jmespath-java-1.11.166.jar:/Users/ilias/.m2/repository/com/google/api-client/google-api-client/1.22.0/google-api-client-1.22.0.jar:/Users/ilias/.m2/repository/com/google/oauth-client/google-oauth-client/1.22.0/google-oauth-client-1.22.0.jar:/Users/ilias/.m2/repository/com/google/http-client/google-http-client/1.22.0/google-http-client-1.22.0.jar:/Users/ilias/.m2/repository/org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar:/Users/ilias/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar:/Users/ilias/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/ilias/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/ilias/.m2/repository/com/google/http-client/google-http-client-jackson2/1.22.0/google-http-client-jackson2-1.22.0.jar:/Users/ilias/.m2/repository/com/google/apis/google-api-services-cloudkms/v1-rev9-1.22.0/google-api-services-cloudkms-v1-rev9-1.22.0.jar:/Users/ilias/.m2/repository/com/google/auto/service/auto-service/1.0-rc4/auto-service-1.0-rc4.jar:/Users/ilias/.m2/repository/com/google/auto/auto-common/0.8/auto-common-0.8.jar:/Users/ilias/.m2/repository/com/google/protobuf/protobuf-java/3.6.0/protobuf-java-3.6.0.jar:/Users/ilias/.m2/repository/org/json/json/20170516/json-20170516.jar:/Users/ilias/.m2/repository/io/sirix/sirix-xquery/0.9.4-SNAPSHOT/sirix-xquery-0.9.4-20191018.124727-147.jar:/Users/ilias/.m2/repository/org/jsoup/jsoup/1.11.3/jsoup-1.11.3.jar:/Users/ilias/.m2/repository/com/beust/jcommander/1.69/jcommander-1.69.jar:/Users/ilias/.m2/repository/org/aspectj/aspectjrt/1.8.10/aspectjrt-1.8.10.jar:/Users/ilias/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/Users/ilias/.m2/repository/org/perfidix/perfidix/3.6.9/perfidix-3.6.9.jar:/Users/ilias/.m2/repository/commons-primitives/commons-primitives/20041207.202534/commons-primitives-20041207.202534.jar:/Users/ilias/.m2/repository/commons-math/commons-math/1.2/commons-math-1.2.jar:/Users/ilias/.m2/repository/joda-time/joda-time/2.1/joda-time-2.1.jar:/Users/ilias/.m2/repository/xmlunit/xmlunit/1.6/xmlunit-1.6.jar:/Users/ilias/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/Users/ilias/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/Users/ilias/.m2/repository/com/google/inject/guice/4.2.2/guice-4.2.2.jar:/Users/ilias/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/ilias/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/ilias/.m2/repository/com/google/code/gson/gson/2.8.1/gson-2.8.1.jar:/Users/ilias/.m2/repository/com/google/guava/guava/27.0-jre/guava-27.0-jre.jar:/Users/ilias/.m2/repository/com/google/guava/failureaccess/1.0/failureaccess-1.0.jar:/Users/ilias/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/ilias/.m2/repository/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.jar:/Users/ilias/.m2/repository/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.jar:/Users/ilias/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar:/Users/ilias/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar:/Users/ilias/.m2/repository/com/google/guava/guava-testlib/27.0-jre/guava-testlib-27.0-jre.jar:/Users/ilias/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/ilias/.m2/repository/com/github/sirixdb/brackit/brackit/0.1.5/brackit-0.1.5.jar:/Users/ilias/.m2/repository/com/github/ben-manes/caffeine/caffeine/2.7.0/caffeine-2.7.0.jar org.sirix.rest.MainKt
23:28:57,073 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml]
23:28:57,074 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs multiple times on the classpath.
23:28:57,074 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-xquery/0.9.4-SNAPSHOT/sirix-xquery-0.9.4-20191018.124727-147.jar!/logback-test.xml]
23:28:57,074 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml]
23:28:57,084 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@6dbb137d - URL [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml] is not of type file
23:28:57,122 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
23:28:57,123 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
23:28:57,127 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
23:28:57,131 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
23:28:57,151 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
23:28:57,151 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
23:28:57,152 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
23:28:57,152 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3c9d0b9d - Registering current configuration as safe fallback point

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:8080
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:327)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:632)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection refused
    ... 11 more
Oct 18, 2019 11:29:02 PM io.vertx.core.impl.launcher.commands.VertxIsolatedDeployer
SEVERE: Failed in deploying verticle
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:8080
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:327)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:632)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection refused
    ... 11 more

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:8080
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:327)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:632)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection refused
    ... 11 more
JohannesLichtenberger commented 5 years ago

Hi, you have to replace localhost with keycloak in the sirix-conf.json file if you use docker-compose and you have to use Java 13.

Let me know if that helps. And make sure to run the Keycloak service first.

JohannesLichtenberger commented 5 years ago

In any case make sure that Keycloak is running on port 8080 (and if it's docker keep in mind the docker network stuff).

yiss commented 5 years ago

@JohannesLichtenberger Thank you for your promt response, I didn't have a running keycloak in Docker, and that was indeed the problem. But now I'm having an issue running integration test. If I don't run the application first, I get this error :

/Users/ilias/.sdkman/candidates/java/13.0.0.j9-adpt/bin/java -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=51361:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit-rt.jar:/Applications/IntelliJ IDEA.app/Contents/plugins/junit/lib/junit5-rt.jar:/Users/ilias/Workspace/sirix/bundles/sirix-rest-api/target/test-classes:/Users/ilias/Workspace/sirix/bundles/sirix-rest-api/target/classes:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.3.10/kotlin-stdlib-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.10/kotlin-stdlib-common-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-test-junit/1.3.10/kotlin-test-junit-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.10/kotlin-test-annotations-common-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-test/1.3.10/kotlin-test-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-test-common/1.3.10/kotlin-test-common-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.0.1/kotlinx-coroutines-core-1.0.1.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.0.1/kotlinx-coroutines-core-common-1.0.1.jar:/Users/ilias/.m2/repository/junit/junit/4.12/junit-4.12.jar:/Users/ilias/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:/Users/ilias/.m2/repository/io/vertx/vertx-core/3.7.0/vertx-core-3.7.0.jar:/Users/ilias/.m2/repository/io/netty/netty-common/4.1.30.Final/netty-common-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-buffer/4.1.30.Final/netty-buffer-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-transport/4.1.30.Final/netty-transport-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-handler/4.1.30.Final/netty-handler-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec/4.1.30.Final/netty-codec-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-handler-proxy/4.1.30.Final/netty-handler-proxy-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-socks/4.1.30.Final/netty-codec-socks-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-http/4.1.30.Final/netty-codec-http-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-http2/4.1.30.Final/netty-codec-http2-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-resolver/4.1.30.Final/netty-resolver-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-resolver-dns/4.1.30.Final/netty-resolver-dns-4.1.30.Final.jar:/Users/ilias/.m2/repository/io/netty/netty-codec-dns/4.1.30.Final/netty-codec-dns-4.1.30.Final.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-web/3.7.0/vertx-web-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-web-common/3.7.0/vertx-web-common-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-auth-common/3.7.0/vertx-auth-common-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-bridge-common/3.7.0/vertx-bridge-common-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-lang-kotlin/3.7.0/vertx-lang-kotlin-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-lang-kotlin-coroutines/3.7.0/vertx-lang-kotlin-coroutines-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-auth-oauth2/3.7.0/vertx-auth-oauth2-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-jwt/3.7.0/vertx-jwt-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-web-client/3.7.0/vertx-web-client-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-config/3.7.0/vertx-config-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-junit5/3.7.0/vertx-junit5-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-rx-java/3.7.0/vertx-rx-java-3.7.0.jar:/Users/ilias/.m2/repository/io/reactivex/rxjava/1.3.8/rxjava-1.3.8.jar:/Users/ilias/.m2/repository/io/vertx/vertx-rx-gen/3.7.0/vertx-rx-gen-3.7.0.jar:/Users/ilias/.m2/repository/io/vertx/vertx-codegen/3.7.0/vertx-codegen-3.7.0.jar:/Users/ilias/.m2/repository/org/mvel/mvel2/2.3.1.Final/mvel2-2.3.1.Final.jar:/Users/ilias/.m2/repository/io/vertx/vertx-rx-java2/3.7.0/vertx-rx-java2-3.7.0.jar:/Users/ilias/.m2/repository/io/reactivex/rxjava2/rxjava/2.2.4/rxjava-2.2.4.jar:/Users/ilias/.m2/repository/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.10/kotlin-stdlib-jdk8-1.3.10.jar:/Users/ilias/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.10/kotlin-stdlib-jdk7-1.3.10.jar:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar:/Users/ilias/.m2/repository/org/xerial/snappy/snappy-java/1.1.7.2/snappy-java-1.1.7.2.jar:/Users/ilias/.m2/repository/org/magicwerk/brownies-collections/0.9.13/brownies-collections-0.9.13.jar:/Users/ilias/.m2/repository/com/google/crypto/tink/tink/1.2.1/tink-1.2.1.jar:/Users/ilias/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.166/aws-java-sdk-core-1.11.166.jar:/Users/ilias/.m2/repository/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar:/Users/ilias/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.7/jackson-dataformat-cbor-2.6.7.jar:/Users/ilias/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.166/aws-java-sdk-kms-1.11.166.jar:/Users/ilias/.m2/repository/com/amazonaws/jmespath-java/1.11.166/jmespath-java-1.11.166.jar:/Users/ilias/.m2/repository/com/google/api-client/google-api-client/1.22.0/google-api-client-1.22.0.jar:/Users/ilias/.m2/repository/com/google/oauth-client/google-oauth-client/1.22.0/google-oauth-client-1.22.0.jar:/Users/ilias/.m2/repository/com/google/http-client/google-http-client/1.22.0/google-http-client-1.22.0.jar:/Users/ilias/.m2/repository/org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar:/Users/ilias/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar:/Users/ilias/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/ilias/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/ilias/.m2/repository/com/google/http-client/google-http-client-jackson2/1.22.0/google-http-client-jackson2-1.22.0.jar:/Users/ilias/.m2/repository/com/google/apis/google-api-services-cloudkms/v1-rev9-1.22.0/google-api-services-cloudkms-v1-rev9-1.22.0.jar:/Users/ilias/.m2/repository/com/google/auto/service/auto-service/1.0-rc4/auto-service-1.0-rc4.jar:/Users/ilias/.m2/repository/com/google/auto/auto-common/0.8/auto-common-0.8.jar:/Users/ilias/.m2/repository/com/google/protobuf/protobuf-java/3.6.0/protobuf-java-3.6.0.jar:/Users/ilias/.m2/repository/org/json/json/20170516/json-20170516.jar:/Users/ilias/.m2/repository/io/sirix/sirix-xquery/0.9.4-SNAPSHOT/sirix-xquery-0.9.4-20191018.124727-147.jar:/Users/ilias/.m2/repository/org/jsoup/jsoup/1.11.3/jsoup-1.11.3.jar:/Users/ilias/.m2/repository/com/beust/jcommander/1.69/jcommander-1.69.jar:/Users/ilias/.m2/repository/com/google/auto/value/auto-value/1.6.2/auto-value-1.6.2.jar:/Users/ilias/.m2/repository/org/testng/testng/6.11/testng-6.11.jar:/Users/ilias/.m2/repository/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar:/Users/ilias/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.1.0/junit-jupiter-api-5.1.0.jar:/Users/ilias/.m2/repository/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar:/Users/ilias/.m2/repository/org/opentest4j/opentest4j/1.0.0/opentest4j-1.0.0.jar:/Users/ilias/.m2/repository/org/junit/platform/junit-platform-commons/1.1.0/junit-platform-commons-1.1.0.jar:/Users/ilias/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.1.0/junit-jupiter-engine-5.1.0.jar:/Users/ilias/.m2/repository/org/junit/platform/junit-platform-engine/1.1.0/junit-platform-engine-1.1.0.jar:/Users/ilias/.m2/repository/org/junit/vintage/junit-vintage-engine/5.1.0/junit-vintage-engine-5.1.0.jar:/Users/ilias/.m2/repository/org/junit/platform/junit-platform-launcher/1.1.0/junit-platform-launcher-1.1.0.jar:/Users/ilias/.m2/repository/org/junit/platform/junit-platform-runner/1.1.0/junit-platform-runner-1.1.0.jar:/Users/ilias/.m2/repository/org/junit/platform/junit-platform-suite-api/1.1.0/junit-platform-suite-api-1.1.0.jar:/Users/ilias/.m2/repository/org/aspectj/aspectjrt/1.8.10/aspectjrt-1.8.10.jar:/Users/ilias/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/Users/ilias/.m2/repository/org/perfidix/perfidix/3.6.9/perfidix-3.6.9.jar:/Users/ilias/.m2/repository/commons-primitives/commons-primitives/20041207.202534/commons-primitives-20041207.202534.jar:/Users/ilias/.m2/repository/commons-math/commons-math/1.2/commons-math-1.2.jar:/Users/ilias/.m2/repository/joda-time/joda-time/2.1/joda-time-2.1.jar:/Users/ilias/.m2/repository/org/mockito/mockito-core/2.23.4/mockito-core-2.23.4.jar:/Users/ilias/.m2/repository/net/bytebuddy/byte-buddy/1.9.3/byte-buddy-1.9.3.jar:/Users/ilias/.m2/repository/net/bytebuddy/byte-buddy-agent/1.9.3/byte-buddy-agent-1.9.3.jar:/Users/ilias/.m2/repository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/Users/ilias/.m2/repository/xmlunit/xmlunit/1.6/xmlunit-1.6.jar:/Users/ilias/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/Users/ilias/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/Users/ilias/.m2/repository/com/google/inject/guice/4.2.2/guice-4.2.2.jar:/Users/ilias/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/ilias/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/ilias/.m2/repository/com/google/code/gson/gson/2.8.1/gson-2.8.1.jar:/Users/ilias/.m2/repository/com/google/guava/guava/27.0-jre/guava-27.0-jre.jar:/Users/ilias/.m2/repository/com/google/guava/failureaccess/1.0/failureaccess-1.0.jar:/Users/ilias/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/ilias/.m2/repository/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.jar:/Users/ilias/.m2/repository/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.jar:/Users/ilias/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar:/Users/ilias/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar:/Users/ilias/.m2/repository/com/google/guava/guava-testlib/27.0-jre/guava-testlib-27.0-jre.jar:/Users/ilias/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/ilias/.m2/repository/com/github/sirixdb/brackit/brackit/0.1.5/brackit-0.1.5.jar:/Users/ilias/.m2/repository/com/github/sirixdb/brackit/brackit/0.1.5/brackit-0.1.5-tests.jar:/Users/ilias/.m2/repository/com/github/ben-manes/caffeine/caffeine/2.7.0/caffeine-2.7.0.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit5 @w@/private/var/folders/6k/2dysd8yj1mn5dbtz3vgb001h0000gn/T/idea_working_dirs_junit.tmp @/private/var/folders/6k/2dysd8yj1mn5dbtz3vgb001h0000gn/T/idea_junit.tmp -socket51360

00:16:53,232 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml]
00:16:53,233 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs multiple times on the classpath.
00:16:53,233 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-xquery/0.9.4-SNAPSHOT/sirix-xquery-0.9.4-20191018.124727-147.jar!/logback-test.xml]
00:16:53,233 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml]
00:16:53,254 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@f2c92e7c - URL [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml] is not of type file
00:16:53,289 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
00:16:53,290 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
00:16:53,296 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
00:16:53,300 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
00:16:53,362 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
00:16:53,362 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
00:16:53,363 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
00:16:53,363 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6f604e82 - Registering current configuration as safe fallback point

Oct 19, 2019 12:16:54 AM io.vertx.core.impl.ContextImpl
SEVERE: Unhandled exception
java.lang.IllegalStateException: Client is closed
    at io.vertx.core.http.impl.HttpClientImpl.checkClosed(HttpClientImpl.java:1051)
    at io.vertx.core.http.impl.HttpClientImpl.close(HttpClientImpl.java:897)
    at io.vertx.ext.auth.oauth2.impl.OAuth2API.lambda$makeRequest$3(OAuth2API.java:137)
    at io.vertx.ext.auth.oauth2.impl.OAuth2API$$Lambda$335.0000000000000000.handle(Unknown Source)
    at io.vertx.core.http.impl.HttpClientRequestBase.handleException(HttpClientRequestBase.java:139)
    at io.vertx.core.http.impl.HttpClientRequestImpl.lambda$null$8(HttpClientRequestImpl.java:505)
    at io.vertx.core.http.impl.HttpClientRequestImpl$$Lambda$373.0000000000000000.handle(Unknown Source)
    at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:320)
    at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
    at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:188)
    at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:180)
    at io.vertx.core.http.impl.HttpClientRequestImpl.lambda$connect$9(HttpClientRequestImpl.java:504)
    at io.vertx.core.http.impl.HttpClientRequestImpl$$Lambda$338.0000000000000000.handle(Unknown Source)
    at io.vertx.core.http.impl.HttpClientImpl.lambda$getConnectionForRequest$5(HttpClientImpl.java:978)
    at io.vertx.core.http.impl.HttpClientImpl$$Lambda$340.0000000000000000.handle(Unknown Source)
    at io.vertx.core.http.impl.ConnectionManager.lambda$getConnection$7(ConnectionManager.java:155)
    at io.vertx.core.http.impl.ConnectionManager$$Lambda$350.0000000000000000.handle(Unknown Source)
    at io.vertx.core.http.impl.pool.Pool.connectFailed(Pool.java:364)
    at io.vertx.core.http.impl.pool.Pool.access$600(Pool.java:86)
    at io.vertx.core.http.impl.pool.Pool$Holder.lambda$connect$0(Pool.java:128)
    at io.vertx.core.http.impl.pool.Pool$Holder$$Lambda$356.0000000000000000.handle(Unknown Source)
    at io.vertx.core.impl.FutureImpl.tryFail(FutureImpl.java:170)
    at io.vertx.core.http.impl.HttpChannelConnector.connectFailed(HttpChannelConnector.java:253)
    at io.vertx.core.http.impl.HttpChannelConnector.lambda$doConnect$0(HttpChannelConnector.java:162)
    at io.vertx.core.http.impl.HttpChannelConnector$$Lambda$360.0000000000000000.handle(Unknown Source)
    at io.vertx.core.net.impl.ChannelProvider.lambda$connect$1(ChannelProvider.java:81)
    at io.vertx.core.net.impl.ChannelProvider$$Lambda$362.0000000000000000.handle(Unknown Source)
    at io.vertx.core.net.impl.ChannelProvider.lambda$handleConnect$2(ChannelProvider.java:141)
    at io.vertx.core.net.impl.ChannelProvider$$Lambda$372.0000000000000000.operationComplete(Unknown Source)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:485)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
    at io.netty.util.concurrent.DefaultPromise.addListener(DefaultPromise.java:162)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:95)
    at io.netty.channel.DefaultChannelPromise.addListener(DefaultChannelPromise.java:30)
    at io.vertx.core.net.impl.ChannelProvider.handleConnect(ChannelProvider.java:137)
    at io.vertx.core.net.impl.ChannelProvider.connect(ChannelProvider.java:90)
    at io.vertx.core.http.impl.HttpChannelConnector.doConnect(HttpChannelConnector.java:166)
    at io.vertx.core.http.impl.HttpChannelConnector.connect(HttpChannelConnector.java:101)
    at io.vertx.core.http.impl.pool.Pool$Holder.connect(Pool.java:124)
    at io.vertx.core.http.impl.pool.Pool$$Lambda$355.0000000000000000.run(Unknown Source)
    at io.vertx.core.http.impl.pool.Pool.checkPendingTasks(Pool.java:263)
    at io.vertx.core.http.impl.pool.Pool$$Lambda$352.0000000000000000.run(Unknown Source)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:831)

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:9443

But when I run the application and keep it runniong while I run the integration tests I get this error

00:19:05,494 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml]
00:19:05,495 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs multiple times on the classpath.
00:19:05,495 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-xquery/0.9.4-SNAPSHOT/sirix-xquery-0.9.4-20191018.124727-147.jar!/logback-test.xml]
00:19:05,495 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml]
00:19:05,520 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@acfe7289 - URL [jar:file:/Users/ilias/.m2/repository/io/sirix/sirix-core/0.9.4-SNAPSHOT/sirix-core-0.9.4-20191018.124639-147.jar!/logback-test.xml] is not of type file
00:19:05,564 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
00:19:05,564 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
00:19:05,571 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
00:19:05,575 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
00:19:05,635 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
00:19:05,635 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
00:19:05,637 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
00:19:05,638 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@5634542d - Registering current configuration as safe fallback point

java.net.BindException: Address already in use

    at java.base/sun.nio.ch.Net.bind0(Native Method)
    at java.base/sun.nio.ch.Net.bind(Net.java:469)
    at java.base/sun.nio.ch.Net.bind(Net.java:458)
    at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:220)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:130)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1358)
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:1019)
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:254)
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:366)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasksFrom(SingleThreadEventExecutor.java:380)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:355)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:453)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:831)
JohannesLichtenberger commented 5 years ago

So you're running https://github.com/sirixdb/sirix/blob/master/bundles/sirix-rest-api/src/test/kotlin/org/sirix/rest/SirixVerticleJsonTest.kt for instance from IntelliJ? Hmm, I guess the server doesn't start but in any case... what happens when you enter https://localhost:9443 In a browser for instance? Are you using a JUnit5 runner? :-)

JohannesLichtenberger commented 5 years ago

And yes, the server is going to be started by the setup-method (Verticle deployed).

JohannesLichtenberger commented 5 years ago

So, make sure to only start keycloak via docker-compose, but not the server Docker container. Hope it helps a bit.

yiss commented 5 years ago

@JohannesLichtenberger So I've tried to run the tests no luck there. But I pushed my modifications to my branch. Can you please check if the tests passes : https://github.com/yiss/sirix if it passes I'll create the merge request. Or if you can help on how I can run tests locally thanks :)

JohannesLichtenberger commented 5 years ago

Ah, maybe you can try running Keycloak without Docker. For the integration tests I haven't used the Docker Keycloak Container, but simply started via the batch-file (standalone.bat) on Windows.

I've cloned your fork and it works like a charm (added the additional roles and added them also to the administrator group :-))

Can you update your branch and make a PR? 👍 However, would be super great if you can try it yourself ;-)

yiss commented 5 years ago

I updated my fork and created the pull request #127. The project looks super interesting. After reading the article that you mentioned in the documentation on Keycloak (Which I have never used) I managed to run the application. I'll try to make more contributions in the future :)

JohannesLichtenberger commented 5 years ago

Wow, very cool :-) Thanks so much :+1: :1st_place_medal: