diff --git a/tests/automatic/worker/connect_multithread/content_multithread.cpp b/tests/automatic/worker/connect_multithread/content_multithread.cpp
index 2ba33899824ea2af5f99a1d1b7f481d3206d8b6b..070c9c8905cf65d6d27538bed26879781b12e553 100644
--- a/tests/automatic/worker/connect_multithread/content_multithread.cpp
+++ b/tests/automatic/worker/connect_multithread/content_multithread.cpp
@@ -3,6 +3,7 @@
 #include <thread>
 #include <algorithm>
 #include "worker/data_broker.h"
+#include "worker/worker_error.h"
 #include "testing.h"
 
 using asapo::M_AssertEq;
@@ -15,7 +16,7 @@ void Assert(std::vector<asapo::Error>& errors, int nthreads) {
     int count_already_connected = 0;
     for (auto& error : errors) {
         if (!error) continue;
-        if (error->Explain().find(asapo::WorkerErrorMessage::kSourceAlreadyConnected) != std::string::npos)
+        if (error == asapo::WorkerErrorTemplates::kSourceAlreadyConnected)
             count_already_connected++;
     }
 
diff --git a/worker/api/cpp/include/worker/data_broker.h b/worker/api/cpp/include/worker/data_broker.h
index e33f7a112088e7c342f04e019939e3458ea517da..5f2358a52326a55e6502e31ce68f2fb98fd49438 100644
--- a/worker/api/cpp/include/worker/data_broker.h
+++ b/worker/api/cpp/include/worker/data_broker.h
@@ -81,7 +81,7 @@ class DataBroker {
       \param err - will be set in case of error, nullptr otherwise
       \return vector of image metadata matchiing to specified query. Empty if nothing found or error
     */
-    virtual FileInfos QueryImages(std::string query,Error* err) = 0;
+    virtual FileInfos QueryImages(std::string query, Error* err) = 0;
 
     virtual ~DataBroker() = default; // needed for unique_ptr to delete itself
 };
diff --git a/worker/api/cpp/src/folder_data_broker.cpp b/worker/api/cpp/src/folder_data_broker.cpp
index 791561b8a2a0ba176292b65186f4ded4fd292b3f..f64f140bbc15986971c48b86c10ad0c2ad33ef71 100644
--- a/worker/api/cpp/src/folder_data_broker.cpp
+++ b/worker/api/cpp/src/folder_data_broker.cpp
@@ -100,7 +100,7 @@ std::string FolderDataBroker::GetBeamtimeMeta(Error* err) {
 }
 
 FileInfos FolderDataBroker::QueryImages(std::string query, Error* err) {
-    *err=TextError("Not supported for folder data broker");
+    *err = TextError("Not supported for folder data broker");
     return FileInfos{};
 }
 
diff --git a/worker/api/cpp/src/folder_data_broker.h b/worker/api/cpp/src/folder_data_broker.h
index aa0dfca5d9964014b688a7a8a5c8180f843b9f80..9ffb04d3b04beeebd4339fa09250e89c40c9dc25 100644
--- a/worker/api/cpp/src/folder_data_broker.h
+++ b/worker/api/cpp/src/folder_data_broker.h
@@ -24,7 +24,7 @@ class FolderDataBroker final : public asapo::DataBroker {
     uint64_t GetNDataSets(Error* err) override;
     Error GetById(uint64_t id, FileInfo* info, std::string group_id, FileData* data) override;
     std::unique_ptr<asapo::IO> io__; // modified in testings to mock system calls,otherwise do not touch
-    FileInfos QueryImages(std::string query,Error* err) override;
+    FileInfos QueryImages(std::string query, Error* err) override;
   private:
     std::string base_path_;
     bool is_connected_;
diff --git a/worker/api/cpp/src/server_data_broker.cpp b/worker/api/cpp/src/server_data_broker.cpp
index bb0b86ebb1ac288eba3a39eab2e4f99824ab2d57..58185be85dd95614d7cd49e8cb7f0de62f22ea1e 100644
--- a/worker/api/cpp/src/server_data_broker.cpp
+++ b/worker/api/cpp/src/server_data_broker.cpp
@@ -22,8 +22,8 @@ Error HttpCodeToWorkerError(const HttpCode& code) {
         return nullptr;
     case HttpCode::BadRequest:
         return WorkerErrorTemplates::kWrongInput.Generate();
-   case HttpCode::Unauthorized:
-       return WorkerErrorTemplates::kAuthorizationError.Generate();
+    case HttpCode::Unauthorized:
+        return WorkerErrorTemplates::kAuthorizationError.Generate();
     case HttpCode::InternalServerError:
         return WorkerErrorTemplates::kInternalError.Generate();
     case HttpCode::NotFound:
@@ -85,9 +85,10 @@ Error ServerDataBroker::ProcessRequest(std::string* response, const RequestInfo&
     Error err;
     HttpCode code;
     if (request.post) {
-        *response = httpclient__->Post(RequestWithToken(request.host+request.api) + request.extra_params, request.body, &code, &err);
+        *response = httpclient__->Post(RequestWithToken(request.host + request.api) + request.extra_params, request.body, &code,
+                                       &err);
     } else {
-        *response = httpclient__->Get(RequestWithToken(request.host+request.api) + request.extra_params, &code, &err);
+        *response = httpclient__->Get(RequestWithToken(request.host + request.api) + request.extra_params, &code, &err);
     }
     if (err != nullptr) {
         current_broker_uri_ = "";
@@ -103,7 +104,7 @@ Error ServerDataBroker::GetBrokerUri() {
 
     RequestInfo ri;
     ri.host = server_uri_;
-    ri.api= "/discovery/broker";
+    ri.api = "/discovery/broker";
 
     Error err;
     err = ProcessRequest(&current_broker_uri_, ri);
@@ -135,7 +136,7 @@ Error ServerDataBroker::GetFileInfoFromServer(FileInfo* info, std::string group_
         ProcessServerError(&err, response, &request_suffix);
 
         if (elapsed_ms >= timeout_ms_) {
-            err = IOErrorTemplates::kTimeout.Generate( ", last error: "+err->Explain());
+            err = IOErrorTemplates::kTimeout.Generate( ", last error: " + err->Explain());
             return err;
         }
         std::this_thread::sleep_for(std::chrono::milliseconds(100));
@@ -224,7 +225,7 @@ std::string ServerDataBroker::GenerateNewGroupId(Error* err) {
 
 
 std::string ServerDataBroker::AppendUri(std::string request_string) {
-    return current_broker_uri_ + "/"+std::move(request_string);
+    return current_broker_uri_ + "/" + std::move(request_string);
 }
 
 
@@ -244,7 +245,7 @@ std::string ServerDataBroker::BrokerRequestWithTimeout(RequestInfo request, Erro
         std::this_thread::sleep_for(std::chrono::milliseconds(100));
         elapsed_ms += 100;
     }
-    *err = IOErrorTemplates::kTimeout.Generate( ", last error: "+(*err)->Explain());
+    *err = IOErrorTemplates::kTimeout.Generate( ", last error: " + (*err)->Explain());
     return "";
 }
 
@@ -313,7 +314,7 @@ FileInfos ServerDataBroker::QueryImages(std::string query, Error* err) {
     ri.body = std::move(query);
 
     auto responce = BrokerRequestWithTimeout(ri, err);
-    if (err) {
+    if (*err) {
         (*err)->Append(responce);
     }
 
diff --git a/worker/api/cpp/src/server_data_broker.h b/worker/api/cpp/src/server_data_broker.h
index 6662eaae067c520e703595652668903bdbe604f6..a7d1afb968733eaa2cabb266aff45b73fbfe0e49 100644
--- a/worker/api/cpp/src/server_data_broker.h
+++ b/worker/api/cpp/src/server_data_broker.h
@@ -37,7 +37,7 @@ class ServerDataBroker final : public asapo::DataBroker {
     uint64_t GetNDataSets(Error* err) override;
     Error GetById(uint64_t id, FileInfo* info, std::string group_id, FileData* data) override;
     void SetTimeout(uint64_t timeout_ms) override;
-    FileInfos QueryImages(std::string query,Error* err) override;
+    FileInfos QueryImages(std::string query, Error* err) override;
 
     std::unique_ptr<IO> io__; // modified in testings to mock system calls,otherwise do not touch
     std::unique_ptr<HttpClient> httpclient__;
@@ -53,10 +53,10 @@ class ServerDataBroker final : public asapo::DataBroker {
     Error GetImageFromServer(GetImageServerOperation op, uint64_t id, std::string group_id, FileInfo* info, FileData* data);
     bool DataCanBeInBuffer(const FileInfo* info);
     Error TryGetDataFromBuffer(const FileInfo* info, FileData* data);
-    std::string BrokerRequestWithTimeout(RequestInfo request,Error* err);
+    std::string BrokerRequestWithTimeout(RequestInfo request, Error* err);
     std::string AppendUri(std::string request_string);
 
-        std::string OpToUriCmd(GetImageServerOperation op);
+    std::string OpToUriCmd(GetImageServerOperation op);
     std::string server_uri_;
     std::string current_broker_uri_;
     std::string source_path_;
diff --git a/worker/api/cpp/unittests/test_folder_broker.cpp b/worker/api/cpp/unittests/test_folder_broker.cpp
index ecbcfe5ca4b581fefc290ba879d1b62d61a74fa6..9b9c254938b009c44fab8ae43723c40ae941d6ef 100644
--- a/worker/api/cpp/unittests/test_folder_broker.cpp
+++ b/worker/api/cpp/unittests/test_folder_broker.cpp
@@ -344,10 +344,10 @@ TEST_F(GetDataFromFileTests, GetMetaDataReturnsOK) {
 }
 
 TEST(FolderDataBroker, QueryImages) {
-    auto data_broker = std::unique_ptr<FolderDataBroker>{new FolderDataBroker("test")};
+    auto data_broker = std::unique_ptr<FolderDataBroker> {new FolderDataBroker("test")};
 
     Error err;
-    auto infos = data_broker->QueryImages("bla",&err);
+    auto infos = data_broker->QueryImages("bla", &err);
 
     ASSERT_THAT(err, Ne(nullptr));
     ASSERT_THAT(infos.size(), Eq(0));
diff --git a/worker/api/cpp/unittests/test_server_broker.cpp b/worker/api/cpp/unittests/test_server_broker.cpp
index 00fd6a4d50736b1d70caa2d93f60e3473f0c7d36..86854a0ecba2eabcc1c9cdeeea1ed925a284a55d 100644
--- a/worker/api/cpp/unittests/test_server_broker.cpp
+++ b/worker/api/cpp/unittests/test_server_broker.cpp
@@ -499,20 +499,66 @@ TEST_F(ServerDataBrokerTests, QueryImagesReturnError) {
     MockGetBrokerUri();
 
     EXPECT_CALL(mock_http_client, Post_t(HasSubstr("queryimages"), expected_query_string, _, _)).WillOnce(DoAll(
-        SetArgPointee<2>(HttpCode::BadRequest),
-        SetArgPointee<3>(nullptr),
-        Return("error in query")));
+                SetArgPointee<2>(HttpCode::BadRequest),
+                SetArgPointee<3>(nullptr),
+                Return("error in query")));
 
     data_broker->SetTimeout(1000);
     asapo::Error err;
-    auto images = data_broker->QueryImages(expected_query_string,&err);
+    auto images = data_broker->QueryImages(expected_query_string, &err);
 
     ASSERT_THAT(err, Eq(asapo::WorkerErrorTemplates::kWrongInput));
     ASSERT_THAT(err->Explain(), HasSubstr("query"));
+    ASSERT_THAT(images.size(), Eq(0));
+}
+
+
+TEST_F(ServerDataBrokerTests, QueryImagesReturnEmptyResults) {
+    MockGetBrokerUri();
+
+    EXPECT_CALL(mock_http_client, Post_t(HasSubstr("queryimages"), expected_query_string, _, _)).WillOnce(DoAll(
+                SetArgPointee<2>(HttpCode::OK),
+                SetArgPointee<3>(nullptr),
+                Return("[]")));
+
+    data_broker->SetTimeout(100);
+    asapo::Error err;
+    auto images = data_broker->QueryImages(expected_query_string, &err);
 
+    ASSERT_THAT(err, Eq(nullptr));
     ASSERT_THAT(images.size(), Eq(0));
 }
 
 
+TEST_F(ServerDataBrokerTests, QueryImagesReturnRecords) {
+    return;
+    MockGetBrokerUri();
+
+    auto rec1 = CreateFI();
+    auto rec2 = CreateFI();
+    auto json1 = rec1.Json();
+    auto json2 = rec2.Json();
+    auto responce_string = "[" + json1 + "," + json2 + "]";
+
+
+    EXPECT_CALL(mock_http_client, Post_t(HasSubstr("queryimages"), expected_query_string, _, _)).WillOnce(DoAll(
+                SetArgPointee<2>(HttpCode::OK),
+                SetArgPointee<3>(nullptr),
+                Return(responce_string)));
+
+    data_broker->SetTimeout(100);
+    asapo::Error err;
+    auto images = data_broker->QueryImages(expected_query_string, &err);
+
+    ASSERT_THAT(err, Eq(nullptr));
+    ASSERT_THAT(images.size(), Eq(2));
+
+    ASSERT_THAT(images[0], Eq(rec1));
+    ASSERT_THAT(images[1], Eq(rec2));
+
+
+}
+
+
 
 }