diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml
index afc291f6b357e7b76794ccac7614d19da038edbd..e55f1719cde17c9f285d10cbd690fa710e36479a 100644
--- a/.docker/docker-compose.yml
+++ b/.docker/docker-compose.yml
@@ -8,6 +8,7 @@ services:
       - caosnet
   caosdb-server:
     image: "$CI_REGISTRY/caosdb:$CAOSDB_TAG"
+    user: 999:999
     depends_on:
       - sqldb
     networks:
diff --git a/.docker/wait-for-it.sh b/.docker/wait-for-it.sh
index dd6947cd8412848f9264228cb46e86874459a599..d69e99f1f13257b559dce2433de0515379663efa 100755
--- a/.docker/wait-for-it.sh
+++ b/.docker/wait-for-it.sh
@@ -1,7 +1,8 @@
 #!/usr/bin/env bash
-#  TODO add proper license
-# from githu: 
-#   Use this script to test if a given TCP host/port are available
+# License: 
+# From https://github.com/vishnubob/wait-for-it
+# The MIT License (MIT)
+# Use this script to test if a given TCP host/port are available
 
 WAITFORIT_cmdname=${0##*/}
 
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 30c1b644a4b383ef962678ece2ea624d703a4b52..7cd6307def6f178029e1ac97aca5b9247aad7c46 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -72,10 +72,11 @@ test:
   #image: $CI_REGISTRY_IMAGE:latest
   script:
       - if [[ "$CAOSDB_TAG" == "" ]]; then
-            CAOSDB_TAG=latest;
+            CAOSDB_TAG=dev-latest;
         fi
       - echo $CAOSDB_TAG
       - docker login -u testuser -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+      - docker pull $CI_REGISTRY_IMAGE:latest
       - cd .docker
       - DIR=`pwd`
       - CERTPATH=$DIR"/cert" CAOSDB_TAG=$CAOSDB_TAG docker-compose  up -d
@@ -83,7 +84,6 @@ test:
       - rc=$?
       - docker-compose  down
       - exit $rc
-      - cd ..
 
 build-testenv:
   tags: [docker]
diff --git a/tests/test_authentication.py b/tests/test_authentication.py
index 884decc89e8a1fb8ab37b4c55886c423269fd933..530e1b8a621369708e6bf8130c57f0ef8853e469 100644
--- a/tests/test_authentication.py
+++ b/tests/test_authentication.py
@@ -36,7 +36,7 @@ def test_https_support():
     from sys import hexversion
     if hexversion < 0x02070900:
         raise Exception("version " + str(hex(hexversion)))
-    elif 0x02999999 <hexversion < 0x03020000:
+    elif 0x02999999 < hexversion < 0x03020000:
         raise Exception("version " + str(hex(hexversion)))
     try:
         # python2
@@ -72,5 +72,3 @@ def test_login_via_post_form_data_failure():
                 "username": h.get_config().get("Connection", "username"),
                 "password": "wrongpassphrase"
             })
-
-
diff --git a/tests/test_boolean.py b/tests/test_boolean.py
index bc6a9fa7102a9563f3cd03cf9f506b565cc8a4bd..dde287ab099e0fd33057ee34929e0cfe4f350cc7 100644
--- a/tests/test_boolean.py
+++ b/tests/test_boolean.py
@@ -130,8 +130,10 @@ def test_record():
 
         assert_false(rec3.is_valid())
         assert_equals(
-            rec3.get_property("SimpleBooleanProperty").get_errors()[0].description,
-            "Cannot parse value to boolean (either 'true' or 'false, ignoring case).")
+            rec3.get_property(
+                "SimpleBooleanProperty").get_errors()[0].description,
+            "Cannot parse value to boolean (either 'true' or 'false, "
+            "ignoring case).")
 
     finally:
         try:
diff --git a/tests/test_file.py b/tests/test_file.py
index d978b1264cbf1ecacd686a5e4925733417ee1586..015d311229714730005ff33c8dff68e738757767 100644
--- a/tests/test_file.py
+++ b/tests/test_file.py
@@ -60,7 +60,7 @@ def setup():
 
 def teardown():
     try:
-        execute_query("FIND ENTITY WHICH HAS AN ID > 100").delete()
+        execute_query("FIND ENTITY WHICH HAS AN ID >= 100").delete()
     except Exception as e:
         print(e)
     try:
diff --git a/tests/test_query_template.py b/tests/test_query_template.py
index 544b8aa936b28a3b8b4de3d0f4fde76e7438b3d3..cab623791e4b0a9034a01998319891a87b1ec19e 100644
--- a/tests/test_query_template.py
+++ b/tests/test_query_template.py
@@ -321,25 +321,27 @@ def test_query_select_from_with_wildcard():
     assert_equals(len(r.get_entity_by_name("TestRecord").get_properties()), 1)
     assert_equals(len(r.get_entity_by_name("TestAnimal").get_properties()), 0)
 
+
 @with_setup(setup, teardown)
 def test_query_without_permission():
     query_def = "FIND TestExperiment WHICH HAS A TestAnimal = Pig"
-    qt = db.QueryTemplate(name="TestPigExperiment",query=query_def).insert()
+    qt = db.QueryTemplate(name="TestPigExperiment", query=query_def).insert()
 
-    db.administration._insert_user(name="test_user", password="secret_1q!Q", status="ACTIVE", email=None, entity=None)
+    db.administration._insert_user(
+        name="test_user", password="secret_1q!Q", status="ACTIVE", email=None, entity=None)
 
     db.configure_connection(username="test_user", password="secret_1q!Q")
 
     r = db.execute_query(query_def, unique=True)
-    assert_equals(r.name,"TestRecord")
+    assert_equals(r.name, "TestRecord")
     r = db.execute_query("FIND TestPigExperiment", unique=True)
-    assert_equals(r.name,"TestRecord")
+    assert_equals(r.name, "TestRecord")
 
     db.get_connection()._logout()
     db.configure_connection()
     db.get_connection()._login()
 
-    e = db.Entity(id = qt.id)
+    e = db.Entity(id=qt.id)
     e.retrieve_acl()
     assert_is_not_none(e.acl)
     e.deny(username="test_user", permission="RETRIEVE:ENTITY")
@@ -348,9 +350,9 @@ def test_query_without_permission():
     db.configure_connection(username="test_user", password="secret_1q!Q")
 
     r = db.execute_query(query_def, unique=True)
-    assert_equals(r.name,"TestRecord")
+    assert_equals(r.name, "TestRecord")
     r = db.execute_query("FIND TestPigExperiment")
-    assert_equals(len(r),0)
+    assert_equals(len(r), 0)
 
 
 @with_setup(setup, teardown)
diff --git a/tests/test_tenpoints.py b/tests/test_tenpoints.py
index 0499f9316c54660489df13d2df64b8a9250ab6c5..a2156bf9dada37d3b5e086db8e70c48b2c7bccf2 100644
--- a/tests/test_tenpoints.py
+++ b/tests/test_tenpoints.py
@@ -25,6 +25,9 @@
 
 @author: fitschen
 """
+from nose.tools import assert_equals, assert_is_not_none, assert_true  # @UnresolvedImport
+import caosdb as h
+import os
 from caosdb.exceptions import CaosDBException
 
 
@@ -49,11 +52,6 @@ Datensätzen
 Description oder einer Zahl'''
 
 
-import os
-import caosdb as h
-from nose.tools import assert_equals, assert_is_not_none, assert_true  # @UnresolvedImport
-
-
 def setup_module():
     try:
         h.execute_query("FIND Complex*").delete()
diff --git a/tox.ini b/tox.ini
index b3a93ea62f2d782950af9747e9fb71863d76f2fb..b35f949dd39c0a9a68ba4dba00ec1309b63a8099 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist= py27, py34, py35, py36, py37
+envlist= py37
 skip_missing_interpreters = true
 [testenv]
 sitepackages=true