Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ public class LabConstants {
public static final String DEFAULT_LAB_SCOPE = "https://request.msidlab.com/.default";
public static final String KEYVAULT_SCOPE = "https://vault.azure.net/.default";
public static final String DEFAULT_LAB_CERT_ALIAS = "LabAuth.MSIDLab.com";
public static final String MSID_LAB3 = "https://login.microsoftonline.com/msidlab3.com";
public static final String MSID_LAB4 = "https://login.microsoftonline.com/msidlab4.com";

static final class UserType {
public static final String CLOUD = "cloud";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@
import com.microsoft.identity.labapi.utilities.exception.LabApiException;
import com.microsoft.identity.labapi.utilities.rules.RetryTestRule;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

Expand All @@ -43,24 +45,33 @@ public class LabClientTest {

// Give some time for basic user to finish creation to enable rest of test.
private final long POST_TEMP_USER_CREATION_WAIT = 15000;
private LabClient mLabClient;

@Rule
public RetryTestRule retryRule = new RetryTestRule(3);

@Test
public void canFetchCloudAccount() {
@Before
public void setup() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);
mLabClient = new LabClient(authenticationClient);
}

@After
public void cleanup() {
mLabClient = null;
}

@Test
public void canFetchCloudAccount() {
final LabQuery query = LabQuery.builder()
.userType(UserType.CLOUD)
.build();

try {
final ILabAccount labAccount = labClient.getLabAccount(query);
final ILabAccount labAccount = mLabClient.getLabAccount(query);
Assert.assertNotNull(labAccount);
Assert.assertNotNull(labAccount.getUsername());
Assert.assertNotNull(labAccount.getPassword());
Expand All @@ -74,18 +85,12 @@ public void canFetchCloudAccount() {

@Test
public void canFetchMSAAccount() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

final LabQuery query = LabQuery.builder()
.userType(UserType.MSA)
.build();

try {
final ILabAccount labAccount = labClient.getLabAccount(query);
final ILabAccount labAccount = mLabClient.getLabAccount(query);
Assert.assertNotNull(labAccount);
Assert.assertNotNull(labAccount.getUsername());
Assert.assertNotNull(labAccount.getPassword());
Expand All @@ -99,18 +104,12 @@ public void canFetchMSAAccount() {

@Test
public void canFetchGuestAccount() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

final LabQuery query = LabQuery.builder()
.userType(UserType.GUEST)
.build();

try {
final ILabAccount labAccount = labClient.getLabAccount(query);
final ILabAccount labAccount = mLabClient.getLabAccount(query);
Assert.assertNotNull(labAccount);
Assert.assertNotNull(labAccount.getUsername());
Assert.assertNotNull(labAccount.getPassword());
Expand All @@ -124,18 +123,12 @@ public void canFetchGuestAccount() {

@Test
public void canFetchFederatedAccount() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

final LabQuery query = LabQuery.builder()
.userType(UserType.FEDERATED)
.build();

try {
final ILabAccount labAccount = labClient.getLabAccount(query);
final ILabAccount labAccount = mLabClient.getLabAccount(query);
Assert.assertNotNull(labAccount);
Assert.assertNotNull(labAccount.getUsername());
Assert.assertNotNull(labAccount.getPassword());
Expand All @@ -149,14 +142,8 @@ public void canFetchFederatedAccount() {

@Test
public void canCreateBasicTempUser() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

try {
final ILabAccount labAccount = labClient.createTempAccount(TempUserType.BASIC);
final ILabAccount labAccount = mLabClient.createTempAccount(TempUserType.BASIC);
Assert.assertNotNull(labAccount);
Assert.assertNotNull(labAccount.getUsername());
Assert.assertNotNull(labAccount.getPassword());
Expand All @@ -170,14 +157,8 @@ public void canCreateBasicTempUser() {

@Test
public void canCreateMAMCATempUser() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

try {
final ILabAccount labAccount = labClient.createTempAccount(TempUserType.MAM_CA);
final ILabAccount labAccount = mLabClient.createTempAccount(TempUserType.MAM_CA);
Assert.assertNotNull(labAccount);
Assert.assertNotNull(labAccount.getUsername());
Assert.assertNotNull(labAccount.getPassword());
Expand All @@ -190,50 +171,32 @@ public void canCreateMAMCATempUser() {

@Test
public void canResetPassword() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

try {
final ILabAccount labAccount = labClient.createTempAccount(TempUserType.BASIC);
final ILabAccount labAccount = mLabClient.createTempAccount(TempUserType.BASIC);
Thread.sleep(POST_TEMP_USER_CREATION_WAIT);
Assert.assertTrue(labClient.resetPassword(labAccount.getUsername(), 2));
Assert.assertTrue(mLabClient.resetPassword(labAccount.getUsername(), 2));
} catch (final LabApiException | InterruptedException e) {
throw new AssertionError(e);
}
}

@Test
public void canEnablePolicy() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

try {
final ILabAccount labAccount = labClient.createTempAccount(TempUserType.BASIC);
final ILabAccount labAccount = mLabClient.createTempAccount(TempUserType.BASIC);
Thread.sleep(POST_TEMP_USER_CREATION_WAIT);
Assert.assertTrue(labClient.enablePolicy(labAccount.getUsername(), ProtectionPolicy.MAM_CA));
Assert.assertTrue(mLabClient.enablePolicy(labAccount.getUsername(), ProtectionPolicy.MAM_CA));
} catch (final LabApiException | InterruptedException e) {
throw new AssertionError(e);
}
}

@Test
public void canDisablePolicy() {
final LabApiAuthenticationClient authenticationClient = new LabApiAuthenticationClient(
TestBuildConfig.LAB_CLIENT_SECRET
);

final LabClient labClient = new LabClient(authenticationClient);

try {
final ILabAccount labAccount = labClient.createTempAccount(TempUserType.MAM_CA);
final ILabAccount labAccount = mLabClient.createTempAccount(TempUserType.MAM_CA);
Thread.sleep(POST_TEMP_USER_CREATION_WAIT);
Assert.assertTrue(labClient.disablePolicy(labAccount.getUsername(), ProtectionPolicy.MAM_CA));
Assert.assertTrue(mLabClient.disablePolicy(labAccount.getUsername(), ProtectionPolicy.MAM_CA));
} catch (final LabApiException | InterruptedException e){
throw new AssertionError(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
public class RetryTestRule implements TestRule {

private final static String TAG = RetryTestRule.class.getSimpleName();
private final static int MINIMUM_NUMBER_OF_ATTEMPTS = 3;

@Override
public Statement apply(final Statement base, final Description description) {
Expand All @@ -61,6 +62,11 @@ public void evaluate() throws Throwable {
numAttempts += retryCount;
}

// If after evaluating annotation, we still have number of attempts less than minimum, increase number of attempts
if (numAttempts < MINIMUM_NUMBER_OF_ATTEMPTS) {
numAttempts = MINIMUM_NUMBER_OF_ATTEMPTS;
}

for (int i = 0; i < numAttempts; i++) {
try {
Logger.i(TAG, "Executing attempt #" + (i + 1) + " of " + numAttempts);
Expand Down
Loading