Merge "Account REST API: adjust the deletable condition of external ids"
This commit is contained in:
@@ -38,7 +38,6 @@ import com.google.common.io.BaseEncoding;
|
||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.AccountCreator;
|
||||
import com.google.gerrit.acceptance.PushOneCommit;
|
||||
import com.google.gerrit.acceptance.RestResponse;
|
||||
import com.google.gerrit.acceptance.TestAccount;
|
||||
import com.google.gerrit.acceptance.UseSsh;
|
||||
import com.google.gerrit.common.data.Permission;
|
||||
@@ -47,7 +46,6 @@ import com.google.gerrit.extensions.api.changes.AddReviewerInput;
|
||||
import com.google.gerrit.extensions.api.changes.ReviewInput;
|
||||
import com.google.gerrit.extensions.api.changes.StarsInput;
|
||||
import com.google.gerrit.extensions.client.GeneralPreferencesInfo;
|
||||
import com.google.gerrit.extensions.common.AccountExternalIdInfo;
|
||||
import com.google.gerrit.extensions.common.AccountInfo;
|
||||
import com.google.gerrit.extensions.common.ChangeInfo;
|
||||
import com.google.gerrit.extensions.common.GpgKeyInfo;
|
||||
@@ -72,7 +70,6 @@ import com.google.gerrit.server.project.RefPattern;
|
||||
import com.google.gerrit.server.util.MagicBranch;
|
||||
import com.google.gerrit.testutil.ConfigSuite;
|
||||
import com.google.gerrit.testutil.FakeEmailSender.Message;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
@@ -101,7 +98,6 @@ import java.util.EnumSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class AccountIT extends AbstractDaemonTest {
|
||||
@ConfigSuite.Default
|
||||
@@ -747,33 +743,6 @@ public class AccountIT extends AbstractDaemonTest {
|
||||
gApi.accounts().id(admin.username).index();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAccountExternalIds() throws Exception {
|
||||
List<AccountExternalIdInfo> expectedIdInfoList = getExternalIds(user)
|
||||
.stream().map(AccountIT::toInfo).sorted().collect(Collectors.toList());
|
||||
|
||||
RestResponse response = userRestSession.get("/accounts/self/external.ids");
|
||||
response.assertOK();
|
||||
List<AccountExternalIdInfo> externalIdInfoList =
|
||||
newGson().fromJson(response.getReader(),
|
||||
new TypeToken<List<AccountExternalIdInfo>>() {}.getType());
|
||||
|
||||
// 'canDelete' field will be all null (false). It will be better if we can
|
||||
// find a way to test it. But it looks a little difficult.
|
||||
externalIdInfoList.stream().sorted();
|
||||
assertThat(expectedIdInfoList)
|
||||
.containsExactlyElementsIn(expectedIdInfoList);
|
||||
}
|
||||
|
||||
private static AccountExternalIdInfo toInfo(AccountExternalId id) {
|
||||
AccountExternalIdInfo info = new AccountExternalIdInfo();
|
||||
info.identity = id.getExternalId();
|
||||
info.emailAddress = id.getEmailAddress();
|
||||
info.trusted = id.isTrusted();
|
||||
info.canDelete = id.canDelete();
|
||||
return info;
|
||||
}
|
||||
|
||||
private void assertSequenceNumbers(List<SshKeyInfo> sshKeys) {
|
||||
int seq = 1;
|
||||
for (SshKeyInfo key : sshKeys) {
|
||||
|
@@ -0,0 +1,65 @@
|
||||
// Copyright (C) 2017 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.acceptance.rest.account;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.RestResponse;
|
||||
import com.google.gerrit.extensions.common.AccountExternalIdInfo;
|
||||
import com.google.gerrit.reviewdb.client.AccountExternalId;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class ExternalIdIT extends AbstractDaemonTest {
|
||||
@Test
|
||||
public void getExternalIDs() throws Exception {
|
||||
Collection<AccountExternalId> expectedIds =
|
||||
accountCache.get(user.getId()).getExternalIds();
|
||||
|
||||
List<AccountExternalIdInfo> expectedIdInfos = new ArrayList<>();
|
||||
for (AccountExternalId id : expectedIds) {
|
||||
id.setCanDelete(!id.getExternalId().equals("username:" + user.username));
|
||||
id.setTrusted(true);
|
||||
expectedIdInfos.add(toInfo(id));
|
||||
}
|
||||
|
||||
RestResponse response = userRestSession.get("/accounts/self/external.ids");
|
||||
response.assertOK();
|
||||
|
||||
List<AccountExternalIdInfo> results =
|
||||
newGson().fromJson(response.getReader(),
|
||||
new TypeToken<List<AccountExternalIdInfo>>() {}.getType());
|
||||
|
||||
Collections.sort(expectedIdInfos);
|
||||
Collections.sort(results);
|
||||
assertThat(results).containsExactlyElementsIn(expectedIdInfos);
|
||||
}
|
||||
|
||||
private static AccountExternalIdInfo toInfo(AccountExternalId id) {
|
||||
AccountExternalIdInfo info = new AccountExternalIdInfo();
|
||||
info.identity = id.getExternalId();
|
||||
info.emailAddress = id.getEmailAddress();
|
||||
info.trusted = id.isTrusted() ? true : null;
|
||||
info.canDelete = id.canDelete() ? true : null;
|
||||
return info;
|
||||
}
|
||||
}
|
@@ -16,6 +16,8 @@ package com.google.gerrit.extensions.common;
|
||||
|
||||
import com.google.common.collect.ComparisonChain;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class AccountExternalIdInfo
|
||||
implements Comparable<AccountExternalIdInfo> {
|
||||
public String identity;
|
||||
@@ -30,4 +32,16 @@ public class AccountExternalIdInfo
|
||||
.compare(a.emailAddress, emailAddress)
|
||||
.result();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof AccountExternalIdInfo) {
|
||||
AccountExternalIdInfo a = (AccountExternalIdInfo) o;
|
||||
return (Objects.equals(a.identity, identity))
|
||||
&& (Objects.equals(a.emailAddress, emailAddress))
|
||||
&& (Objects.equals(a.trusted, trusted))
|
||||
&& (Objects.equals(a.canDelete, canDelete));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@@ -75,7 +75,7 @@ public class GetExternalIds implements RestReadView<AccountResource> {
|
||||
AccountExternalId.Key last = resource.getUser()
|
||||
.getLastLoginExternalIdKey();
|
||||
info.canDelete =
|
||||
toBoolean(last != null && !last.get().equals(info.identity));
|
||||
toBoolean(last == null || !last.get().equals(info.identity));
|
||||
}
|
||||
result.add(info);
|
||||
}
|
||||
|
Reference in New Issue
Block a user