Remove signaling key from Device and AccountAttributes
This commit is contained in:
		
							parent
							
								
									9936b2967e
								
							
						
					
					
						commit
						a5dd4f5fac
					
				| 
						 | 
					@ -442,9 +442,6 @@ public class AccountController {
 | 
				
			||||||
  @DELETE
 | 
					  @DELETE
 | 
				
			||||||
  @Path("/signaling_key")
 | 
					  @Path("/signaling_key")
 | 
				
			||||||
  public void removeSignalingKey(@Auth DisabledPermittedAccount disabledPermittedAccount) {
 | 
					  public void removeSignalingKey(@Auth DisabledPermittedAccount disabledPermittedAccount) {
 | 
				
			||||||
    Account account = disabledPermittedAccount.getAccount();
 | 
					 | 
				
			||||||
    account.getAuthenticatedDevice().get().setSignalingKey(null);
 | 
					 | 
				
			||||||
    accounts.update(account);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Timed
 | 
					  @Timed
 | 
				
			||||||
| 
						 | 
					@ -463,7 +460,6 @@ public class AccountController {
 | 
				
			||||||
    device.setLastSeen(Util.todayInMillis());
 | 
					    device.setLastSeen(Util.todayInMillis());
 | 
				
			||||||
    device.setCapabilities(attributes.getCapabilities());
 | 
					    device.setCapabilities(attributes.getCapabilities());
 | 
				
			||||||
    device.setRegistrationId(attributes.getRegistrationId());
 | 
					    device.setRegistrationId(attributes.getRegistrationId());
 | 
				
			||||||
    device.setSignalingKey(attributes.getSignalingKey());
 | 
					 | 
				
			||||||
    device.setUserAgent(userAgent);
 | 
					    device.setUserAgent(userAgent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    setAccountRegistrationLockFromAttributes(account, attributes);
 | 
					    setAccountRegistrationLockFromAttributes(account, attributes);
 | 
				
			||||||
| 
						 | 
					@ -625,7 +621,6 @@ public class AccountController {
 | 
				
			||||||
    Device device = new Device();
 | 
					    Device device = new Device();
 | 
				
			||||||
    device.setId(Device.MASTER_ID);
 | 
					    device.setId(Device.MASTER_ID);
 | 
				
			||||||
    device.setAuthenticationCredentials(new AuthenticationCredentials(password));
 | 
					    device.setAuthenticationCredentials(new AuthenticationCredentials(password));
 | 
				
			||||||
    device.setSignalingKey(accountAttributes.getSignalingKey());
 | 
					 | 
				
			||||||
    device.setFetchesMessages(accountAttributes.getFetchesMessages());
 | 
					    device.setFetchesMessages(accountAttributes.getFetchesMessages());
 | 
				
			||||||
    device.setRegistrationId(accountAttributes.getRegistrationId());
 | 
					    device.setRegistrationId(accountAttributes.getRegistrationId());
 | 
				
			||||||
    device.setName(accountAttributes.getName());
 | 
					    device.setName(accountAttributes.getName());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,7 +188,6 @@ public class DeviceController {
 | 
				
			||||||
      Device device = new Device();
 | 
					      Device device = new Device();
 | 
				
			||||||
      device.setName(accountAttributes.getName());
 | 
					      device.setName(accountAttributes.getName());
 | 
				
			||||||
      device.setAuthenticationCredentials(new AuthenticationCredentials(password));
 | 
					      device.setAuthenticationCredentials(new AuthenticationCredentials(password));
 | 
				
			||||||
      device.setSignalingKey(accountAttributes.getSignalingKey());
 | 
					 | 
				
			||||||
      device.setFetchesMessages(accountAttributes.getFetchesMessages());
 | 
					      device.setFetchesMessages(accountAttributes.getFetchesMessages());
 | 
				
			||||||
      device.setId(account.get().getNextDeviceId());
 | 
					      device.setId(account.get().getNextDeviceId());
 | 
				
			||||||
      device.setRegistrationId(accountAttributes.getRegistrationId());
 | 
					      device.setRegistrationId(accountAttributes.getRegistrationId());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,20 +6,13 @@ package org.whispersystems.textsecuregcm.entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonProperty;
 | 
					import com.fasterxml.jackson.annotation.JsonProperty;
 | 
				
			||||||
import com.google.common.annotations.VisibleForTesting;
 | 
					import com.google.common.annotations.VisibleForTesting;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
import org.hibernate.validator.constraints.Length;
 | 
					import org.hibernate.validator.constraints.Length;
 | 
				
			||||||
import org.whispersystems.textsecuregcm.storage.Device;
 | 
					 | 
				
			||||||
import org.whispersystems.textsecuregcm.storage.Device.DeviceCapabilities;
 | 
					import org.whispersystems.textsecuregcm.storage.Device.DeviceCapabilities;
 | 
				
			||||||
import org.whispersystems.textsecuregcm.storage.PaymentAddress;
 | 
					import org.whispersystems.textsecuregcm.storage.PaymentAddress;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import java.util.Optional;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class AccountAttributes {
 | 
					public class AccountAttributes {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @JsonProperty
 | 
					 | 
				
			||||||
  private String signalingKey;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @JsonProperty
 | 
					  @JsonProperty
 | 
				
			||||||
  private boolean fetchesMessages;
 | 
					  private boolean fetchesMessages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,13 +47,12 @@ public class AccountAttributes {
 | 
				
			||||||
  public AccountAttributes() {}
 | 
					  public AccountAttributes() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @VisibleForTesting
 | 
					  @VisibleForTesting
 | 
				
			||||||
  public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String pin) {
 | 
					  public AccountAttributes(boolean fetchesMessages, int registrationId, String pin) {
 | 
				
			||||||
    this(signalingKey, fetchesMessages, registrationId, null, pin, null, null, true, null);
 | 
					    this(fetchesMessages, registrationId, null, pin, null, null, true, null);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @VisibleForTesting
 | 
					  @VisibleForTesting
 | 
				
			||||||
  public AccountAttributes(String signalingKey, boolean fetchesMessages, int registrationId, String name, String pin, String registrationLock, List<PaymentAddress> payments, boolean discoverableByPhoneNumber, final DeviceCapabilities capabilities) {
 | 
					  public AccountAttributes(boolean fetchesMessages, int registrationId, String name, String pin, String registrationLock, List<PaymentAddress> payments, boolean discoverableByPhoneNumber, final DeviceCapabilities capabilities) {
 | 
				
			||||||
    this.signalingKey              = signalingKey;
 | 
					 | 
				
			||||||
    this.fetchesMessages           = fetchesMessages;
 | 
					    this.fetchesMessages           = fetchesMessages;
 | 
				
			||||||
    this.registrationId            = registrationId;
 | 
					    this.registrationId            = registrationId;
 | 
				
			||||||
    this.name                      = name;
 | 
					    this.name                      = name;
 | 
				
			||||||
| 
						 | 
					@ -71,10 +63,6 @@ public class AccountAttributes {
 | 
				
			||||||
    this.capabilities              = capabilities;
 | 
					    this.capabilities              = capabilities;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public String getSignalingKey() {
 | 
					 | 
				
			||||||
    return signalingKey;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public boolean getFetchesMessages() {
 | 
					  public boolean getFetchesMessages() {
 | 
				
			||||||
    return fetchesMessages;
 | 
					    return fetchesMessages;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,7 +103,7 @@ public class Account implements Principal  {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public void removeDevice(long deviceId) {
 | 
					  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<Device> getDevices() {
 | 
					  public Set<Device> getDevices() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,9 +29,6 @@ public class Device {
 | 
				
			||||||
  @JsonProperty
 | 
					  @JsonProperty
 | 
				
			||||||
  private String  salt;
 | 
					  private String  salt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @JsonProperty
 | 
					 | 
				
			||||||
  private String  signalingKey;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @JsonProperty
 | 
					  @JsonProperty
 | 
				
			||||||
  private String  gcmId;
 | 
					  private String  gcmId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,7 +68,7 @@ public class Device {
 | 
				
			||||||
  public Device() {}
 | 
					  public Device() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public Device(long id, String name, String authToken, String salt,
 | 
					  public Device(long id, String name, String authToken, String salt,
 | 
				
			||||||
                String signalingKey, String gcmId, String apnId,
 | 
					                String gcmId, String apnId,
 | 
				
			||||||
                String voipApnId, boolean fetchesMessages,
 | 
					                String voipApnId, boolean fetchesMessages,
 | 
				
			||||||
                int registrationId, SignedPreKey signedPreKey,
 | 
					                int registrationId, SignedPreKey signedPreKey,
 | 
				
			||||||
                long lastSeen, long created, String userAgent,
 | 
					                long lastSeen, long created, String userAgent,
 | 
				
			||||||
| 
						 | 
					@ -81,7 +78,6 @@ public class Device {
 | 
				
			||||||
    this.name                    = name;
 | 
					    this.name                    = name;
 | 
				
			||||||
    this.authToken               = authToken;
 | 
					    this.authToken               = authToken;
 | 
				
			||||||
    this.salt                    = salt;
 | 
					    this.salt                    = salt;
 | 
				
			||||||
    this.signalingKey            = signalingKey;
 | 
					 | 
				
			||||||
    this.gcmId                   = gcmId;
 | 
					    this.gcmId                   = gcmId;
 | 
				
			||||||
    this.apnId                   = apnId;
 | 
					    this.apnId                   = apnId;
 | 
				
			||||||
    this.voipApnId               = voipApnId;
 | 
					    this.voipApnId               = voipApnId;
 | 
				
			||||||
| 
						 | 
					@ -184,14 +180,6 @@ public class Device {
 | 
				
			||||||
    this.capabilities = capabilities;
 | 
					    this.capabilities = capabilities;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public String getSignalingKey() {
 | 
					 | 
				
			||||||
    return signalingKey;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public void setSignalingKey(String signalingKey) {
 | 
					 | 
				
			||||||
    this.signalingKey = signalingKey;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  public boolean isEnabled() {
 | 
					  public boolean isEnabled() {
 | 
				
			||||||
    boolean hasChannel = fetchesMessages || !Util.isEmpty(getApnId()) || !Util.isEmpty(getGcmId());
 | 
					    boolean hasChannel = fetchesMessages || !Util.isEmpty(getApnId()) || !Util.isEmpty(getGcmId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ public class DeviceTest {
 | 
				
			||||||
    @Parameters(method = "argumentsForTestIsEnabled")
 | 
					    @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) {
 | 
					    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 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());
 | 
					        assertEquals(expectEnabled, device.isEnabled());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,8 @@ public class DeviceTest {
 | 
				
			||||||
    @Parameters(method = "argumentsForTestIsGroupsV2Supported")
 | 
					    @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) {
 | 
					    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.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());
 | 
					        assertEquals(expectGv2Supported, device.isGroupsV2Supported());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,9 +45,12 @@ public class BaseAccountAuthenticatorTest {
 | 
				
			||||||
        clock                      = mock(Clock.class);
 | 
					        clock                      = mock(Clock.class);
 | 
				
			||||||
        baseAccountAuthenticator   = new BaseAccountAuthenticator(accountsManager, clock);
 | 
					        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);
 | 
					        acct1      = new Account("+14088675309", AuthHelper.getRandomUUID(random), Set.of(new Device(1, null, 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);
 | 
					            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);
 | 
					        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
 | 
					    @Test
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,7 +78,6 @@ import static org.mockito.Mockito.isA;
 | 
				
			||||||
import static org.mockito.Mockito.mock;
 | 
					import static org.mockito.Mockito.mock;
 | 
				
			||||||
import static org.mockito.Mockito.never;
 | 
					import static org.mockito.Mockito.never;
 | 
				
			||||||
import static org.mockito.Mockito.notNull;
 | 
					import static org.mockito.Mockito.notNull;
 | 
				
			||||||
import static org.mockito.Mockito.reset;
 | 
					 | 
				
			||||||
import static org.mockito.Mockito.times;
 | 
					import static org.mockito.Mockito.times;
 | 
				
			||||||
import static org.mockito.Mockito.verify;
 | 
					import static org.mockito.Mockito.verify;
 | 
				
			||||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
 | 
					import static org.mockito.Mockito.verifyNoMoreInteractions;
 | 
				
			||||||
| 
						 | 
					@ -550,7 +549,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER, "bar"))
 | 
					                 .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);
 | 
					                               MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(result.getUuid()).isNotNull();
 | 
					    assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -571,7 +570,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
					                    .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .header("Authorization", AuthHelper.getAuthHeader(SENDER, "bar"))
 | 
					                    .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);
 | 
					                            MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(result.getUuid()).isNotNull();
 | 
					    assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -592,7 +591,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_HAS_STORAGE, "bar"))
 | 
					                 .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);
 | 
					                                    MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(result.getUuid()).isNotNull();
 | 
					    assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -609,7 +608,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_OLD, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(403);
 | 
					    assertThat(response.getStatus()).isEqualTo(403);
 | 
				
			||||||
| 
						 | 
					@ -624,7 +623,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "1111"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "1111"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(403);
 | 
					    assertThat(response.getStatus()).isEqualTo(403);
 | 
				
			||||||
| 
						 | 
					@ -639,7 +638,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "333333"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "333333"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_PIN, "bar"))
 | 
					                 .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);
 | 
					                                    MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(result.getUuid()).isNotNull();
 | 
					    assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -654,7 +653,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar"))
 | 
					                 .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);
 | 
					                                    MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(result.getUuid()).isNotNull();
 | 
					    assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -670,7 +669,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar"))
 | 
					                 .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);
 | 
					                                    MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(result.getUuid()).isNotNull();
 | 
					    assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -704,7 +703,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                   .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
					                   .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
				
			||||||
                   .request()
 | 
					                   .request()
 | 
				
			||||||
                   .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar"))
 | 
					                   .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);
 | 
					                                      MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      assertThat(result.getUuid()).isNotNull();
 | 
					      assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -722,7 +721,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "333333"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "333333"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_PIN, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(423);
 | 
					    assertThat(response.getStatus()).isEqualTo(423);
 | 
				
			||||||
| 
						 | 
					@ -737,7 +736,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(423);
 | 
					    assertThat(response.getStatus()).isEqualTo(423);
 | 
				
			||||||
| 
						 | 
					@ -752,7 +751,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "333333"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "333333"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_PIN, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(423);
 | 
					    assertThat(response.getStatus()).isEqualTo(423);
 | 
				
			||||||
| 
						 | 
					@ -770,7 +769,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "666666"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_REG_LOCK, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(423);
 | 
					    assertThat(response.getStatus()).isEqualTo(423);
 | 
				
			||||||
| 
						 | 
					@ -793,7 +792,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                 .target(String.format("/v1/accounts/code/%s", "444444"))
 | 
					                 .target(String.format("/v1/accounts/code/%s", "444444"))
 | 
				
			||||||
                 .request()
 | 
					                 .request()
 | 
				
			||||||
                 .header("Authorization", AuthHelper.getAuthHeader(SENDER_OVER_PIN, "bar"))
 | 
					                 .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));
 | 
					                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(413);
 | 
					    assertThat(response.getStatus()).isEqualTo(413);
 | 
				
			||||||
| 
						 | 
					@ -811,7 +810,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                   .target(String.format("/v1/accounts/code/%s", "444444"))
 | 
					                   .target(String.format("/v1/accounts/code/%s", "444444"))
 | 
				
			||||||
                   .request()
 | 
					                   .request()
 | 
				
			||||||
                   .header("Authorization", AuthHelper.getAuthHeader(SENDER_OVER_PIN, "bar"))
 | 
					                   .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);
 | 
					                                      MediaType.APPLICATION_JSON_TYPE), AccountCreationResult.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      assertThat(result.getUuid()).isNotNull();
 | 
					      assertThat(result.getUuid()).isNotNull();
 | 
				
			||||||
| 
						 | 
					@ -831,7 +830,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .queryParam("transfer", true)
 | 
					                    .queryParam("transfer", true)
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .header("Authorization", AuthHelper.getAuthHeader(SENDER_TRANSFER, "bar"))
 | 
					                    .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));
 | 
					                            MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(409);
 | 
					    assertThat(response.getStatus()).isEqualTo(409);
 | 
				
			||||||
| 
						 | 
					@ -847,7 +846,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .queryParam("transfer", true)
 | 
					                    .queryParam("transfer", true)
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .header("Authorization", AuthHelper.getAuthHeader(SENDER_TRANSFER, "bar"))
 | 
					                    .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));
 | 
					                            MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(200);
 | 
					    assertThat(response.getStatus()).isEqualTo(200);
 | 
				
			||||||
| 
						 | 
					@ -862,7 +861,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
					                    .target(String.format("/v1/accounts/code/%s", "1234"))
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .header("Authorization", AuthHelper.getAuthHeader(SENDER_TRANSFER, "bar"))
 | 
					                    .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));
 | 
					                            MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(200);
 | 
					    assertThat(response.getStatus()).isEqualTo(200);
 | 
				
			||||||
| 
						 | 
					@ -1210,7 +1209,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .target("/v1/accounts/attributes/")
 | 
					                    .target("/v1/accounts/attributes/")
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .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(false, 2222, null, null, null, null, true, null)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(204);
 | 
					    assertThat(response.getStatus()).isEqualTo(204);
 | 
				
			||||||
    verify(directoryQueue, never()).refreshRegisteredUser(any());
 | 
					    verify(directoryQueue, never()).refreshRegisteredUser(any());
 | 
				
			||||||
| 
						 | 
					@ -1223,7 +1222,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .target("/v1/accounts/attributes/")
 | 
					                    .target("/v1/accounts/attributes/")
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.UNDISCOVERABLE_NUMBER, AuthHelper.UNDISCOVERABLE_PASSWORD))
 | 
					                    .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);
 | 
					    assertThat(response.getStatus()).isEqualTo(204);
 | 
				
			||||||
    verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.UNDISCOVERABLE_ACCOUNT);
 | 
					    verify(directoryQueue, times(1)).refreshRegisteredUser(AuthHelper.UNDISCOVERABLE_ACCOUNT);
 | 
				
			||||||
| 
						 | 
					@ -1236,7 +1235,7 @@ public class AccountControllerTest {
 | 
				
			||||||
                    .target("/v1/accounts/attributes/")
 | 
					                    .target("/v1/accounts/attributes/")
 | 
				
			||||||
                    .request()
 | 
					                    .request()
 | 
				
			||||||
                    .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, false, null)));
 | 
					                    .put(Entity.json(new AccountAttributes(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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
                                       .target("/v1/devices/5678901")
 | 
					                                       .target("/v1/devices/5678901")
 | 
				
			||||||
                                       .request()
 | 
					                                       .request()
 | 
				
			||||||
                                       .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, "password1"))
 | 
					                                       .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),
 | 
					                                                          MediaType.APPLICATION_JSON_TYPE),
 | 
				
			||||||
                                            DeviceResponse.class);
 | 
					                                            DeviceResponse.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -171,7 +171,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
                                 .target("/v1/devices/5678902")
 | 
					                                 .target("/v1/devices/5678902")
 | 
				
			||||||
                                 .request()
 | 
					                                 .request()
 | 
				
			||||||
                                 .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, "password1"))
 | 
					                                 .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));
 | 
					                                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(403);
 | 
					    assertThat(response.getStatus()).isEqualTo(403);
 | 
				
			||||||
| 
						 | 
					@ -185,7 +185,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
                                 .target("/v1/devices/1112223")
 | 
					                                 .target("/v1/devices/1112223")
 | 
				
			||||||
                                 .request()
 | 
					                                 .request()
 | 
				
			||||||
                                 .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER_TWO, AuthHelper.VALID_PASSWORD_TWO))
 | 
					                                 .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));
 | 
					                                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(403);
 | 
					    assertThat(response.getStatus()).isEqualTo(403);
 | 
				
			||||||
| 
						 | 
					@ -211,7 +211,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
                                 .target("/v1/devices/5678901")
 | 
					                                 .target("/v1/devices/5678901")
 | 
				
			||||||
                                 .request()
 | 
					                                 .request()
 | 
				
			||||||
                                 .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, "password1"))
 | 
					                                 .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));
 | 
					                                                    MediaType.APPLICATION_JSON_TYPE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertEquals(response.getStatus(), 422);
 | 
					    assertEquals(response.getStatus(), 422);
 | 
				
			||||||
| 
						 | 
					@ -222,7 +222,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
  @Parameters(method = "argumentsForDeviceDowngradeCapabilitiesTest")
 | 
					  @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 {
 | 
					  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);
 | 
					    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()
 | 
					    Response response = resources.getJerseyTest()
 | 
				
			||||||
            .target("/v1/devices/5678901")
 | 
					            .target("/v1/devices/5678901")
 | 
				
			||||||
            .request()
 | 
					            .request()
 | 
				
			||||||
| 
						 | 
					@ -262,7 +262,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
  @Test
 | 
					  @Test
 | 
				
			||||||
  public void deviceDowngradeGv1MigrationTest() {
 | 
					  public void deviceDowngradeGv1MigrationTest() {
 | 
				
			||||||
    Device.DeviceCapabilities deviceCapabilities = new Device.DeviceCapabilities(true, true, true, true, false, false);
 | 
					    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()
 | 
					    Response response = resources.getJerseyTest()
 | 
				
			||||||
                                 .target("/v1/devices/5678901")
 | 
					                                 .target("/v1/devices/5678901")
 | 
				
			||||||
                                 .request()
 | 
					                                 .request()
 | 
				
			||||||
| 
						 | 
					@ -273,7 +273,7 @@ public class DeviceControllerTest {
 | 
				
			||||||
    assertThat(response.getStatus()).isEqualTo(409);
 | 
					    assertThat(response.getStatus()).isEqualTo(409);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    deviceCapabilities = new Device.DeviceCapabilities(true, true, true, true, false, true);
 | 
					    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()
 | 
					    response = resources.getJerseyTest()
 | 
				
			||||||
                        .target("/v1/devices/5678901")
 | 
					                        .target("/v1/devices/5678901")
 | 
				
			||||||
                        .request()
 | 
					                        .request()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,10 +5,40 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.whispersystems.textsecuregcm.tests.controllers;
 | 
					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.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
import com.google.common.collect.ImmutableSet;
 | 
					import com.google.common.collect.ImmutableSet;
 | 
				
			||||||
import io.dropwizard.auth.PolymorphicAuthValueFactoryProvider;
 | 
					import io.dropwizard.auth.PolymorphicAuthValueFactoryProvider;
 | 
				
			||||||
import io.dropwizard.testing.junit.ResourceTestRule;
 | 
					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.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
 | 
				
			||||||
import org.junit.Before;
 | 
					import org.junit.Before;
 | 
				
			||||||
import org.junit.Ignore;
 | 
					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.tests.util.AuthHelper;
 | 
				
			||||||
import org.whispersystems.textsecuregcm.util.Base64;
 | 
					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
 | 
					@Ignore
 | 
				
			||||||
public class MessageControllerTest {
 | 
					public class MessageControllerTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,13 +103,17 @@ public class MessageControllerTest {
 | 
				
			||||||
  @Before
 | 
					  @Before
 | 
				
			||||||
  public void setup() throws Exception {
 | 
					  public void setup() throws Exception {
 | 
				
			||||||
    Set<Device> singleDeviceList = new HashSet<Device>() {{
 | 
					    Set<Device> singleDeviceList = new HashSet<Device>() {{
 | 
				
			||||||
      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<Device> multiDeviceList = new HashSet<Device>() {{
 | 
					    Set<Device> multiDeviceList = new HashSet<Device>() {{
 | 
				
			||||||
      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(1, null, "foo", "bar",
 | 
				
			||||||
      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)));
 | 
					          "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(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(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());
 | 
					    Account singleDeviceAccount = new Account(SINGLE_DEVICE_RECIPIENT, SINGLE_DEVICE_UUID, singleDeviceList, "1234".getBytes());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -291,7 +291,8 @@ public class AccountsTest {
 | 
				
			||||||
  private Device generateDevice(long id) {
 | 
					  private Device generateDevice(long id) {
 | 
				
			||||||
    Random       random       = new Random(System.currentTimeMillis());
 | 
					    Random       random       = new Random(System.currentTimeMillis());
 | 
				
			||||||
    SignedPreKey signedPreKey = new SignedPreKey(random.nextInt(), "testPublicKey-" + random.nextInt(), "testSignature-" + random.nextInt());
 | 
					    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) {
 | 
					  private Account generateAccount(String number, UUID uuid) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -143,7 +143,6 @@ public class WebSocketConnectionTest {
 | 
				
			||||||
    OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false);
 | 
					    OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(device.getId()).thenReturn(2L);
 | 
					    when(device.getId()).thenReturn(2L);
 | 
				
			||||||
    when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52]));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
					    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
				
			||||||
    when(account.getNumber()).thenReturn("+14152222222");
 | 
					    when(account.getNumber()).thenReturn("+14152222222");
 | 
				
			||||||
| 
						 | 
					@ -296,7 +295,6 @@ public class WebSocketConnectionTest {
 | 
				
			||||||
    OutgoingMessageEntityList   pendingMessagesList = new OutgoingMessageEntityList(pendingMessages, false);
 | 
					    OutgoingMessageEntityList   pendingMessagesList = new OutgoingMessageEntityList(pendingMessages, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(device.getId()).thenReturn(2L);
 | 
					    when(device.getId()).thenReturn(2L);
 | 
				
			||||||
    when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52]));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
					    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
				
			||||||
    when(account.getNumber()).thenReturn("+14152222222");
 | 
					    when(account.getNumber()).thenReturn("+14152222222");
 | 
				
			||||||
| 
						 | 
					@ -661,7 +659,6 @@ public class WebSocketConnectionTest {
 | 
				
			||||||
    OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false);
 | 
					    OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(device.getId()).thenReturn(2L);
 | 
					    when(device.getId()).thenReturn(2L);
 | 
				
			||||||
    when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52]));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
					    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
				
			||||||
    when(account.getNumber()).thenReturn("+14152222222");
 | 
					    when(account.getNumber()).thenReturn("+14152222222");
 | 
				
			||||||
| 
						 | 
					@ -735,7 +732,6 @@ public class WebSocketConnectionTest {
 | 
				
			||||||
    OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false);
 | 
					    OutgoingMessageEntityList outgoingMessagesList = new OutgoingMessageEntityList(outgoingMessages, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(device.getId()).thenReturn(2L);
 | 
					    when(device.getId()).thenReturn(2L);
 | 
				
			||||||
    when(device.getSignalingKey()).thenReturn(Base64.encodeBytes(new byte[52]));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
					    when(account.getAuthenticatedDevice()).thenReturn(Optional.of(device));
 | 
				
			||||||
    when(account.getNumber()).thenReturn("+14152222222");
 | 
					    when(account.getNumber()).thenReturn("+14152222222");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue