Skip to content
Snippets Groups Projects
Commit a5b01481 authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-4606-userprofile-service' (#5) from...

Merge pull request 'OZG-4606-userprofile-service' (#5) from OZG-4606-userprofile-service into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-lib/api-lib/pulls/5
parents 532ca30c 64b82f5c
No related branches found
No related tags found
No related merge requests found
Showing
with 207 additions and 4 deletions
...@@ -17,9 +17,6 @@ ...@@ -17,9 +17,6 @@
<maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version> <maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>3.2.2</maven-failsafe-plugin.version> <maven-failsafe-plugin.version>3.2.2</maven-failsafe-plugin.version>
<jacoco.plugin.version>0.8.11</jacoco.plugin.version> <jacoco.plugin.version>0.8.11</jacoco.plugin.version>
<!-- required to use SNAPSHOT to break cyclic dependency -->
<vorgang-manager.version>2.0.0-SNAPSHOT</vorgang-manager.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -45,6 +42,12 @@ ...@@ -45,6 +42,12 @@
<version>${vorgang-manager.version}</version> <version>${vorgang-manager.version}</version>
</dependency> </dependency>
<dependency>
<groupId>de.ozgcloud.user</groupId>
<artifactId>user-manager-interface</artifactId>
<version>${user-manager.version}</version>
</dependency>
<!--spring --> <!--spring -->
<dependency> <dependency>
<groupId>net.devh</groupId> <groupId>net.devh</groupId>
......
package de.ozgcloud.apilib.user;
import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class GrpcOzgCloudUserProfileService implements OzgCloudUserProfileService {
private final UserProfileServiceBlockingStub serviceStub;
private final UserProfileMapper mapper;
@Override
public OzgCloudUserProfile getById(OzgCloudUserId userId) {
var grpcUserProfileResponse = serviceStub.getById(buildGetUserRequest(userId));
return mapper.mapFromGrpc(grpcUserProfileResponse.getUserProfile());
}
private GrpcGetUserProfileRequest buildGetUserRequest(OzgCloudUserId id) {
return GrpcGetUserProfileRequest.newBuilder()
.setUserId(id.toString())
.build();
}
}
package de.ozgcloud.apilib.user;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class OzgCloudUserProfile {
private OzgCloudUserId id;
private String firstName;
private String lastName;
private String email;
}
package de.ozgcloud.apilib.user;
public interface OzgCloudUserProfileService {
public OzgCloudUserProfile getById(OzgCloudUserId userId);
}
package de.ozgcloud.apilib.user;
import org.mapstruct.Mapper;
import de.ozgcloud.user.userprofile.GrpcUserProfile;
import lombok.NonNull;
@Mapper
public interface UserProfileMapper {
OzgCloudUserProfile mapFromGrpc(GrpcUserProfile userProfile);
default OzgCloudUserId toOzgCloudUserId(@NonNull String id) {
return OzgCloudUserId.from(id);
}
}
package de.ozgcloud.apilib.user;
import de.ozgcloud.user.userprofile.GrpcGetUserProfileResponse;
public class GrpcGetUserProfileResponseTestFactory {
public static GrpcGetUserProfileResponse create() {
return createBuilder().build();
}
public static GrpcGetUserProfileResponse.Builder createBuilder() {
return GrpcGetUserProfileResponse.newBuilder()
.setUserProfile(GrpcUserProfileTestFactory.create());
}
}
package de.ozgcloud.apilib.user;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
class GrpcOzgCloudUserProfileServiceTest {
@InjectMocks
private GrpcOzgCloudUserProfileService service;
@Mock
private UserProfileServiceBlockingStub userProfileServiceStub;
@Mock
private UserProfileMapper mapper;
@Nested
class TestGetById {
@Captor
private ArgumentCaptor<GrpcGetUserProfileRequest> requestCaptor;
private OzgCloudUserProfile mappedUserProfile = OzgCloudUserProfileTestFactory.create();
@BeforeEach
void init() {
when(userProfileServiceStub.getById(any())).thenReturn(GrpcGetUserProfileResponseTestFactory.create());
when(mapper.mapFromGrpc(any())).thenReturn(mappedUserProfile);
}
@Test
void shouldCallStub() {
service.getById(OzgCloudUserProfileTestFactory.ID);
verify(userProfileServiceStub).getById(requestCaptor.capture());
assertThat(requestCaptor.getValue().getUserId()).isEqualTo(OzgCloudUserProfileTestFactory.ID.toString());
}
@Test
void shouldCallMapper() {
service.getById(OzgCloudUserProfileTestFactory.ID);
verify(mapper).mapFromGrpc(any());
}
@Test
void shouldReturnResult() {
var result = service.getById(OzgCloudUserProfileTestFactory.ID);
assertThat(result).isSameAs(mappedUserProfile);
}
}
}
package de.ozgcloud.apilib.user;
import static de.ozgcloud.apilib.user.OzgCloudUserProfileTestFactory.*;
import de.ozgcloud.user.userprofile.GrpcUserProfile;
public class GrpcUserProfileTestFactory {
public static GrpcUserProfile create() {
return createBuilder().build();
}
public static GrpcUserProfile.Builder createBuilder() {
return GrpcUserProfile.newBuilder()
.setId(ID.toString())
.setFirstName(FIRST_NAME)
.setLastName(LAST_NAME);
}
}
package de.ozgcloud.apilib.user;
import java.util.UUID;
public class OzgCloudUserProfileTestFactory {
public static final OzgCloudUserId ID = OzgCloudUserId.from(UUID.randomUUID().toString());
public static final String FIRST_NAME = "Theo";
public static final String LAST_NAME = "Test";
public static final String EMAIL = "theo@local";
public static OzgCloudUserProfile create() {
return createBuilder().build();
}
public static OzgCloudUserProfile.OzgCloudUserProfileBuilder createBuilder() {
return OzgCloudUserProfile.builder()
.id(ID)
.firstName(FIRST_NAME)
.lastName(LAST_NAME)
.email(EMAIL);
}
}
...@@ -23,12 +23,16 @@ import de.ozgcloud.apilib.common.command.grpc.CommandMapper; ...@@ -23,12 +23,16 @@ import de.ozgcloud.apilib.common.command.grpc.CommandMapper;
import de.ozgcloud.apilib.common.command.grpc.GrpcOzgCloudCommandService; import de.ozgcloud.apilib.common.command.grpc.GrpcOzgCloudCommandService;
import de.ozgcloud.apilib.file.dummy.DummyOzgCloudFileService; import de.ozgcloud.apilib.file.dummy.DummyOzgCloudFileService;
import de.ozgcloud.apilib.file.grpc.GrpcOzgCloudFileService; import de.ozgcloud.apilib.file.grpc.GrpcOzgCloudFileService;
import de.ozgcloud.apilib.user.GrpcOzgCloudUserProfileService;
import de.ozgcloud.apilib.user.OzgCloudUserProfileService;
import de.ozgcloud.apilib.user.UserProfileMapper;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService;
import de.ozgcloud.apilib.vorgang.dummy.DummyVorgangService; import de.ozgcloud.apilib.vorgang.dummy.DummyVorgangService;
import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService; import de.ozgcloud.apilib.vorgang.grpc.GrpcOzgCloudVorgangService;
import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper; import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangMapper;
import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper; import de.ozgcloud.apilib.vorgang.grpc.OzgCloudVorgangStubMapper;
import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc.CommandServiceBlockingStub; import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc.CommandServiceBlockingStub;
import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration; import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration;
...@@ -163,4 +167,11 @@ public class OzgCloudClientAutoConfiguration { ...@@ -163,4 +167,11 @@ public class OzgCloudClientAutoConfiguration {
AlfaService alfaService() { AlfaService alfaService() {
return new DummyAlfaService(); return new DummyAlfaService();
} }
@Bean
@ConditionalOnProperty("ozgcloud.user-manager.address")
OzgCloudUserProfileService grpcOzgCloudUserProfileService(@GrpcClient("user-manager") UserProfileServiceBlockingStub grpcStub,
UserProfileMapper mapper) {
return new GrpcOzgCloudUserProfileService(grpcStub, mapper);
}
} }
...@@ -25,8 +25,11 @@ ...@@ -25,8 +25,11 @@
<properties> <properties>
<source-plugin.version>3.3.0</source-plugin.version> <source-plugin.version>3.3.0</source-plugin.version>
<failsafe-plugin.version>3.1.2</failsafe-plugin.version> <failsafe-plugin.version>3.2.2</failsafe-plugin.version>
<maven-jar-plugin.version>3.3.0</maven-jar-plugin.version> <maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
<vorgang-manager.version>2.0.0-SNAPSHOT</vorgang-manager.version>
<user-manager.version>2.0.0-SNAPSHOT</user-manager.version>
</properties> </properties>
<build> <build>
...@@ -44,6 +47,7 @@ ...@@ -44,6 +47,7 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment