diff --git a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/OzgCloudElasticsearchRemoteServiceTest.java b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/OzgCloudElasticsearchRemoteServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..726babacc70d5c29adc136cdea682cc969f4768a
--- /dev/null
+++ b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/common/elasticsearch/OzgCloudElasticsearchRemoteServiceTest.java
@@ -0,0 +1,91 @@
+package de.ozgcloud.operator.common.elasticsearch;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import de.ozgcloud.operator.user.IndicesPrivilegesDataTestFactory;
+import de.ozgcloud.operator.user.PutRoleRequestDataTestFactory;
+import de.ozgcloud.operator.user.PutUserRequestDataTestFactory;
+
+class OzgCloudElasticsearchRemoteServiceTest {
+
+	@Spy
+	@InjectMocks
+	private OzgCloudElasticsearchRemoteService service;
+	@Mock
+	private ElasticsearchClient client;
+	
+	@DisplayName("Create security role")
+	@Nested
+	class TestCreateSecurityRole {
+		
+		@DisplayName("create put role request of")
+		@Nested
+		class TestCreatePutRoleRequestOf {
+			
+			@Test
+			void shouldHaveName() {
+				var request = service.createPutRoleRequestOf(PutRoleRequestDataTestFactory.create());
+				
+				assertThat(request.name()).isEqualTo(PutRoleRequestDataTestFactory.NAME);
+			}
+			
+			@DisplayName("indices privileges")
+			@Nested
+			class TestIndicesPrivileges {
+				
+				@Test
+				void shouldHaveName() {
+					var request = service.createPutRoleRequestOf(PutRoleRequestDataTestFactory.create());
+					
+					assertThat(request.indices().get(0).names()).containsExactly(IndicesPrivilegesDataTestFactory.NAME);
+				}
+				
+				@Test
+				void shouldHavePrivileges() {
+					var request = service.createPutRoleRequestOf(PutRoleRequestDataTestFactory.create());
+					
+					assertThat(request.indices().get(0).privileges()).containsExactly(IndicesPrivilegesDataTestFactory.PRIVILEGES);
+				}
+			}
+		}
+	}
+	
+	@DisplayName("Create security user")
+	@Nested
+	class TestCreateSecurityUser {
+		
+		@DisplayName("create put user request of")
+		@Nested
+		class TestCreatePutUserRequestOf {
+			
+			@Test
+			void shouldHaveName() {
+				var request = service.createPutUserRequestOf(PutUserRequestDataTestFactory.create());
+				
+				assertThat(request.username()).isEqualTo(PutUserRequestDataTestFactory.USERNAME);
+			}
+			
+			@Test
+			void shouldHaveRoles() {
+				var request = service.createPutUserRequestOf(PutUserRequestDataTestFactory.create());
+				
+				assertThat(request.roles()).containsExactly(PutUserRequestDataTestFactory.ROLES);
+			}
+			
+			@Test
+			void shouldHavePassword() {
+				var request = service.createPutUserRequestOf(PutUserRequestDataTestFactory.create());
+				
+				assertThat(request.password()).isEqualTo(PutUserRequestDataTestFactory.PASSWORD);
+			}
+		}
+	}
+}
\ No newline at end of file