From a5dd4f5facb28523699f412c301e6bfb4f27c874 Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Sat, 6 Feb 2021 20:41:01 -0600 Subject: [PATCH] Remove signaling key from Device and AccountAttributes --- .../controllers/AccountController.java | 5 -- .../controllers/DeviceController.java | 1 - .../entities/AccountAttributes.java | 20 +---- .../textsecuregcm/storage/Account.java | 2 +- .../textsecuregcm/storage/Device.java | 14 +--- .../textsecuregcm/storage/DeviceTest.java | 5 +- .../auth/BaseAccountAuthenticatorTest.java | 9 ++- .../controllers/AccountControllerTest.java | 43 ++++++----- .../controllers/DeviceControllerTest.java | 14 ++-- .../controllers/MessageControllerTest.java | 73 ++++++++++--------- .../tests/storage/AccountsTest.java | 3 +- .../websocket/WebSocketConnectionTest.java | 4 - 12 files changed, 83 insertions(+), 110 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java index b322d1d04..10e30bb0e 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/AccountController.java @@ -442,9 +442,6 @@ public class AccountController { @DELETE @Path("/signaling_key") public void removeSignalingKey(@Auth DisabledPermittedAccount disabledPermittedAccount) { - Account account = disabledPermittedAccount.getAccount(); - account.getAuthenticatedDevice().get().setSignalingKey(null); - accounts.update(account); } @Timed @@ -463,7 +460,6 @@ public class AccountController { device.setLastSeen(Util.todayInMillis()); device.setCapabilities(attributes.getCapabilities()); device.setRegistrationId(attributes.getRegistrationId()); - device.setSignalingKey(attributes.getSignalingKey()); device.setUserAgent(userAgent); setAccountRegistrationLockFromAttributes(account, attributes); @@ -625,7 +621,6 @@ public class AccountController { Device device = new Device(); device.setId(Device.MASTER_ID); device.setAuthenticationCredentials(new AuthenticationCredentials(password)); - device.setSignalingKey(accountAttributes.getSignalingKey()); device.setFetchesMessages(accountAttributes.getFetchesMessages()); device.setRegistrationId(accountAttributes.getRegistrationId()); device.setName(accountAttributes.getName()); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java index 6864d1fc0..8e7cf4d4d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java @@ -188,7 +188,6 @@ public class DeviceController { Device device = new Device(); device.setName(accountAttributes.getName()); device.setAuthenticationCredentials(new AuthenticationCredentials(password)); - device.setSignalingKey(accountAttributes.getSignalingKey()); device.setFetchesMessages(accountAttributes.getFetchesMessages()); device.setId(account.get().getNextDeviceId()); device.setRegistrationId(accountAttributes.getRegistrationId()); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java index 99f91696b..b9c8185d9 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/entities/AccountAttributes.java @@ -6,20 +6,13 @@ package org.whispersystems.textsecuregcm.entities; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.annotations.VisibleForTesting; +import java.util.List; import org.hibernate.validator.constraints.Length; -import org.whispersystems.textsecuregcm.storage.Device; import org.whispersystems.textsecuregcm.storage.Device.DeviceCapabilities; import org.whispersystems.textsecuregcm.storage.PaymentAddress; -import javax.annotation.Nullable; -import java.util.List; -import java.util.Optional; - public class AccountAttributes { - @JsonProperty - private String signalingKey; - @JsonProperty private boolean fetchesMessages; @@ -54,13 +47,12 @@ public class AccountAttributes { public AccountAttributes() {} @VisibleForTesting - public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String pin) { - this(signalingKey, fetchesMessages, registrationId, null, pin, null, null, true, null); + public AccountAttributes(boolean fetchesMessages, int registrationId, String pin) { + this(fetchesMessages, registrationId, null, pin, null, null, true, null); } @VisibleForTesting - public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String name, String pin, String registrationLock, List payments, boolean discoverableByPhoneNumber, final DeviceCapabilities capabilities) { - this.signalingKey = signalingKey; + public AccountAttributes(boolean fetchesMessages, int registrationId, String name, String pin, String registrationLock, List payments, boolean discoverableByPhoneNumber, final DeviceCapabilities capabilities) { this.fetchesMessages = fetchesMessages; this.registrationId = registrationId; this.name = name; @@ -71,10 +63,6 @@ public class AccountAttributes { this.capabilities = capabilities; } - public String getSignalingKey() { - return signalingKey; - } - public boolean getFetchesMessages() { return fetchesMessages; } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java index 7692afdb0..eb65431e9 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java @@ -103,7 +103,7 @@ public class Account implements Principal { } public void removeDevice(long deviceId) { - this.devices.remove(new Device(deviceId, null, null, null, null, null, null, null, false, 0, null, 0, 0, "NA", 0, null)); + this.devices.remove(new Device(deviceId, null, null, null, null, null, null, false, 0, null, 0, 0, "NA", 0, null)); } public Set getDevices() { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java index f6160693c..e7e65e9da 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Device.java @@ -29,9 +29,6 @@ public class Device { @JsonProperty private String salt; - @JsonProperty - private String signalingKey; - @JsonProperty private String gcmId; @@ -71,7 +68,7 @@ public class Device { public Device() {} public Device(long id, String name, String authToken, String salt, - String signalingKey, String gcmId, String apnId, + String gcmId, String apnId, String voipApnId, boolean fetchesMessages, int registrationId, SignedPreKey signedPreKey, long lastSeen, long created, String userAgent, @@ -81,7 +78,6 @@ public class Device { this.name = name; this.authToken = authToken; this.salt = salt; - this.signalingKey = signalingKey; this.gcmId = gcmId; this.apnId = apnId; this.voipApnId = voipApnId; @@ -184,14 +180,6 @@ public class Device { this.capabilities = capabilities; } - public String getSignalingKey() { - return signalingKey; - } - - public void setSignalingKey(String signalingKey) { - this.signalingKey = signalingKey; - } - public boolean isEnabled() { boolean hasChannel = fetchesMessages || !Util.isEmpty(getApnId()) || !Util.isEmpty(getGcmId()); diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/DeviceTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/DeviceTest.java index bf0321ecc..dde3c513f 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/DeviceTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/DeviceTest.java @@ -23,7 +23,7 @@ public class DeviceTest { @Parameters(method = "argumentsForTestIsEnabled") public void testIsEnabled(final boolean master, final boolean fetchesMessages, final String apnId, final String gcmId, final SignedPreKey signedPreKey, final Duration timeSinceLastSeen, final boolean expectEnabled) { final long lastSeen = System.currentTimeMillis() - timeSinceLastSeen.toMillis(); - final Device device = new Device(master ? 1 : 2, "test", "auth-token", "salt", "signaling-key", gcmId, apnId, null, fetchesMessages, 1, signedPreKey, lastSeen, lastSeen, "user-agent", 0, null); + final Device device = new Device(master ? 1 : 2, "test", "auth-token", "salt", gcmId, apnId, null, fetchesMessages, 1, signedPreKey, lastSeen, lastSeen, "user-agent", 0, null); assertEquals(expectEnabled, device.isEnabled()); } @@ -70,7 +70,8 @@ public class DeviceTest { @Parameters(method = "argumentsForTestIsGroupsV2Supported") public void testIsGroupsV2Supported(final boolean master, final String apnId, final boolean gv2Capability, final boolean gv2_2Capability, final boolean gv2_3Capability, final boolean expectGv2Supported) { final Device.DeviceCapabilities capabilities = new Device.DeviceCapabilities(gv2Capability, gv2_2Capability, gv2_3Capability, false, false, false); - final Device device = new Device(master ? 1 : 2, "test", "auth-token", "salt", "signaling-key", null, apnId, null, false, 1, null, 0, 0, "user-agent", 0, capabilities); + final Device device = new Device(master ? 1 : 2, "test", "auth-token", "salt", + null, apnId, null, false, 1, null, 0, 0, "user-agent", 0, capabilities); assertEquals(expectGv2Supported, device.isGroupsV2Supported()); } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/auth/BaseAccountAuthenticatorTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/auth/BaseAccountAuthenticatorTest.java index 2199189db..b5ffd4009 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/auth/BaseAccountAuthenticatorTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/auth/BaseAccountAuthenticatorTest.java @@ -45,9 +45,12 @@ public class BaseAccountAuthenticatorTest { clock = mock(Clock.class); baseAccountAuthenticator = new BaseAccountAuthenticator(accountsManager, clock); - acct1 = new Account("+14088675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, null, null, null, null, null, null, false, 0, null, yesterday, 0, null, 0, null)), null); - acct2 = new Account("+14098675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, null, null, null, null, null, null, false, 0, null, yesterday, 0, null, 0, null)), null); - oldAccount = new Account("+14108675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, null, null, null, null, null, null, false, 0, null, oldTime, 0, null, 0, null)), null); + acct1 = new Account("+14088675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, null, null, + null, null, null, false, 0, null, yesterday, 0, null, 0, null)), null); + acct2 = new Account("+14098675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, null, null, + null, null, null, false, 0, null, yesterday, 0, null, 0, null)), null); + oldAccount = new Account("+14108675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, null, null, + null, null, null, false, 0, null, oldTime, 0, null, 0, null)), null); } @Test diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java index 432c2c6a7..254b9e997 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/AccountControllerTest.java @@ -78,7 +78,6 @@ import static org.mockito.Mockito.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.notNull; -import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -550,7 +549,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "1234")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -571,7 +570,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "1234")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null, null, null, null, false, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null, null, null, null, false, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -592,7 +591,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "666666")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_HAS_STORAGE, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -609,7 +608,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "1234")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_OLD, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(403); @@ -624,7 +623,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "1111")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(403); @@ -639,7 +638,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "333333")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_PIN, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, "31337"), + .put(Entity.entity(new AccountAttributes(false, 3333, "31337"), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -654,7 +653,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "666666")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null, null, Hex.toStringCondensed(registration_lock_key), null, true, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null, null, Hex.toStringCondensed(registration_lock_key), null, true, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -670,7 +669,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "666666")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null, null, Hex.toStringCondensed(registration_lock_key), null, true, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null, null, Hex.toStringCondensed(registration_lock_key), null, true, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -704,7 +703,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "666666")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null, null, null, null, true, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null, null, null, null, true, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -722,7 +721,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "333333")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_PIN, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, "31338"), + .put(Entity.entity(new AccountAttributes(false, 3333, "31338"), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(423); @@ -737,7 +736,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "666666")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, Hex.toStringCondensed(new byte[32])), + .put(Entity.entity(new AccountAttributes(false, 3333, Hex.toStringCondensed(new byte[32])), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(423); @@ -752,7 +751,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "333333")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_PIN, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(423); @@ -770,7 +769,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "666666")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(423); @@ -793,7 +792,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "444444")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_OVER_PIN, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, "31337"), + .put(Entity.entity(new AccountAttributes(false, 3333, "31337"), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(413); @@ -811,7 +810,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "444444")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_OVER_PIN, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 3333, null), + .put(Entity.entity(new AccountAttributes(false, 3333, null), MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class); assertThat(result.getUuid()).isNotNull(); @@ -831,7 +830,7 @@ public class AccountControllerTest { .queryParam("transfer", true) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_TRANSFER, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(409); @@ -847,7 +846,7 @@ public class AccountControllerTest { .queryParam("transfer", true) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_TRANSFER, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(200); @@ -862,7 +861,7 @@ public class AccountControllerTest { .target(String.format("/v1/accounts/code/%s", "1234")) .request() .header("Authorization", AuthHelper.getAuthHeader(SENDER_TRANSFER, "bar")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 2222, null), + .put(Entity.entity(new AccountAttributes(false, 2222, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(200); @@ -1210,7 +1209,7 @@ public class AccountControllerTest { .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, true, null))); + .put(Entity.json(new AccountAttributes(false, 2222, null, null, null, null, true, null))); assertThat(response.getStatus()).isEqualTo(204); verify(directoryQueue, never()).refreshRegisteredUser(any()); @@ -1223,7 +1222,7 @@ public class AccountControllerTest { .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))); + .put(Entity.json(new AccountAttributes(false, 2222, null, null, null, null, true, null))); assertThat(response.getStatus()).isEqualTo(204); verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.UNDISCOVERABLE_ACCOUNT); @@ -1236,7 +1235,7 @@ public class AccountControllerTest { .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))); + .put(Entity.json(new AccountAttributes(false, 2222, null, null, null, null, false, null))); assertThat(response.getStatus()).isEqualTo(204); verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.VALID_ACCOUNT); diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java index 5715dec84..83fa3df47 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DeviceControllerTest.java @@ -136,7 +136,7 @@ public class DeviceControllerTest { .target("/v1/devices/5678901") .request() .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, "password1")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 1234, null), + .put(Entity.entity(new AccountAttributes(false, 1234, null), MediaType.APPLICATION_JSON_TYPE), DeviceResponse.class); @@ -171,7 +171,7 @@ public class DeviceControllerTest { .target("/v1/devices/5678902") .request() .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, "password1")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 1234, null), + .put(Entity.entity(new AccountAttributes(false, 1234, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(403); @@ -185,7 +185,7 @@ public class DeviceControllerTest { .target("/v1/devices/1112223") .request() .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER_TWO, AuthHelper.VALID_PASSWORD_TWO)) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 1234, null), + .put(Entity.entity(new AccountAttributes(false, 1234, null), MediaType.APPLICATION_JSON_TYPE)); assertThat(response.getStatus()).isEqualTo(403); @@ -211,7 +211,7 @@ public class DeviceControllerTest { .target("/v1/devices/5678901") .request() .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, "password1")) - .put(Entity.entity(new AccountAttributes("keykeykeykey", false, 1234, "this is a really long name that is longer than 80 characters it's so long that it's even longer than 204 characters. that's a lot of characters. we're talking lots and lots and lots of characters. 12345678", null, null, null, true, null), + .put(Entity.entity(new AccountAttributes(false, 1234, "this is a really long name that is longer than 80 characters it's so long that it's even longer than 204 characters. that's a lot of characters. we're talking lots and lots and lots of characters. 12345678", null, null, null, true, null), MediaType.APPLICATION_JSON_TYPE)); assertEquals(response.getStatus(), 422); @@ -222,7 +222,7 @@ public class DeviceControllerTest { @Parameters(method = "argumentsForDeviceDowngradeCapabilitiesTest") public void deviceDowngradeCapabilitiesTest(final String userAgent, final boolean gv2, final boolean gv2_2, final boolean gv2_3, final int expectedStatus) throws Exception { Device.DeviceCapabilities deviceCapabilities = new Device.DeviceCapabilities(gv2, gv2_2, gv2_3, true, false, true); - AccountAttributes accountAttributes = new AccountAttributes("keykeykeykey", false, 1234, null, null, null, null, true, deviceCapabilities); + AccountAttributes accountAttributes = new AccountAttributes(false, 1234, null, null, null, null, true, deviceCapabilities); Response response = resources.getJerseyTest() .target("/v1/devices/5678901") .request() @@ -262,7 +262,7 @@ public class DeviceControllerTest { @Test public void deviceDowngradeGv1MigrationTest() { Device.DeviceCapabilities deviceCapabilities = new Device.DeviceCapabilities(true, true, true, true, false, false); - AccountAttributes accountAttributes = new AccountAttributes("keykeykeykey", false, 1234, null, null, null, null, true, deviceCapabilities); + AccountAttributes accountAttributes = new AccountAttributes(false, 1234, null, null, null, null, true, deviceCapabilities); Response response = resources.getJerseyTest() .target("/v1/devices/5678901") .request() @@ -273,7 +273,7 @@ public class DeviceControllerTest { assertThat(response.getStatus()).isEqualTo(409); deviceCapabilities = new Device.DeviceCapabilities(true, true, true, true, false, true); - accountAttributes = new AccountAttributes("keykeykeykey", false, 1234, null, null, null, null, true, deviceCapabilities); + accountAttributes = new AccountAttributes(false, 1234, null, null, null, null, true, deviceCapabilities); response = resources.getJerseyTest() .target("/v1/devices/5678901") .request() diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java index 310469bc7..965f7345d 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java @@ -5,10 +5,40 @@ package org.whispersystems.textsecuregcm.tests.controllers; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.anyBoolean; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.argThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; +import static org.whispersystems.textsecuregcm.tests.util.JsonHelpers.asJson; +import static org.whispersystems.textsecuregcm.tests.util.JsonHelpers.jsonFixture; + import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableSet; import io.dropwizard.auth.PolymorphicAuthValueFactoryProvider; import io.dropwizard.testing.junit.ResourceTestRule; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.TimeUnit; +import javax.ws.rs.client.Entity; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory; import org.junit.Before; import org.junit.Ignore; @@ -40,37 +70,6 @@ import org.whispersystems.textsecuregcm.storage.MessagesManager; import org.whispersystems.textsecuregcm.tests.util.AuthHelper; import org.whispersystems.textsecuregcm.util.Base64; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.anyBoolean; -import static org.mockito.Mockito.anyString; -import static org.mockito.Mockito.argThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; -import static org.whispersystems.textsecuregcm.tests.util.JsonHelpers.asJson; -import static org.whispersystems.textsecuregcm.tests.util.JsonHelpers.jsonFixture; - @Ignore public class MessageControllerTest { @@ -104,13 +103,17 @@ public class MessageControllerTest { @Before public void setup() throws Exception { Set singleDeviceList = new HashSet() {{ - add(new Device(1, null, "foo", "bar", "baz", "isgcm", null, null, false, 111, new SignedPreKey(333, "baz", "boop"), System.currentTimeMillis(), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(true, false, false, true, true, false))); + add(new Device(1, null, "foo", "bar", + "isgcm", null, null, false, 111, new SignedPreKey(333, "baz", "boop"), System.currentTimeMillis(), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(true, false, false, true, true, false))); }}; Set multiDeviceList = new HashSet() {{ - add(new Device(1, null, "foo", "bar", "baz", "isgcm", null, null, false, 222, new SignedPreKey(111, "foo", "bar"), System.currentTimeMillis(), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(true, false, false, true, false, false))); - add(new Device(2, null, "foo", "bar", "baz", "isgcm", null, null, false, 333, new SignedPreKey(222, "oof", "rab"), System.currentTimeMillis(), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(true, false, false, true, false, false))); - add(new Device(3, null, "foo", "bar", "baz", "isgcm", null, null, false, 444, null, System.currentTimeMillis() - TimeUnit.DAYS.toMillis(31), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(false, false, false, false, false, false))); + add(new Device(1, null, "foo", "bar", + "isgcm", null, null, false, 222, new SignedPreKey(111, "foo", "bar"), System.currentTimeMillis(), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(true, false, false, true, false, false))); + add(new Device(2, null, "foo", "bar", + "isgcm", null, null, false, 333, new SignedPreKey(222, "oof", "rab"), System.currentTimeMillis(), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(true, false, false, true, false, false))); + add(new Device(3, null, "foo", "bar", + "isgcm", null, null, false, 444, null, System.currentTimeMillis() - TimeUnit.DAYS.toMillis(31), System.currentTimeMillis(), "Test", 0, new Device.DeviceCapabilities(false, false, false, false, false, false))); }}; Account singleDeviceAccount = new Account(SINGLE_DEVICE_RECIPIENT, SINGLE_DEVICE_UUID, singleDeviceList, "1234".getBytes()); diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java index c96e15142..0a6924a52 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/storage/AccountsTest.java @@ -291,7 +291,8 @@ public class AccountsTest { private Device generateDevice(long id) { Random random = new Random(System.currentTimeMillis()); SignedPreKey signedPreKey = new SignedPreKey(random.nextInt(), "testPublicKey-" + random.nextInt(), "testSignature-" + random.nextInt()); - return new Device(id, "testName-" + random.nextInt(), "testAuthToken-" + random.nextInt(), "testSalt-" + random.nextInt(), null, "testGcmId-" + random.nextInt(), "testApnId-" + random.nextInt(), "testVoipApnId-" + random.nextInt(), random.nextBoolean(), random.nextInt(), signedPreKey, random.nextInt(), random.nextInt(), "testUserAgent-" + random.nextInt() , 0, new Device.DeviceCapabilities(random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean())); + return new Device(id, "testName-" + random.nextInt(), "testAuthToken-" + random.nextInt(), "testSalt-" + random.nextInt(), + "testGcmId-" + random.nextInt(), "testApnId-" + random.nextInt(), "testVoipApnId-" + random.nextInt(), random.nextBoolean(), random.nextInt(), signedPreKey, random.nextInt(), random.nextInt(), "testUserAgent-" + random.nextInt() , 0, new Device.DeviceCapabilities(random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean(), random.nextBoolean())); } private Account generateAccount(String number, UUID uuid) { diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnectionTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnectionTest.java index 42d85e643..4bb4b71bb 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnectionTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnectionTest.java @@ -143,7 +143,6 @@ public class WebSocketConnectionTest { OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false); when(device.getId()).thenReturn(2L); - when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52])); when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device)); when(account.getNumber()).thenReturn("+14152222222"); @@ -296,7 +295,6 @@ public class WebSocketConnectionTest { OutgoingMessageEntityList pendingMessagesList = new OutgoingMessageEntityList(pendingMessages, false); when(device.getId()).thenReturn(2L); - when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52])); when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device)); when(account.getNumber()).thenReturn("+14152222222"); @@ -661,7 +659,6 @@ public class WebSocketConnectionTest { OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false); when(device.getId()).thenReturn(2L); - when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52])); when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device)); when(account.getNumber()).thenReturn("+14152222222"); @@ -735,7 +732,6 @@ public class WebSocketConnectionTest { OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false); when(device.getId()).thenReturn(2L); - when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52])); when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device)); when(account.getNumber()).thenReturn("+14152222222");