From e8b07aaae147f90cbb73946ccc2f19485cf252f1 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Fri, 23 Oct 2020 08:47:40 +0200 Subject: [PATCH] fix translations --- scm-ui/ui-webapp/public/locales/de/users.json | 2 +- scm-ui/ui-webapp/public/locales/en/users.json | 6 +-- .../src/users/components/UserConverter.tsx | 1 - .../src/users/components/UserForm.tsx | 23 +++++++++++ .../scm/api/v2/resources/UserResource.java | 2 +- .../v2/resources/UserRootResourceTest.java | 40 +++++++++++++++++++ 6 files changed, 68 insertions(+), 6 deletions(-) diff --git a/scm-ui/ui-webapp/public/locales/de/users.json b/scm-ui/ui-webapp/public/locales/de/users.json index a5b2da64af..80d251e6b3 100644 --- a/scm-ui/ui-webapp/public/locales/de/users.json +++ b/scm-ui/ui-webapp/public/locales/de/users.json @@ -63,7 +63,7 @@ }, "userForm": { "subtitle": "Benutzer bearbeiten", - "userIsInternal": "Der Benutzer wird vom SCM-Manager verwaltet", + "userIsInternal": "Der Benutzer wird intern vom SCM-Manager verwaltet", "userIsExternal": "Der Benutzer wird von einem externen System verwaltet", "button": { "submit": "Speichern", diff --git a/scm-ui/ui-webapp/public/locales/en/users.json b/scm-ui/ui-webapp/public/locales/en/users.json index 48281c3486..627e2b80aa 100644 --- a/scm-ui/ui-webapp/public/locales/en/users.json +++ b/scm-ui/ui-webapp/public/locales/en/users.json @@ -63,12 +63,12 @@ }, "userForm": { "subtitle": "Edit User", - "userIsInternal": "This user is managed by SCM-Manager", + "userIsInternal": "This user is managed internally by SCM-Manager", "userIsExternal": "This user is managed by an external system", "button": { "submit": "Submit", - "convertToExternal": "Convert to external", - "convertToInternal": "Convert to internal" + "convertToExternal": "Convert user to external", + "convertToInternal": "Convert user to internal" }, "modal": { "passwordRequired": "Set new password for internal user", diff --git a/scm-ui/ui-webapp/src/users/components/UserConverter.tsx b/scm-ui/ui-webapp/src/users/components/UserConverter.tsx index b565fadcc1..cdcd24ffcf 100644 --- a/scm-ui/ui-webapp/src/users/components/UserConverter.tsx +++ b/scm-ui/ui-webapp/src/users/components/UserConverter.tsx @@ -38,7 +38,6 @@ import styled from "styled-components"; const ExternalDescription = styled.div` display: flex; align-items: center; - font-size: 1.25rem; font-weight: 400; `; diff --git a/scm-ui/ui-webapp/src/users/components/UserForm.tsx b/scm-ui/ui-webapp/src/users/components/UserForm.tsx index 3fcd91bad9..62c29b00bc 100644 --- a/scm-ui/ui-webapp/src/users/components/UserForm.tsx +++ b/scm-ui/ui-webapp/src/users/components/UserForm.tsx @@ -179,6 +179,20 @@ class UserForm extends React.Component { /> + {!this.props.user && ( + <> +
+
+ +
+
+ + )} {!user.external && ( <> {!this.props.user && passwordChangeField} @@ -249,6 +263,15 @@ class UserForm extends React.Component { } }); }; + + handleExternalChange = (external: boolean) => { + this.setState({ + user: { + ...this.state.user, + external + } + }); + }; } export default withTranslation("users")(UserForm); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java index 470ef8fda0..679224cde8 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UserResource.java @@ -244,7 +244,7 @@ public class UserResource { )) @ApiResponse(responseCode = "500", description = "internal server error") public Response toExternal(@PathParam("id") String name) { - userManager.overwritePassword(name, passwordService.encryptPassword(null)); + userManager.overwritePassword(name, null); UserDto dto = userToDtoMapper.map(userManager.get(name)); dto.setExternal(true); adapter.update(name, existing -> dtoToUserMapper.map(dto, existing.getPassword())); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserRootResourceTest.java index 1609bc0065..f6bdd4b4eb 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserRootResourceTest.java @@ -28,6 +28,7 @@ import com.github.sdorra.shiro.ShiroRule; import com.github.sdorra.shiro.SubjectAware; import com.google.common.io.Resources; import com.google.inject.util.Providers; +import com.sun.mail.iap.Argument; import org.apache.shiro.authc.credential.PasswordService; import org.jboss.resteasy.mock.MockHttpRequest; import org.jboss.resteasy.mock.MockHttpResponse; @@ -58,10 +59,12 @@ import java.util.Collection; import java.util.function.Predicate; import static java.util.Collections.singletonList; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; @@ -457,6 +460,43 @@ public class UserRootResourceTest { assertEquals("other:*", captor.getValue().iterator().next().getValue()); } + @Test + public void shouldConvertUserToInternalAndSetNewPassword() throws URISyntaxException { + when(passwordService.encryptPassword(anyString())).thenReturn("abc"); + ArgumentCaptor userCaptor = ArgumentCaptor.forClass(User.class); + MockHttpRequest request = MockHttpRequest + .put("/" + UserRootResource.USERS_PATH_V2 + "Neo/convert-to-internal") + .contentType(VndMediaType.USER) + .content("{\"newPassword\":\"trillian\"}".getBytes()); + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + verify(passwordService).encryptPassword("trillian"); + verify(userManager).overwritePassword("Neo", "abc"); + verify(userManager).modify(userCaptor.capture()); + + User user = userCaptor.getValue(); + assertThat(user.isExternal()).isFalse(); + } + + @Test + public void shouldConvertUserToExternalAndRemoveLocalPassword() throws URISyntaxException { + ArgumentCaptor userCaptor = ArgumentCaptor.forClass(User.class); + MockHttpRequest request = MockHttpRequest + .put("/" + UserRootResource.USERS_PATH_V2 + "Neo/convert-to-external") + .contentType(VndMediaType.USER); + MockHttpResponse response = new MockHttpResponse(); + + dispatcher.invoke(request, response); + + verify(userManager).overwritePassword("Neo", null); + verify(userManager).modify(userCaptor.capture()); + + User user = userCaptor.getValue(); + assertThat(user.isExternal()).isTrue(); + } + private PageResult createSingletonPageResult(int overallCount) { return new PageResult<>(singletonList(createDummyUser("Neo")), overallCount); }