Skip to content

Commit 1c2ec2c

Browse files
author
Shimi Bandiel
authored
Support for Cargo (#376)
1 parent 433128d commit 1c2ec2c

File tree

8 files changed

+169
-5
lines changed

8 files changed

+169
-5
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.jfrog.artifactory.client.model.repository.settings;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
5+
@JsonIgnoreProperties(ignoreUnknown = true)
6+
public interface CargoRepositorySettings extends RepositorySettings {
7+
String getGitRegistryUrl();
8+
Boolean isCargoInternalIndex();
9+
Boolean isCargoAnonymousAccess();
10+
}

services/src/main/java/org/jfrog/artifactory/client/impl/jackson/RepositorySettingsMixIn.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
@JsonSubTypes.Type(value = CondaRepositorySettingsImpl.class, name = "conda"),
4242
@JsonSubTypes.Type(value = PuppetRepositorySettingsImpl.class, name = "puppet"),
4343
@JsonSubTypes.Type(value = HelmRepositorySettingsImpl.class, name = "helm"),
44-
@JsonSubTypes.Type(value = GoRepositorySettingsImpl.class, name = "go")
44+
@JsonSubTypes.Type(value = GoRepositorySettingsImpl.class, name = "go"),
45+
@JsonSubTypes.Type(value = CargoRepositorySettingsImpl.class, name = "cargo")
4546
})
4647

4748
public abstract class RepositorySettingsMixIn {

services/src/main/java/org/jfrog/artifactory/client/model/impl/FederatedRepositoryBuilderImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
public class FederatedRepositoryBuilderImpl extends NonVirtualRepositoryBuilderBase<FederatedRepositoryBuilder, FederatedRepository> implements FederatedRepositoryBuilder {
1818
private static Set<PackageType> federatedRepositorySupportedTypes = new HashSet<>(Arrays.asList(
19-
bower, cocoapods, cran, conda, debian, docker, gems, generic, gitlfs, gradle, ivy, maven, npm, nuget, opkg, pypi, sbt, vagrant, yum, rpm, composer, conan, chef, puppet, helm, go
19+
bower, cocoapods, cran, conda, debian, docker, gems, generic, gitlfs, gradle, ivy, maven, npm, nuget, opkg, pypi, sbt, vagrant, yum, rpm, composer, conan, chef, puppet, helm, go, cargo
2020
));
2121

2222
protected List<FederatedMember> members = new ArrayList<>();

services/src/main/java/org/jfrog/artifactory/client/model/impl/LocalRepositoryBuilderImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818
public class LocalRepositoryBuilderImpl extends NonVirtualRepositoryBuilderBase<LocalRepositoryBuilder, LocalRepository> implements LocalRepositoryBuilder {
1919
private static Set<PackageType> localRepositorySupportedTypes = new HashSet<PackageType>(Arrays.asList(
20-
bower, cocoapods, cran, conda, debian, docker, gems, generic, gitlfs, gradle, ivy, maven, npm, nuget, opkg, pypi, sbt, vagrant, yum, rpm, composer, conan, chef, puppet, helm, go
20+
bower, cocoapods, cran, conda, debian, docker, gems, generic, gitlfs, gradle, ivy, maven, npm, nuget, opkg, pypi, sbt, vagrant, yum, rpm, composer, conan, chef, puppet, helm, go, cargo
2121
));
2222

2323
protected LocalRepositoryBuilderImpl() {

services/src/main/java/org/jfrog/artifactory/client/model/impl/PackageTypeImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ public enum PackageTypeImpl implements PackageType {
3131
chef,
3232
puppet,
3333
helm,
34-
go;
34+
go,
35+
cargo;
3536

3637
@Override
3738
public boolean isCustom() {

services/src/main/java/org/jfrog/artifactory/client/model/impl/RemoteRepositoryBuilderImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818
public class RemoteRepositoryBuilderImpl extends NonVirtualRepositoryBuilderBase<RemoteRepositoryBuilder, RemoteRepository> implements RemoteRepositoryBuilder {
1919
private static Set<PackageType> remoteRepositorySupportedTypes = new HashSet<PackageType>(Arrays.asList(
20-
bower, cocoapods, cran, conda, debian, docker, gems, generic, gitlfs, gradle, ivy, maven, npm, nuget, opkg, p2, pypi, sbt, vcs, yum, rpm, composer, conan, chef, puppet, helm, go
20+
bower, cocoapods, cran, conda, debian, docker, gems, generic, gitlfs, gradle, ivy, maven, npm, nuget, opkg, p2, pypi, sbt, vcs, yum, rpm, composer, conan, chef, puppet, helm, go, cargo
2121
));
2222

2323
private String url;
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package org.jfrog.artifactory.client.model.repository.settings.impl;
2+
3+
import org.jfrog.artifactory.client.model.PackageType;
4+
import org.jfrog.artifactory.client.model.impl.PackageTypeImpl;
5+
import org.jfrog.artifactory.client.model.repository.settings.AbstractRepositorySettings;
6+
import org.jfrog.artifactory.client.model.repository.settings.CargoRepositorySettings;
7+
8+
import java.util.Objects;
9+
10+
public class CargoRepositorySettingsImpl extends AbstractRepositorySettings implements CargoRepositorySettings {
11+
public static String defaultLayout = "simple-default";
12+
private String gitRegistryUrl;
13+
private Boolean cargoInternalIndex;
14+
private Boolean cargoAnonymousAccess;
15+
16+
public CargoRepositorySettingsImpl() {
17+
super(defaultLayout);
18+
}
19+
20+
public PackageType getPackageType() {
21+
return PackageTypeImpl.cargo;
22+
}
23+
24+
@Override
25+
public String getGitRegistryUrl() {
26+
return gitRegistryUrl;
27+
}
28+
29+
public void setGitRegistryUrl(String tRegistryUrl) {
30+
this.gitRegistryUrl = tRegistryUrl;
31+
}
32+
33+
@Override
34+
public Boolean isCargoInternalIndex() {
35+
return cargoInternalIndex;
36+
}
37+
38+
public void setCargoInternalIndex(Boolean cargoInternalIndex) {
39+
this.cargoInternalIndex = cargoInternalIndex;
40+
}
41+
42+
@Override
43+
public Boolean isCargoAnonymousAccess() {
44+
return cargoAnonymousAccess;
45+
}
46+
47+
public void setCargoAnonymousAccess(Boolean cargoAnonymousAccess) {
48+
this.cargoAnonymousAccess = cargoAnonymousAccess;
49+
}
50+
51+
@Override
52+
public boolean equals(Object o) {
53+
if (this == o) return true;
54+
if (o == null || getClass() != o.getClass()) return false;
55+
CargoRepositorySettingsImpl that = (CargoRepositorySettingsImpl) o;
56+
return Objects.equals(gitRegistryUrl, that.gitRegistryUrl) && Objects.equals(cargoInternalIndex, that.cargoInternalIndex) && Objects.equals(cargoAnonymousAccess, that.cargoAnonymousAccess);
57+
}
58+
59+
@Override
60+
public int hashCode() {
61+
return Objects.hash(super.hashCode(), gitRegistryUrl, cargoInternalIndex, cargoAnonymousAccess);
62+
}
63+
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package org.jfrog.artifactory.client
2+
3+
import org.hamcrest.CoreMatchers
4+
import org.jfrog.artifactory.client.model.RepositoryType
5+
import org.jfrog.artifactory.client.model.repository.settings.RepositorySettings
6+
import org.jfrog.artifactory.client.model.repository.settings.impl.CargoRepositorySettingsImpl
7+
import org.testng.annotations.BeforeMethod
8+
import org.testng.annotations.Test
9+
10+
class CargoPackageTypeRepositoryTests extends BaseRepositoryTests {
11+
12+
CargoPackageTypeRepositoryTests() {
13+
remoteRepoUrl = "https://index.crates.io"
14+
}
15+
16+
@Override
17+
RepositorySettings getRepositorySettings(RepositoryType repositoryType) {
18+
def settings = new CargoRepositorySettingsImpl()
19+
20+
settings.with {
21+
// remote
22+
cargoAnonymousAccess = rnd.nextBoolean()
23+
cargoInternalIndex = rnd.nextBoolean()
24+
gitRegistryUrl = "https://index.crates.io/"
25+
}
26+
27+
return settings
28+
}
29+
30+
@BeforeMethod
31+
protected void setUp() {
32+
prepareVirtualRepo = false
33+
super.setUp()
34+
}
35+
36+
@Test(groups = "cargoPackageTypeRepo")
37+
void testCargoLocalRepo() {
38+
artifactory.repositories().create(0, localRepo)
39+
def expectedSettings = localRepo.repositorySettings
40+
41+
def resp = artifactory.repository(localRepo.getKey()).get()
42+
assertThat(resp, CoreMatchers.notNullValue())
43+
assertThat(resp.repoLayoutRef, CoreMatchers.is(CargoRepositorySettingsImpl.defaultLayout))
44+
resp.getRepositorySettings().with {
45+
assertThat(packageType, CoreMatchers.is(expectedSettings.getPackageType()))
46+
assertThat(repoLayout, CoreMatchers.is(expectedSettings.getRepoLayout()))
47+
48+
// remote
49+
assertThat(cargoInternalIndex, CoreMatchers.is(expectedSettings.cargoInternalIndex))
50+
assertThat(cargoAnonymousAccess, CoreMatchers.is(expectedSettings.cargoAnonymousAccess))
51+
}
52+
}
53+
54+
@Test(groups = "cargoPackageTypeRepo")
55+
void testCargoFederatedRepo() {
56+
artifactory.repositories().create(0, federatedRepo)
57+
def expectedSettings = federatedRepo.repositorySettings
58+
59+
def resp = artifactory.repository(federatedRepo.getKey()).get()
60+
assertThat(resp, CoreMatchers.notNullValue())
61+
assertThat(resp.repoLayoutRef, CoreMatchers.is(CargoRepositorySettingsImpl.defaultLayout))
62+
resp.getRepositorySettings().with {
63+
assertThat(packageType, CoreMatchers.is(expectedSettings.getPackageType()))
64+
assertThat(repoLayout, CoreMatchers.is(expectedSettings.getRepoLayout()))
65+
66+
// remote
67+
assertThat(cargoInternalIndex, CoreMatchers.is(expectedSettings.cargoInternalIndex))
68+
assertThat(cargoAnonymousAccess, CoreMatchers.is(expectedSettings.cargoAnonymousAccess))
69+
}
70+
}
71+
72+
@Test(groups = "cargoPackageTypeRepo")
73+
void testCargoRemoteRepo() {
74+
artifactory.repositories().create(0, remoteRepo)
75+
def expectedSettings = remoteRepo.repositorySettings
76+
77+
def resp = artifactory.repository(remoteRepo.getKey()).get()
78+
assertThat(resp, CoreMatchers.notNullValue())
79+
assertThat(resp.repoLayoutRef, CoreMatchers.is(CargoRepositorySettingsImpl.defaultLayout))
80+
resp.getRepositorySettings().with {
81+
assertThat(packageType, CoreMatchers.is(expectedSettings.getPackageType()))
82+
assertThat(repoLayout, CoreMatchers.is(expectedSettings.getRepoLayout()))
83+
84+
// remote
85+
assertThat(cargoInternalIndex, CoreMatchers.is(expectedSettings.cargoInternalIndex))
86+
assertThat(cargoAnonymousAccess, CoreMatchers.is(expectedSettings.cargoAnonymousAccess))
87+
}
88+
}
89+
}

0 commit comments

Comments
 (0)