Only notify CDS if an account attribute change actually changes an account's discoverability.

This commit is contained in:
Jon Chambers 2020-11-16 10:38:03 -05:00 committed by Jon Chambers
parent 2f5d6e16a6
commit 474b879b16
2 changed files with 33 additions and 2 deletions

View File

@ -461,13 +461,18 @@ public class AccountController {
setAccountRegistrationLockFromAttributes(account, attributes); setAccountRegistrationLockFromAttributes(account, attributes);
final boolean hasDiscoverabilityChange = (account.isDiscoverableByPhoneNumber() != attributes.isDiscoverableByPhoneNumber());
account.setUnidentifiedAccessKey(attributes.getUnidentifiedAccessKey()); account.setUnidentifiedAccessKey(attributes.getUnidentifiedAccessKey());
account.setUnrestrictedUnidentifiedAccess(attributes.isUnrestrictedUnidentifiedAccess()); account.setUnrestrictedUnidentifiedAccess(attributes.isUnrestrictedUnidentifiedAccess());
account.setPayments(attributes.getPayments()); account.setPayments(attributes.getPayments());
account.setDiscoverableByPhoneNumber(attributes.isDiscoverableByPhoneNumber()); account.setDiscoverableByPhoneNumber(attributes.isDiscoverableByPhoneNumber());
accounts.update(account); accounts.update(account);
directoryQueue.refreshRegisteredUser(account);
if (hasDiscoverabilityChange) {
directoryQueue.refreshRegisteredUser(account);
}
} }
@GET @GET

View File

@ -1170,7 +1170,7 @@ public class AccountControllerTest {
} }
@Test @Test
public void testSetAccountAttributes() { public void testSetAccountAttributesNoDiscoverabilityChange() {
Response response = Response response =
resources.getJerseyTest() resources.getJerseyTest()
.target("/v1/accounts/attributes/") .target("/v1/accounts/attributes/")
@ -1178,6 +1178,32 @@ public class AccountControllerTest {
.header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, AuthHelper.VALID_PASSWORD)) .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, AuthHelper.VALID_PASSWORD))
.put(Entity.json(new AccountAttributes("keykeykeykey", false, 2222, null, null, null, null, true, null))); .put(Entity.json(new AccountAttributes("keykeykeykey", false, 2222, null, null, null, null, true, null)));
assertThat(response.getStatus()).isEqualTo(204);
verify(directoryQueue, never()).refreshRegisteredUser(any());
}
@Test
public void testSetAccountAttributesEnableDiscovery() {
Response response =
resources.getJerseyTest()
.target("/v1/accounts/attributes/")
.request()
.header("Authorization", AuthHelper.getAuthHeader(AuthHelper.UNDISCOVERABLE_NUMBER, AuthHelper.UNDISCOVERABLE_PASSWORD))
.put(Entity.json(new AccountAttributes("keykeykeykey", false, 2222, null, null, null, null, true, null)));
assertThat(response.getStatus()).isEqualTo(204);
verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.UNDISCOVERABLE_ACCOUNT);
}
@Test
public void testSetAccountAttributesDisableDiscovery() {
Response response =
resources.getJerseyTest()
.target("/v1/accounts/attributes/")
.request()
.header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, AuthHelper.VALID_PASSWORD))
.put(Entity.json(new AccountAttributes("keykeykeykey", false, 2222, null, null, null, null, false, null)));
assertThat(response.getStatus()).isEqualTo(204); assertThat(response.getStatus()).isEqualTo(204);
verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.VALID_ACCOUNT); verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.VALID_ACCOUNT);
} }