diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31b42d272652fc3405008585d32cea18e5a1403a..e0caaeb6cc52d914648f1c6f2acc48a196d447c8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,6 +26,7 @@ project(libcaosdb_inttests
 
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 
 # dependency management with conan
diff --git a/README.md b/README.md
index 551117a3b4eb123829e43fb3cefc15d04d8fc19c..9d2b880004b551f8e32eb0254e47377744584e69 100644
--- a/README.md
+++ b/README.md
@@ -12,11 +12,17 @@ Integration tests for caosdb-cpplib and the caosdb-server
 
 # Run tests
 
+## Prerequisite
+Create a local conan package from the caosdb-cpplib repository
+
+## Build & Execution
 1. `mkdir build && cd build/`
 2. `conan install .. -s "compiler.libcxx=libstdc++11"`
 3. `cmake -B . ..`
 4. `cmake --build .`
 5. Setup env vars
+	- CAOSDB_SERVER_GRPC_PORT_HTTP
+	- CAOSDB_SERVER_HOST
+	- CAOSDB_SERVER_GRPC_PORT_HTTPS
+	- CAOSDB_SERVER_CERT
 6. Run with `ctest` in the build directory.
-
-
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 8183e24afdd89c68853404c7da3d2d0a0c911a97..0cac504a69a833ca2033c9086629e2a7324097f4 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -24,6 +24,7 @@
 set(test_cases
     test_connection
     test_transaction
+	#test_file_transmission TODO add once fixed
     test_ccaosdb
     )
 
@@ -82,7 +83,7 @@ if(LINTING)
             "--warnings-as-errors=*"
             "--fix")
         set(_CMAKE_CXX_CLANG_TIDY_CHECKS
-          "--checks=*,-fuchsia-*,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-readability-function-cognitive-complexity,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay,-cppcoreguidelines-non-private-member-variables-in-classes,-misc-non-private-member-variables-in-classes")
+          "--checks=*,-fuchsia-*,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-readability-function-cognitive-complexity,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-non-private-member-variables-in-classes,-misc-non-private-member-variables-in-classes,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay")
     endif()
 else()
     message(STATUS "LINTING is OFF")
diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp
index 6f8eb10d78561f0eb493ff01f592f6a1fcfed3c6..47b26bed8601eb7f8c6dbda034ec2233641f669f 100644
--- a/test/test_ccaosdb.cpp
+++ b/test/test_ccaosdb.cpp
@@ -48,12 +48,12 @@ TEST(test_ccaosdb, test_count_query) {
 
   caosdb_connection_connection connection;
   int return_code(
-      caosdb_connection_connection_manager_get_default_connection(&connection));
+    caosdb_connection_connection_manager_get_default_connection(&connection));
   EXPECT_EQ(return_code, 0);
 
   caosdb_transaction_transaction transaction;
-  return_code = caosdb_connection_connection_create_transaction(&connection,
-                                                                &transaction);
+  return_code =
+    caosdb_connection_connection_create_transaction(&connection, &transaction);
   EXPECT_EQ(return_code, 0);
 
   // COUNT query with an empty result
@@ -67,7 +67,7 @@ TEST(test_ccaosdb, test_count_query) {
   long dummy(-1);       // NOLINT
   long *count = &dummy; // NOLINT
   return_code =
-      caosdb_transaction_transaction_get_count_result(&transaction, count);
+    caosdb_transaction_transaction_get_count_result(&transaction, count);
   EXPECT_EQ(return_code, 0);
   EXPECT_EQ(*count, 0);
 
@@ -78,12 +78,12 @@ TEST(test_ccaosdb, test_count_query) {
 TEST(test_ccaosdb, test_query) {
   caosdb_connection_connection connection;
   int return_code(
-      caosdb_connection_connection_manager_get_default_connection(&connection));
+    caosdb_connection_connection_manager_get_default_connection(&connection));
   EXPECT_EQ(return_code, 0);
 
   caosdb_transaction_transaction transaction;
-  return_code = caosdb_connection_connection_create_transaction(&connection,
-                                                                &transaction);
+  return_code =
+    caosdb_connection_connection_create_transaction(&connection, &transaction);
   EXPECT_EQ(return_code, 0);
 
   return_code = caosdb_transaction_transaction_query(&transaction,
@@ -95,7 +95,7 @@ TEST(test_ccaosdb, test_query) {
 
   caosdb_transaction_result_set result_set;
   return_code =
-      caosdb_transaction_transaction_get_result_set(&transaction, &result_set);
+    caosdb_transaction_transaction_get_result_set(&transaction, &result_set);
   EXPECT_EQ(return_code, 0);
 
   int dummy(-1);
@@ -111,16 +111,16 @@ TEST(test_ccaosdb, test_query) {
 TEST(test_ccaosdb, test_single_id_retrieve) {
   caosdb_connection_connection connection;
   int return_code(
-      caosdb_connection_connection_manager_get_default_connection(&connection));
+    caosdb_connection_connection_manager_get_default_connection(&connection));
   EXPECT_EQ(return_code, 0);
 
   caosdb_transaction_transaction transaction;
-  return_code = caosdb_connection_connection_create_transaction(&connection,
-                                                                &transaction);
+  return_code =
+    caosdb_connection_connection_create_transaction(&connection, &transaction);
   EXPECT_EQ(return_code, 0);
 
   return_code =
-      caosdb_transaction_transaction_retrieve_by_id(&transaction, "21");
+    caosdb_transaction_transaction_retrieve_by_id(&transaction, "21");
   EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON);
 
   return_code = caosdb_transaction_transaction_execute(&transaction);
@@ -157,17 +157,17 @@ TEST(test_ccaosdb, test_single_id_retrieve) {
 TEST(test_ccaosdb, test_multi_id_retrieve) {
   caosdb_connection_connection connection;
   int return_code(
-      caosdb_connection_connection_manager_get_default_connection(&connection));
+    caosdb_connection_connection_manager_get_default_connection(&connection));
   EXPECT_EQ(return_code, 0);
 
   caosdb_transaction_transaction transaction;
-  return_code = caosdb_connection_connection_create_transaction(&connection,
-                                                                &transaction);
+  return_code =
+    caosdb_connection_connection_create_transaction(&connection, &transaction);
   EXPECT_EQ(return_code, 0);
 
   const char *ids[] = {"20", "21", "22"}; // NOLINT
   return_code =
-      caosdb_transaction_transaction_retrieve_by_ids(&transaction, ids, 3);
+    caosdb_transaction_transaction_retrieve_by_ids(&transaction, ids, 3);
   EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON);
 
   return_code = caosdb_transaction_transaction_execute(&transaction);
@@ -176,7 +176,7 @@ TEST(test_ccaosdb, test_multi_id_retrieve) {
 
   caosdb_transaction_result_set result_set;
   return_code =
-      caosdb_transaction_transaction_get_result_set(&transaction, &result_set);
+    caosdb_transaction_transaction_get_result_set(&transaction, &result_set);
   EXPECT_EQ(return_code, 0);
 
   int dummy(-1);
diff --git a/test/test_file_transmission.cpp b/test/test_file_transmission.cpp
index 42911bc520191a0880b6d80d8d122134413a5201..eab5b785fcd15510b7aebce0d8a72bc78fb05fff 100644
--- a/test/test_file_transmission.cpp
+++ b/test/test_file_transmission.cpp
@@ -36,6 +36,12 @@ using caosdb::entity::v1alpha1::RegisterFileUploadResponse;
 using caosdb::entity::v1alpha1::RegistrationStatus;
 using caosdb::entity::v1alpha1::TransmissionStatus;
 
+
+// TODO(tf) this file is currently not used (see CMakeLists.txt)
+// Is it still necessary or is it obsolete due to test_transaction.cpp?
+// RegisterFileDownloadResponse is currently not defined by proto or the h
+// file.
+
 class test_file_transmission : public ::testing::Test {
 protected:
   void SetUp() override {}
diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp
index b6d2876e4792bc6fce738a25bc494861a9453680..195430800c8ce5016e1c606b8b60a5f4543f4ee7 100644
--- a/test/test_transaction.cpp
+++ b/test/test_transaction.cpp
@@ -21,6 +21,7 @@
 #include "caosdb/connection.h" // for Connection, ConnectionManager
 #include "caosdb/data_type.h"  // for AtomicDataType
 #include "caosdb/entity.h"     // for Entity, Messages, Message
+#include "caosdb/file_transmission/file_reader.h" // for FileReader
 #include "caosdb/file_transmission/file_writer.h" // for FileWriter
 #include "caosdb/message_code.h"       // for ENTITY_DOES_NOT_EXIST, Messag...
 #include "caosdb/status_code.h"        // for SUCCESS, StatusCode
@@ -670,9 +671,18 @@ TEST_F(test_transaction, test_file_upload) {
   const auto &inserted_file = insert_results.at(0);
   EXPECT_FALSE(inserted_file.GetId().empty());
   EXPECT_FALSE(inserted_file.HasErrors());
+
+  // Check file once more
+  auto count_query(connection->CreateTransaction());
+  count_query->Query("COUNT FILE WHICH IS STORED AT 'test.txt'");
+  count_query->ExecuteAsynchronously();
+  auto count_and_retrieve_status = count_query->WaitForIt();
+  ASSERT_TRUE(count_and_retrieve_status.IsTerminated());
+  ASSERT_FALSE(count_and_retrieve_status.IsError());
+  EXPECT_EQ(count_query->GetCountResult(), 1);
 }
 
-TEST_F(test_transaction, test_file_download) {
+TEST_F(test_transaction, test_file_up_n_download) {
   const auto &connection =
       caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -705,6 +715,14 @@ TEST_F(test_transaction, test_file_download) {
   ASSERT_FALSE(downloaded_file.HasErrors());
   EXPECT_EQ(downloaded_file.GetLocalPath().string(),
             test_download_file_1.string());
+
+  FileReader reader_remote(test_upload_file_1);
+  std::string buffer_local(1024, 'c');
+  std::string buffer_remote(1024, 'c');
+  for (int i = 0; i < 8; i++) {
+    reader_remote.read(buffer_remote);
+    EXPECT_EQ(buffer_remote, buffer_local);
+  }
 }
 
 } // namespace caosdb::transaction