package de.codecentric.jenkins.dashboard.ec2; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; import static org.powermock.api.mockito.PowerMockito.mock; import hudson.util.Secret; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import com.amazonaws.auth.AWSCredentials; import com.cloudbees.plugins.credentials.CredentialsScope; import de.codecentric.jenkins.dashboard.ec2.AwsKeyCredentials.AwsKeyCredentialsDescriptor; @RunWith(PowerMockRunner.class) @PrepareForTest(Secret.class) public class AwsKeyCredentialsTest { private static final String ID = "abc"; private static final String DESC = "a description"; private static final String ACCESS = "myAccess"; private static final String SECRET_VALUE = "mySecret"; private static final Secret SECRET = mock(Secret.class); private static final AwsKeyCredentialsDescriptor descriptor = new AwsKeyCredentialsDescriptor(); @BeforeClass static public void setup() { Mockito.when(SECRET.getPlainText()).thenReturn(SECRET_VALUE); } @Test public void testAwsKeyCredentials() { final AwsKeyCredentials credentials = new AwsKeyCredentials(CredentialsScope.GLOBAL, ID, DESC, ACCESS, SECRET); assertThat(credentials.key, is(ACCESS)); assertThat(credentials.secret, is(SECRET)); assertThat(credentials.getId(), is(ID)); assertThat(credentials.getScope(), is(CredentialsScope.GLOBAL)); } @Test public void testAwsKeyCredentialsWithIdNull() { final AwsKeyCredentials credentials = new AwsKeyCredentials(CredentialsScope.GLOBAL, null, DESC, ACCESS, SECRET); assertThat(credentials.key, is(ACCESS)); assertThat(credentials.secret, is(SECRET)); assertThat(credentials.getId(), is(ACCESS)); assertThat(credentials.getScope(), is(CredentialsScope.GLOBAL)); } @Test public void testGetAwsAuthCredentials() { final AwsKeyCredentials credentials = new AwsKeyCredentials(CredentialsScope.GLOBAL, null, DESC, ACCESS, SECRET); final AWSCredentials awsAuthCredentials = credentials.getAwsAuthCredentials(); assertThat(awsAuthCredentials, notNullValue()); assertThat(awsAuthCredentials.getAWSAccessKeyId(), is(ACCESS)); assertThat(awsAuthCredentials.getAWSSecretKey(), is(SECRET_VALUE)); } @Test public void testCreateCredentialsAccessSecret() { AWSCredentials credentials = descriptor.createCredentials(ACCESS, SECRET_VALUE); assertThat(credentials, notNullValue()); assertThat(credentials.getAWSAccessKeyId(), is(ACCESS)); assertThat(credentials.getAWSSecretKey(), is(SECRET_VALUE)); } @Test public void testCreateCredentialsMissingData() { AWSCredentials credentials = descriptor.createCredentials(null, null); assertThat(credentials, nullValue()); } @Test public void testCreateCredentialsMissingSecret() { AWSCredentials credentials = descriptor.createCredentials(ACCESS, ""); assertThat(credentials, nullValue()); } @Test public void testCreateCredentialsMissingAccess() { AWSCredentials credentials = descriptor.createCredentials(" ", SECRET_VALUE); assertThat(credentials, nullValue()); } }