AccountExternalIdInfo: Return null for boolean fields in case of false

This is to be consistent with how the values for other boolean fields
are returned.

Change-Id: I10365265fa477613bbf40b043655743d40d6eb3c
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2017-01-13 08:23:16 +01:00
parent 08a2e57616
commit c044e7480a
3 changed files with 16 additions and 13 deletions

View File

@@ -1702,8 +1702,7 @@ link:#account-external-id-info[AccountExternalIdInfo] entities.
{
"identity": "username:john",
"email": "john.doe@example.com",
"trusted": true,
"can_delete": false
"trusted": true
}
]
----
@@ -2142,9 +2141,10 @@ an account.
|Field Name ||Description
|`identity` ||The account external id.
|`email` |optional|The email address for the external id.
|`trusted` ||True if the external id is trusted.
|`can_delete` ||
True if the external id can be deleted by the calling user.
|`trusted` |not set if `false`|
Whether the external id is trusted.
|`can_delete` |not set if `false`|
Whether the external id can be deleted by the calling user.
|============================
[[capability-info]]

View File

@@ -758,8 +758,8 @@ public class AccountIT extends AbstractDaemonTest {
newGson().fromJson(response.getReader(),
new TypeToken<List<AccountExternalIdInfo>>() {}.getType());
// 'canDelete' field will be all false. It will be better if we can find
// a way to test it. But it looks a little difficult.
// '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);

View File

@@ -66,22 +66,25 @@ public class GetExternalIds implements RestReadView<AccountResource> {
AccountExternalIdInfo info = new AccountExternalIdInfo();
info.identity = id.getExternalId();
info.emailAddress = id.getEmailAddress();
info.trusted = authConfig.isIdentityTrustable(
Collections.singleton(id));
info.trusted =
toBoolean(authConfig.isIdentityTrustable(Collections.singleton(id)));
// The identity can be deleted only if its not the one used to
// establish this web session, and if only if an identity was
// actually used to establish this web session.
if (id.isScheme(SCHEME_USERNAME)) {
info.canDelete = false;
} else {
if (!id.isScheme(SCHEME_USERNAME)) {
CurrentUser.PropertyKey<AccountExternalId.Key> k =
CurrentUser.PropertyKey.create();
AccountExternalId.Key last = resource.getUser().get(k);
info.canDelete = (last != null) && (!last.get().equals(info.identity));
info.canDelete =
toBoolean(last != null && !last.get().equals(info.identity));
}
result.add(info);
}
return result;
}
private static Boolean toBoolean(boolean v) {
return v ? v : null;
}
}