Skip to content

Commit b7754d0

Browse files
authored
Add Projects APIs
1 parent c317c20 commit b7754d0

File tree

17 files changed

+280
-30
lines changed

17 files changed

+280
-30
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Build Info is Artifactory's open integration layer for the CI servers and build
1212
```bash
1313
export BITESTS_PLATFORM_URL='http://localhost:8081'
1414
export BITESTS_PLATFORM_USERNAME=admin
15-
export BITESTS_PLATFORM_PASSWORD=password
15+
export BITESTS_PLATFORM_ACCESS_TOKEN=admin-access-token
1616
export BITESTS_ARTIFACTORY_PIP_ENV=/Users/user/venv-test/bin
1717
```
1818
Before running the tests:

Diff for: build-info-extractor-docker/src/test/java/org/jfrog/build/extractor/docker/extractor/DockerExtractorTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -102,26 +102,26 @@ private void tearDown() throws IOException {
102102
@Test
103103
public void dockerPushToLocalTest() {
104104
DockerJavaWrapper.buildImage(imageTagLocal, host, Collections.emptyMap(), PROJECT_PATH);
105-
DockerPush dockerPush = new DockerPush(artifactoryManagerBuilder, imageTagLocal, host, artifactProperties, dockerLocalRepo, getUsername(), getPassword(), getLog(), Collections.emptyMap());
105+
DockerPush dockerPush = new DockerPush(artifactoryManagerBuilder, imageTagLocal, host, artifactProperties, dockerLocalRepo, getUsername(), getAccessToken(), getLog(), Collections.emptyMap());
106106
pushAndValidateImage(dockerPush, dockerLocalRepo, imageTagLocal, SHORT_IMAGE_TAG_LOCAL);
107107
}
108108

109109
@Test
110110
public void dockerPushToVirtualTest() {
111111
DockerJavaWrapper.buildImage(imageTagVirtual, host, Collections.emptyMap(), PROJECT_PATH);
112-
DockerPush dockerPush = new DockerPush(artifactoryManagerBuilder, imageTagVirtual, host, artifactProperties, dockerVirtualRepo, getUsername(), getPassword(), getLog(), Collections.emptyMap());
112+
DockerPush dockerPush = new DockerPush(artifactoryManagerBuilder, imageTagVirtual, host, artifactProperties, dockerVirtualRepo, getUsername(), getAccessToken(), getLog(), Collections.emptyMap());
113113
pushAndValidateImage(dockerPush, dockerVirtualRepo, imageTagVirtual, SHORT_IMAGE_TAG_VIRTUAL);
114114
}
115115

116116
@Test
117117
public void dockerPullFromRemoteTest() {
118-
DockerPull dockerPull = new DockerPull(artifactoryManagerBuilder, pullImageFromRemote, host, dockerRemoteRepo, getUsername(), getPassword(), getLog(), Collections.emptyMap());
118+
DockerPull dockerPull = new DockerPull(artifactoryManagerBuilder, pullImageFromRemote, host, dockerRemoteRepo, getUsername(), getAccessToken(), getLog(), Collections.emptyMap());
119119
validatePulledDockerImage(dockerPull.execute(), pullImageFromRemote);
120120
}
121121

122122
@Test
123123
public void dockerPullFromVirtualTest() {
124-
DockerPull dockerPull = new DockerPull(artifactoryManagerBuilder, pullImageFromVirtual, host, dockerVirtualRepo, getUsername(), getPassword(), getLog(), Collections.emptyMap());
124+
DockerPull dockerPull = new DockerPull(artifactoryManagerBuilder, pullImageFromVirtual, host, dockerVirtualRepo, getUsername(), getAccessToken(), getLog(), Collections.emptyMap());
125125
validatePulledDockerImage(dockerPull.execute(), pullImageFromVirtual);
126126
}
127127

@@ -175,7 +175,7 @@ private Path createKanikoConfig(Path workingDirectory, String registry) throws I
175175
ObjectMapper mapper = new ObjectMapper();
176176
ObjectNode credentials = mapper.createObjectNode()
177177
.put("username", getUsername())
178-
.put("password", getPassword());
178+
.put("password", getAccessToken());
179179
ObjectNode registryNode = mapper.createObjectNode().set(registry, credentials);
180180
String kanikoConfig = mapper.createObjectNode().set("auths", registryNode).toPrettyString();
181181
Files.write(kanikoConfigPath, kanikoConfig.getBytes(StandardCharsets.UTF_8));

Diff for: build-info-extractor-go/src/test/java/org/jfrog/build/extractor/go/extractor/GoExtractorTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ private Set<String> getArtifactSet() {
100100

101101
@BeforeClass
102102
private void setUp() throws IOException {
103-
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getPassword()).setLog(getLog());
103+
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getAccessToken()).setLog(getLog());
104104
deployTestDependencies(Project.QUOTE, Project.SAMPLER, Project.TEXT);
105105
}
106106

@@ -149,7 +149,7 @@ public void goRunTest(Project project, String args, ArtifactoryManagerBuilder ar
149149
try {
150150
// Run Go build
151151
projectDir = createProjectDir(project.targetDir, project.projectOrigin);
152-
GoRun goRun = new GoRun(args, projectDir, null, artifactoryManagerBuilder, repo, getUsername(), getPassword(), getLog(), env);
152+
GoRun goRun = new GoRun(args, projectDir, null, artifactoryManagerBuilder, repo, getUsername(), getAccessToken(), getLog(), env);
153153
Build build = goRun.execute();
154154
// Check successful execution and correctness of the module and dependencies
155155
assertNotNull(build);
@@ -181,7 +181,7 @@ public void goRunPublishTest() {
181181
// Run Go build on project1 locally
182182
Project project = Project.PROJECT_1;
183183
projectDir = createProjectDir(project.targetDir, project.projectOrigin);
184-
GoRun goRun = new GoRun(GO_BUILD_CMD, projectDir, null, null, StringUtils.EMPTY, getUsername(), getPassword(), getLog(), env);
184+
GoRun goRun = new GoRun(GO_BUILD_CMD, projectDir, null, null, StringUtils.EMPTY, getUsername(), getAccessToken(), getLog(), env);
185185
Build project1Build = goRun.execute();
186186
// Check successful execution
187187
assertNotNull(project1Build);
@@ -207,7 +207,7 @@ public void goRunPublishTest() {
207207
// Run Go build on project2 using Artifactory for resolution
208208
project = Project.PROJECT_2;
209209
projectDir = createProjectDir(project.targetDir, project.projectOrigin);
210-
goRun = new GoRun(GO_BUILD_CMD, projectDir, null, artifactoryManagerBuilder, virtualRepo, getUsername(), getPassword(), getLog(), env);
210+
goRun = new GoRun(GO_BUILD_CMD, projectDir, null, artifactoryManagerBuilder, virtualRepo, getUsername(), getAccessToken(), getLog(), env);
211211
Build project2Build = goRun.execute();
212212
// Check successful execution and correctness of the module, dependencies and artifacts
213213
assertNotNull(project2Build);

Diff for: build-info-extractor-gradle/src/test/java/org/jfrog/gradle/plugin/artifactory/GradlePluginTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public GradlePluginTest() {
3434
envVars = new HashMap<String, String>(System.getenv()) {{
3535
putIfAbsent(BITESTS_ENV_VAR_PREFIX + "URL", getArtifactoryUrl());
3636
putIfAbsent(BITESTS_ENV_VAR_PREFIX + "USERNAME", getUsername());
37-
putIfAbsent(BITESTS_ENV_VAR_PREFIX + "PASSWORD", getPassword());
37+
putIfAbsent(BITESTS_ENV_VAR_PREFIX + "PASSWORD", getAccessToken());
3838
putIfAbsent(BITESTS_ARTIFACTORY_ENV_VAR_PREFIX + "LOCAL_REPO", localRepo1);
3939
putIfAbsent(BITESTS_ARTIFACTORY_ENV_VAR_PREFIX + "VIRTUAL_REPO", virtualRepo);
4040
}};
@@ -95,7 +95,7 @@ public void publicationsTestKotlinDsl(String gradleVersion) throws IOException {
9595
public void ciServerTest(String gradleVersion) throws IOException {
9696
// Create test environment
9797
createTestDir(GRADLE_EXAMPLE_CI_SERVER);
98-
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getPassword(), localRepo1, virtualRepo, "", true, true);
98+
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getAccessToken(), localRepo1, virtualRepo, "", true, true);
9999
Map<String, String> extendedEnv = new HashMap<String, String>(envVars) {{
100100
put(BuildInfoConfigProperties.PROP_PROPS_FILE, BUILD_INFO_PROPERTIES_TARGET.toString());
101101
}};
@@ -112,7 +112,7 @@ public void ciServerTest(String gradleVersion) throws IOException {
112112
public void ciServerPublicationsTest(String gradleVersion) throws IOException {
113113
// Create test environment
114114
createTestDir(GRADLE_EXAMPLE_CI_SERVER);
115-
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getPassword(), localRepo1, virtualRepo, "mavenJava,customIvyPublication", true, true);
115+
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getAccessToken(), localRepo1, virtualRepo, "mavenJava,customIvyPublication", true, true);
116116
Map<String, String> extendedEnv = new HashMap<String, String>(envVars) {{
117117
put(BuildInfoConfigProperties.PROP_PROPS_FILE, BUILD_INFO_PROPERTIES_TARGET.toString());
118118
}};
@@ -129,7 +129,7 @@ public void ciServerPublicationsTest(String gradleVersion) throws IOException {
129129
public void requestedByTest(String gradleVersion) throws IOException {
130130
// Create test environment
131131
createTestDir(GRADLE_EXAMPLE_CI_SERVER);
132-
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getPassword(), localRepo1, virtualRepo, "mavenJava,customIvyPublication", false, true);
132+
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getAccessToken(), localRepo1, virtualRepo, "mavenJava,customIvyPublication", false, true);
133133
Map<String, String> extendedEnv = new HashMap<String, String>(envVars) {{
134134
put(BuildInfoConfigProperties.PROP_PROPS_FILE, BUILD_INFO_PROPERTIES_TARGET.toString());
135135
}};
@@ -146,7 +146,7 @@ public void requestedByTest(String gradleVersion) throws IOException {
146146
public void ciServerResolverOnlyTest(String gradleVersion) throws IOException {
147147
// Create test environment
148148
createTestDir(GRADLE_EXAMPLE_CI_SERVER);
149-
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getPassword(), localRepo1, virtualRepo, "", false, false);
149+
generateBuildInfoProperties(getArtifactoryUrl(), getUsername(), getAccessToken(), localRepo1, virtualRepo, "", false, false);
150150
Map<String, String> extendedEnv = new HashMap<String, String>(envVars) {{
151151
put(BuildInfoConfigProperties.PROP_PROPS_FILE, BUILD_INFO_PROPERTIES_TARGET.toString());
152152
}};

Diff for: build-info-extractor-npm/src/test/java/org/jfrog/build/extractor/npm/extractor/NpmExtractorTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ private String getTargetPath() {
115115

116116
@BeforeClass
117117
private void setUp() throws IOException {
118-
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getPassword()).setLog(getLog());
118+
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getAccessToken()).setLog(getLog());
119119
downloaderHelper = new DependenciesDownloaderHelper(artifactoryManager, ".", log);
120120
deployTestDependencies(Project.ASGARD, Project.MIDGARD, Project.ALFHEIM, Project.SVARTALFHEIM);
121121
}

Diff for: build-info-extractor-nuget/src/test/java/org/jfrog/build/extractor/nuget/extractor/NugetExtractorTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private enum Project {
6464

6565
@BeforeClass
6666
private void setUp() {
67-
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getPassword()).setLog(getLog());
67+
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getAccessToken()).setLog(getLog());
6868
}
6969

7070
Object[][] packagesConfigTestsInfo = new Object[][]{
@@ -94,7 +94,7 @@ public void nugetRunTest(Project project, String args, String moduleName, String
9494
try {
9595
// Run nuget restore install
9696
projectDir = createProjectDir(project);
97-
NugetRun nugetRun = new NugetRun(artifactoryManagerBuilder, remoteRepo, false, args, log, projectDir, env, moduleName, getUsername(), getPassword(), "v2");
97+
NugetRun nugetRun = new NugetRun(artifactoryManagerBuilder, remoteRepo, false, args, log, projectDir, env, moduleName, getUsername(), getAccessToken(), "v2");
9898
executeAndAssertBuildInfo(nugetRun, expectedModules, expectedDependencies);
9999
} catch (Exception e) {
100100
fail(ExceptionUtils.getStackTrace(e));
@@ -116,7 +116,7 @@ public void dotnetCliRunTest(Project project, String args, String moduleName, St
116116
try {
117117
// Run nuget restore install
118118
projectDir = createProjectDir(project);
119-
NugetRun nugetRun = new NugetRun(artifactoryManagerBuilder, remoteRepo, true, args, log, projectDir, env, moduleName, getUsername(), getPassword(), "v2");
119+
NugetRun nugetRun = new NugetRun(artifactoryManagerBuilder, remoteRepo, true, args, log, projectDir, env, moduleName, getUsername(), getAccessToken(), "v2");
120120
executeAndAssertBuildInfo(nugetRun, expectedModules, expectedDependencies);
121121
} catch (Exception e) {
122122
fail(ExceptionUtils.getStackTrace(e));
@@ -166,7 +166,7 @@ private Object[][] projectRootProvider() {
166166
private void getProjectRootTest(String args, String expectedProjectRootFileName) {
167167
try {
168168
File rootDir = PROJECTS_ROOT.resolve("projectRootTestDir").toFile();
169-
NugetRun nugetRun = new NugetRun(artifactoryManagerBuilder, remoteRepo, false, args, log, rootDir.toPath(), env, null, getUsername(), getPassword(), "v2");
169+
NugetRun nugetRun = new NugetRun(artifactoryManagerBuilder, remoteRepo, false, args, log, rootDir.toPath(), env, null, getUsername(), getAccessToken(), "v2");
170170
File projectRoot = nugetRun.getProjectRootPath();
171171
assertTrue(projectRoot.getPath().endsWith(expectedProjectRootFileName));
172172
} catch (Exception e) {

Diff for: build-info-extractor-pip/src/test/java/org/jfrog/build/extractor/pip/extractor/PipExtractorTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private enum Project {
7777

7878
@BeforeClass
7979
private void setUp() {
80-
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getPassword()).setLog(getLog());
80+
artifactoryManagerBuilder = new ArtifactoryManagerBuilder().setServerUrl(getArtifactoryUrl()).setUsername(getUsername()).setPassword(getAccessToken()).setLog(getLog());
8181

8282
// Read pip environment path variable.
8383
pipEnvVar = System.getenv(BITESTS_ARTIFACTORY_ENV_VAR_PREFIX + "PIP_ENV");
@@ -122,7 +122,7 @@ private void pipInstallTest(Project project) {
122122
}
123123

124124
// Run pip-install.
125-
PipInstall pipInstall = new PipInstall(artifactoryManagerBuilder, virtualRepo, project.args, getLog(), projectDir, env, project.moduleId, getUsername(), getPassword(), null);
125+
PipInstall pipInstall = new PipInstall(artifactoryManagerBuilder, virtualRepo, project.args, getLog(), projectDir, env, project.moduleId, getUsername(), getAccessToken(), null);
126126
Build build = pipInstall.execute();
127127
assertNotNull(build, "Pip execution returned empty build.");
128128

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.jfrog.build.extractor.clientConfiguration.client.access;
2+
3+
import org.apache.commons.lang.StringUtils;
4+
import org.jfrog.build.api.util.Log;
5+
import org.jfrog.build.extractor.clientConfiguration.client.ManagerBase;
6+
import org.jfrog.build.extractor.clientConfiguration.client.access.services.CreateProject;
7+
import org.jfrog.build.extractor.clientConfiguration.client.access.services.DeleteProject;
8+
import org.jfrog.build.extractor.clientConfiguration.client.access.services.GetProject;
9+
import org.jfrog.build.extractor.clientConfiguration.client.access.services.UpdateProject;
10+
11+
import java.io.IOException;
12+
13+
public class AccessManager extends ManagerBase {
14+
15+
public AccessManager(String AccessUrl, String accessToken, Log log) {
16+
super(AccessUrl, StringUtils.EMPTY, StringUtils.EMPTY, accessToken, log);
17+
}
18+
19+
// Access has no version API.
20+
@Override
21+
public org.jfrog.build.client.Version getVersion() throws IOException {
22+
return null;
23+
}
24+
25+
public void createProject(String projectJsonConfig) throws IOException {
26+
new CreateProject(projectJsonConfig, log).execute(jfrogHttpClient);
27+
}
28+
29+
public void updateProject(String projectKey, String projectJsonConfig) throws IOException {
30+
new UpdateProject(projectKey, projectJsonConfig, log).execute(jfrogHttpClient);
31+
}
32+
33+
public void deleteProject(String projectKey) throws IOException {
34+
new DeleteProject(projectKey, log).execute(jfrogHttpClient);
35+
}
36+
37+
public String getProject(String projectKey) throws IOException {
38+
return new GetProject(projectKey, log).execute(jfrogHttpClient);
39+
}
40+
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.jfrog.build.extractor.clientConfiguration.client.access.services;
2+
3+
import org.apache.http.client.methods.HttpPost;
4+
import org.apache.http.client.methods.HttpRequestBase;
5+
import org.apache.http.entity.ContentType;
6+
import org.apache.http.entity.StringEntity;
7+
import org.jfrog.build.api.util.Log;
8+
import org.jfrog.build.extractor.clientConfiguration.client.VoidJFrogService;
9+
10+
import java.io.IOException;
11+
12+
import static org.jfrog.build.extractor.clientConfiguration.client.access.services.Utils.PROJECTS_ENDPOINT;
13+
14+
public class CreateProject extends VoidJFrogService {
15+
private final String projectJsonConfig;
16+
17+
public CreateProject(String projectJsonConfig, Log logger) {
18+
super(logger);
19+
this.projectJsonConfig = projectJsonConfig;
20+
}
21+
22+
@Override
23+
public HttpRequestBase createRequest() throws IOException {
24+
HttpPost request = new HttpPost(PROJECTS_ENDPOINT);
25+
StringEntity stringEntity = new StringEntity(projectJsonConfig, ContentType.APPLICATION_JSON);
26+
request.setEntity(stringEntity);
27+
return request;
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.jfrog.build.extractor.clientConfiguration.client.access.services;
2+
3+
import org.apache.http.client.methods.HttpDelete;
4+
import org.apache.http.client.methods.HttpRequestBase;
5+
import org.jfrog.build.api.util.Log;
6+
import org.jfrog.build.extractor.clientConfiguration.client.VoidJFrogService;
7+
8+
import java.io.IOException;
9+
10+
import static org.jfrog.build.extractor.clientConfiguration.client.access.services.Utils.PROJECTS_ENDPOINT;
11+
12+
public class DeleteProject extends VoidJFrogService {
13+
private final String projectKey;
14+
15+
public DeleteProject(String projectKey, Log logger) {
16+
super(logger);
17+
this.projectKey = projectKey;
18+
}
19+
20+
@Override
21+
public HttpRequestBase createRequest() throws IOException {
22+
return new HttpDelete(PROJECTS_ENDPOINT + "/" + encodeUrl(projectKey));
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.jfrog.build.extractor.clientConfiguration.client.access.services;
2+
3+
import org.apache.commons.io.IOUtils;
4+
import org.apache.http.HttpEntity;
5+
import org.apache.http.client.methods.HttpGet;
6+
import org.apache.http.client.methods.HttpRequestBase;
7+
import org.jfrog.build.api.util.Log;
8+
import org.jfrog.build.extractor.clientConfiguration.client.JFrogService;
9+
10+
import java.io.IOException;
11+
import java.io.InputStream;
12+
import java.nio.charset.StandardCharsets;
13+
14+
import static org.jfrog.build.extractor.clientConfiguration.client.access.services.Utils.PROJECTS_ENDPOINT;
15+
16+
public class GetProject extends JFrogService<String> {
17+
private final String projectKey;
18+
19+
public GetProject(String projectKey, Log logger) {
20+
super(logger);
21+
this.projectKey = projectKey;
22+
result = "";
23+
}
24+
25+
@Override
26+
public HttpRequestBase createRequest() throws IOException {
27+
return new HttpGet(PROJECTS_ENDPOINT + "/" + encodeUrl(projectKey));
28+
}
29+
30+
@Override
31+
protected void setResponse(InputStream stream) throws IOException {
32+
result = IOUtils.toString(stream, StandardCharsets.UTF_8.name());
33+
}
34+
35+
@Override
36+
protected void handleUnsuccessfulResponse(HttpEntity entity) throws IOException {
37+
log.error("Failed get project with key: '" + projectKey + "'.");
38+
throwException(entity, getStatusCode());
39+
}
40+
}

0 commit comments

Comments
 (0)