package jenkins.plugins.nodejs.configfiles;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Map;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import com.cloudbees.plugins.credentials.CredentialsProvider;
import com.cloudbees.plugins.credentials.CredentialsScope;
import com.cloudbees.plugins.credentials.CredentialsStore;
import com.cloudbees.plugins.credentials.common.StandardUsernameCredentials;
import com.cloudbees.plugins.credentials.domains.Domain;
import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl;
import hudson.model.FreeStyleBuild;
public class RegistryHelperTest {
@Rule
public JenkinsRule j = new JenkinsRule();
private StandardUsernameCredentials user;
@Before
public void setUp() throws Exception {
user = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "privateId", "dummy desc", "myuser", "mypassword");
CredentialsStore store = CredentialsProvider.lookupStores(j.getInstance()).iterator().next();
store.addCredentials(Domain.global(), user);
}
@Test
public void test_registry_credentials_resolution() throws Exception {
NPMRegistry privateRegistry = new NPMRegistry("https://private.organization.com/", user.getId(), null);
NPMRegistry officalRegistry = new NPMRegistry("https://registry.npmjs.org/", null, "@user1 user2");
FreeStyleBuild build = j.createFreeStyleProject().createExecutable();
RegistryHelper helper = new RegistryHelper(Arrays.asList(privateRegistry, officalRegistry));
Map<String, StandardUsernameCredentials> resolvedCredentials = helper.resolveCredentials(build);
assertFalse(resolvedCredentials.isEmpty());
assertEquals(1, resolvedCredentials.size());
assertThat(resolvedCredentials.keySet(), hasItem(privateRegistry.getUrl()));
assertThat(resolvedCredentials.get(privateRegistry.getUrl()), equalTo(user));
}
}