|
|
@@ -23,8 +23,10 @@ import static org.junit.Assert.assertEquals;
|
|
|
import static org.junit.Assert.assertFalse;
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
import static org.mockito.ArgumentMatchers.anyMap;
|
|
|
+import static org.mockito.ArgumentMatchers.anyList;
|
|
|
import static org.mockito.ArgumentMatchers.anyString;
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
+import static org.mockito.Mockito.never;
|
|
|
import static org.mockito.Mockito.times;
|
|
|
import static org.mockito.Mockito.verify;
|
|
|
import static org.mockito.Mockito.when;
|
|
|
@@ -166,6 +168,80 @@ public class EiamLocalServiceTest {
|
|
|
assertTrue(result.getItems().get(0).getMessage().contains("账户属性可能已更新"));
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void batchUpdate_primaryOrgOnly_callsOnlyPrimaryOrgAction() {
|
|
|
+ EiamUpdateUserItem item = updateItem();
|
|
|
+ item.setPrimaryOrganizationalUnitId("ou_new");
|
|
|
+ when(eiamClientUser.setUserPrimaryOrganizationalUnit(anyString(), anyString(),
|
|
|
+ anyString(), anyString(), anyString())).thenReturn(new EiamApiResponse());
|
|
|
+
|
|
|
+ EiamBatchResult result = localService.batchUpdate(Collections.singletonList(item));
|
|
|
+
|
|
|
+ assertEquals(1, result.getSuccessCount());
|
|
|
+ verify(eiamClientUser).setUserPrimaryOrganizationalUnit(anyString(), anyString(),
|
|
|
+ anyString(), anyString(), anyString());
|
|
|
+ verify(eiamClientUser, never()).patchUser(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), anyMap());
|
|
|
+ verify(eiamClientUser, never()).addUserToOrganizationalUnits(anyString(), anyString(),
|
|
|
+ anyString(), anyString(), anyList());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public void batchUpdate_phone_updatesUsernameAndPhoneDefaults() {
|
|
|
+ EiamUpdateUserItem item = updateItem();
|
|
|
+ item.setUpdateContents(Collections.singletonList(BentelerYidaFormMapper.UPDATE_PHONE));
|
|
|
+ item.setUsername("17612168216");
|
|
|
+ item.setPhoneNumber("17612168216");
|
|
|
+ when(eiamClientUser.patchUser(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), anyMap())).thenReturn(new EiamApiResponse());
|
|
|
+
|
|
|
+ EiamBatchResult result = localService.batchUpdate(Collections.singletonList(item));
|
|
|
+
|
|
|
+ assertEquals(1, result.getSuccessCount());
|
|
|
+ ArgumentCaptor<Map> bodyCaptor = ArgumentCaptor.forClass(Map.class);
|
|
|
+ verify(eiamClientUser).patchUser(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), bodyCaptor.capture());
|
|
|
+ assertEquals("17612168216", bodyCaptor.getValue().get("username"));
|
|
|
+ assertEquals("17612168216", bodyCaptor.getValue().get("phoneNumber"));
|
|
|
+ assertEquals("86", bodyCaptor.getValue().get("phoneRegion"));
|
|
|
+ assertEquals(true, bodyCaptor.getValue().get("phoneNumberVerified"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void batchUpdate_additionalOrgOnly_preservesPrimaryOrg() {
|
|
|
+ EiamUpdateUserItem item = updateItem();
|
|
|
+ item.setAdditionalOrganizationalUnitId("ou_additional");
|
|
|
+ when(eiamClientUser.addUserToOrganizationalUnits(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), anyList())).thenReturn(new EiamApiResponse());
|
|
|
+
|
|
|
+ EiamBatchResult result = localService.batchUpdate(Collections.singletonList(item));
|
|
|
+
|
|
|
+ assertEquals(1, result.getSuccessCount());
|
|
|
+ verify(eiamClientUser).addUserToOrganizationalUnits(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), anyList());
|
|
|
+ verify(eiamClientUser, never()).setUserPrimaryOrganizationalUnit(anyString(), anyString(),
|
|
|
+ anyString(), anyString(), anyString());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void batchUpdate_additionalOrgFailure_reportsEarlierPatch() {
|
|
|
+ EiamUpdateUserItem item = updateItem();
|
|
|
+ item.setUsername("17612168216");
|
|
|
+ item.setPhoneNumber("17612168216");
|
|
|
+ item.setAdditionalOrganizationalUnitId("ou_additional");
|
|
|
+ when(eiamClientUser.patchUser(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), anyMap())).thenReturn(new EiamApiResponse());
|
|
|
+ when(eiamClientUser.addUserToOrganizationalUnits(anyString(), anyString(), anyString(),
|
|
|
+ anyString(), anyList())).thenReturn(
|
|
|
+ errorResponse("OrganizationUnitIdNotInScopes", "OU not in scope"));
|
|
|
+
|
|
|
+ EiamBatchResult result = localService.batchUpdate(Collections.singletonList(item));
|
|
|
+
|
|
|
+ assertEquals(EiamBatchStage.ADD_ORG, result.getItems().get(0).getStage());
|
|
|
+ assertTrue(result.getItems().get(0).getMessage().contains("账户属性可能已更新"));
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void batchDelete_partialFailure_continuesFollowingItems() {
|
|
|
when(eiamClientUser.deleteUser(anyString(), anyString(), anyString(), anyString()))
|
|
|
@@ -216,6 +292,13 @@ public class EiamLocalServiceTest {
|
|
|
return item;
|
|
|
}
|
|
|
|
|
|
+ private EiamUpdateUserItem updateItem() {
|
|
|
+ EiamUpdateUserItem item = new EiamUpdateUserItem();
|
|
|
+ item.setFormInstanceId("form_update");
|
|
|
+ item.setUserId("user_1");
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+
|
|
|
private EiamApiResponse successResponse(String userId) {
|
|
|
EiamApiResponse response = new EiamApiResponse();
|
|
|
response.setUserId(userId);
|