package net.thucydides.core.reports.saucelabs;
import net.thucydides.core.model.TestOutcome;
import net.thucydides.core.util.EnvironmentVariables;
import net.thucydides.core.util.MockEnvironmentVariables;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Mockito.when;
/**
* A description goes here.
* User: johnsmart
* Date: 8/03/12
* Time: 8:18 AM
*/
public class WhenGeneratingASauclabsLink {
EnvironmentVariables environmentVariables;
private final String A_SESSION_ID = "5f9fef27854ca50a3c132ce331cb6034";
@Mock
TestOutcome testOutcome;
@Mock
TestOutcome testOutcomeWithNoSessionId;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
environmentVariables = new MockEnvironmentVariables();
when(testOutcome.getSessionId()).thenReturn(A_SESSION_ID);
}
@Test
public void should_generate_a_simple_link_if_no_API_key_is_provided() {
SaucelabsLinkGenerator saucelabsLinkGenerator = new SaucelabsLinkGenerator(environmentVariables);
String saucelabsLink = saucelabsLinkGenerator.linkFor(testOutcome);
assertThat(saucelabsLink, is("http://saucelabs.com/jobs/" + A_SESSION_ID));
}
@Test
public void should_generate_no_link_if_the_session_id_is_unavailable() {
SaucelabsLinkGenerator saucelabsLinkGenerator = new SaucelabsLinkGenerator(environmentVariables);
String saucelabsLink = saucelabsLinkGenerator.linkFor(testOutcomeWithNoSessionId);
assertThat(saucelabsLink, is(nullValue()));
}
@Test
public void should_generate_a_link_with_hmac_authentication_if_an_API_key_is_provided() {
environmentVariables.setProperty("saucelabs.user.id","example_user");
environmentVariables.setProperty("saucelabs.access.key","123456-asdf-8dcf81f1fc71");
SaucelabsLinkGenerator saucelabsLinkGenerator = new SaucelabsLinkGenerator(environmentVariables);
String saucelabsLink = saucelabsLinkGenerator.linkFor(testOutcome);
assertThat(saucelabsLink, is("https://saucelabs.com/jobs/5f9fef27854ca50a3c132ce331cb6034?auth=3fca4184e106622adf2d33d8023271c1"));
}
}