diff --git a/internal/usecases/consume/consume.go b/internal/usecases/consume/consume.go
index 2ccb2e3bbdce20cbd2ddfcea32202a36ca1752f5..af9cd8f6427f868f93e5cd65c1b31bb941160e71 100644
--- a/internal/usecases/consume/consume.go
+++ b/internal/usecases/consume/consume.go
@@ -17,11 +17,11 @@ type Service struct {
 }
 
 // NewService creates a new service
-func NewService(broker brokerdriver.Broker, produceService produce.UseCase, converQueryService convertquery.UseCase, requestSenderService request.UseCase) *Service {
+func NewService(broker brokerdriver.Broker, produceService produce.UseCase, convertQueryService convertquery.UseCase, requestSenderService request.UseCase) *Service {
 	return &Service{
 		broker:         broker,
 		producer:       produceService,
-		queryConverter: converQueryService,
+		queryConverter: convertQueryService,
 		requestSender:  requestSenderService,
 	}
 }
diff --git a/internal/usecases/consume/consume_test.go b/internal/usecases/consume/consume_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..acea44e1662df3eaf51d51fec2558f5391e79e90
--- /dev/null
+++ b/internal/usecases/consume/consume_test.go
@@ -0,0 +1,215 @@
+package consume
+
+import (
+	"encoding/json"
+	"query-service/internal/adapters/brokeradapter"
+	mockbrokerdriver "query-service/internal/drivers/brokerdriver/mock"
+	mockkeyvaluedriver "query-service/internal/drivers/keyvaluedriver/mock"
+	mockconvertquery "query-service/internal/usecases/convertquery/mock"
+	"query-service/internal/usecases/produce"
+	mockrequest "query-service/internal/usecases/request/mock"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestStart(t *testing.T) {
+	// // Create broker adapter
+	// brokerAdapter := brokeradapter.CreateGateway()
+	// // Create a mock broker
+	// mockBroker := mockbrokerdriver.CreateBroker(brokerAdapter)
+	// // Create mock key value store
+	// keyValueStore := mockkeyvaluedriver.CreateKeyValueStore()
+	// // Create new producer service
+	// producerService := produce.NewService(mockBroker, keyValueStore)
+	// // Create new convert query service
+	// convertQueryService := convertquery.NewService()
+	// // Create new request sender service
+	// requestSenderService := request.NewService()
+	// // Create new service
+	// service := NewService(mockBroker, producerService, convertQueryService, requestSenderService)
+}
+
+func TestHandleCorrectMessage(t *testing.T) {
+	// Create broker adapter
+	brokerAdapter := brokeradapter.CreateGateway()
+	// Create a mock broker
+	mockBroker := mockbrokerdriver.CreateBroker(brokerAdapter)
+	// Create mock key value store
+	keyValueStore := mockkeyvaluedriver.CreateKeyValueStore()
+	// Create new producer service
+	producerService := produce.NewService(mockBroker, keyValueStore)
+	producerService.Start()
+	// Create new convert query service
+	convertQueryService := mockconvertquery.NewService()
+	// Create new request sender service
+	requestSenderService := mockrequest.NewService()
+	// Create new service
+	service := NewService(mockBroker, producerService, convertQueryService, requestSenderService)
+
+	// Create mock session and mock queue
+	mockSession := "mock-session"
+	mockQueue := "mock-queue"
+
+	// Set the test-session sessionID queue to mock-queue in key value store
+	keyValueStore.Set(&mockSession, &mockQueue)
+
+	// Create headers containing a sessionID
+	headers := make(map[string]interface{})
+	headers["sessionID"] = mockSession
+	mockMessage := brokeradapter.Message{
+		Headers: headers,
+		Body:    []byte("test message"),
+	}
+
+	// Assert that there have not been any messages sent yet
+	assert.Empty(t, mockBroker.Messages)
+
+	// Send the mock message
+	service.HandleMessage(&mockMessage)
+
+	// Assert that there now are two messages that have been sent with routing key mock-queue
+	assert.Len(t, mockBroker.Messages[mockQueue], 2)
+
+	// Assert that the first message is of type 'query_translation_result' and has 'Query converted' as value
+	var translationMessage map[string]interface{}
+	json.Unmarshal(mockBroker.Messages[mockQueue][0].Body, &translationMessage)
+	assert.Equal(t, "query_translation_result", translationMessage["type"])
+	assert.Equal(t, "Query converted", translationMessage["values"])
+
+	// Assert that the second message is of type 'query_result' and contains no values
+	var resultMessage map[string]interface{}
+	json.Unmarshal(mockBroker.Messages[mockQueue][1].Body, &resultMessage)
+	assert.Equal(t, "query_result", resultMessage["type"])
+	assert.Empty(t, resultMessage["values"])
+}
+
+// Unit test message received with no session ID
+func TestHandleMessageNoSessionID(t *testing.T) {
+	// Create broker adapter
+	brokerAdapter := brokeradapter.CreateGateway()
+	// Create a mock broker
+	mockBroker := mockbrokerdriver.CreateBroker(brokerAdapter)
+	// Create mock key value store
+	keyValueStore := mockkeyvaluedriver.CreateKeyValueStore()
+	// Create new producer service
+	producerService := produce.NewService(mockBroker, keyValueStore)
+	// Create new convert query service
+	convertQueryService := mockconvertquery.NewService()
+	// Create new request sender service
+	requestSenderService := mockrequest.NewService()
+	// Create new service
+	service := NewService(mockBroker, producerService, convertQueryService, requestSenderService)
+
+	// Create headers containing a sessionID
+	headers := make(map[string]interface{})
+	mockMessage := brokeradapter.Message{
+		Headers: headers,
+		Body:    []byte("test message"),
+	}
+
+	// Assert that there have not been any messages sent yet
+	assert.Empty(t, mockBroker.Messages)
+
+	// Send the mock message
+	service.HandleMessage(&mockMessage)
+
+	// Assert that there was no message published
+	assert.Empty(t, mockBroker.Messages)
+}
+
+// Unit test receival of message and not being able to parse it
+func TestFailToConvertQuery(t *testing.T) {
+	// Create broker adapter
+	brokerAdapter := brokeradapter.CreateGateway()
+	// Create a mock broker
+	mockBroker := mockbrokerdriver.CreateBroker(brokerAdapter)
+	// Create mock key value store
+	keyValueStore := mockkeyvaluedriver.CreateKeyValueStore()
+	// Create new producer service
+	producerService := produce.NewService(mockBroker, keyValueStore)
+	producerService.Start()
+	// Create new convert query service
+	convertQueryService := mockconvertquery.NewService()
+	// Create new request sender service
+	requestSenderService := mockrequest.NewService()
+	// Create new service
+	service := NewService(mockBroker, producerService, convertQueryService, requestSenderService)
+
+	// Create mock session and mock queue
+	mockSession := "mock-session"
+	mockQueue := "mock-queue"
+
+	// Set the test-session sessionID queue to mock-queue in key value store
+	keyValueStore.Set(&mockSession, &mockQueue)
+
+	// Create headers containing a sessionID
+	headers := make(map[string]interface{})
+	headers["sessionID"] = mockSession
+	mockMessage := brokeradapter.Message{
+		Headers: headers,
+		Body:    []byte("test message"),
+	}
+
+	// Make it so that the conversion service throws an error
+	convertQueryService.ToggleError()
+
+	// Assert that there have not been any messages sent yet
+	assert.Empty(t, mockBroker.Messages)
+
+	// Send the mock message
+	service.HandleMessage(&mockMessage)
+
+	// Assert that there was an error message published
+	var errorMsg map[string]interface{}
+	json.Unmarshal(mockBroker.Messages[mockQueue][0].Body, &errorMsg)
+	assert.Equal(t, "query_translation_error", errorMsg["type"])
+}
+
+// Test AQL querying error handling
+func TestArangoError(t *testing.T) {
+	// Create broker adapter
+	brokerAdapter := brokeradapter.CreateGateway()
+	// Create a mock broker
+	mockBroker := mockbrokerdriver.CreateBroker(brokerAdapter)
+	// Create mock key value store
+	keyValueStore := mockkeyvaluedriver.CreateKeyValueStore()
+	// Create new producer service
+	producerService := produce.NewService(mockBroker, keyValueStore)
+	producerService.Start()
+	// Create new convert query service
+	convertQueryService := mockconvertquery.NewService()
+	// Create new request sender service
+	requestSenderService := mockrequest.NewService()
+	// Create new service
+	service := NewService(mockBroker, producerService, convertQueryService, requestSenderService)
+
+	// Create mock session and mock queue
+	mockSession := "mock-session"
+	mockQueue := "mock-queue"
+
+	// Set the test-session sessionID queue to mock-queue in key value store
+	keyValueStore.Set(&mockSession, &mockQueue)
+
+	// Create headers containing a sessionID
+	headers := make(map[string]interface{})
+	headers["sessionID"] = mockSession
+	mockMessage := brokeradapter.Message{
+		Headers: headers,
+		Body:    []byte("test message"),
+	}
+
+	// Make it so that the request sender service throws an error
+	requestSenderService.ToggleError()
+
+	// Assert that there have not been any messages sent yet
+	assert.Empty(t, mockBroker.Messages)
+
+	// Send the mock message
+	service.HandleMessage(&mockMessage)
+
+	// Assert that there was an error message published
+	var errorMsg map[string]interface{}
+	json.Unmarshal(mockBroker.Messages[mockQueue][1].Body, &errorMsg)
+	assert.Equal(t, "query_database_error", errorMsg["type"])
+}