@Test void mapDependency() throws Exception { Dependency d = Dependency.withId("foo", "org.foo", "foo"); d.setRepository("my-repo"); d.setBom("my-bom"); Repository repository = new Repository(); repository.setName("foo-repo"); repository.setUrl(new URL("http://example.com/foo")); BillOfMaterials bom = BillOfMaterials.create("org.foo", "foo-bom", "1.0.0.RELEASE"); DependencyMetadata metadata = new DependencyMetadata( Version.parse("1.2.0.RELEASE"), Collections.singletonMap(d.getId(), d), Collections.singletonMap("repo-id", repository), Collections.singletonMap("bom-id", bom)); JSONObject content = new JSONObject(this.mapper.write(metadata)); assertThat(content.getJSONObject("dependencies").getJSONObject("foo") .getString("bom")).isEqualTo("my-bom"); assertThat(content.getJSONObject("dependencies").getJSONObject("foo") .getString("repository")).isEqualTo("my-repo"); assertThat(content.getJSONObject("repositories").getJSONObject("repo-id") .getString("name")).isEqualTo("foo-repo"); assertThat(content.getJSONObject("boms").getJSONObject("bom-id") .getString("artifactId")).isEqualTo("foo-bom"); assertThat(content.getJSONObject("boms").getJSONObject("bom-id") .getString("version")).isEqualTo("1.0.0.RELEASE"); }
private void index() { this.indexedDependencies.clear(); this.content.forEach((group) -> group.content.forEach((dependency) -> { // Apply defaults if (dependency.getVersionRange() == null && group.getVersionRange() != null) { dependency.setVersionRange(group.getVersionRange()); } if (dependency.getBom() == null && group.getBom() != null) { dependency.setBom(group.getBom()); } if (dependency.getRepository() == null && group.getRepository() != null) { dependency.setRepository(group.getRepository()); } dependency.resolve(); indexDependency(dependency.getId(), dependency); for (String alias : dependency.getAliases()) { indexDependency(alias, dependency); } })); }
@Test void addDefaultRepository() { Dependency first = Dependency.withId("first"); Dependency second = Dependency.withId("second"); second.setRepository("da-repo"); DependencyGroup group = createDependencyGroup("test", first, second); group.setRepository("test-repo"); DependenciesCapability capability = new DependenciesCapability(); capability.getContent().add(group); capability.validate(); assertThat(capability.get("first").getRepository()).isEqualTo("test-repo"); assertThat(capability.get("second").getRepository()).isEqualTo("da-repo"); }
@Test void resolveAdditionalRepositoriesDuplicates() { Dependency dependency = Dependency.withId("foo"); dependency.setBom("foo-bom"); dependency.setRepository("foo-repo"); BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0"); bom.getRepositories().add("bar-repo"); Dependency anotherDependency = Dependency.withId("bar"); anotherDependency.setRepository("bar-repo"); this.metadata = InitializrMetadataTestBuilder.withDefaults() .addBom("foo-bom", bom) .addRepository("foo-repo", "foo-repo", "http://example.com/foo", false) .addRepository("bar-repo", "bar-repo", "http://example.com/bar", false) .addDependencyGroup("test", dependency, anotherDependency).build(); ProjectRequest request = initProjectRequest(); request.getStyle().addAll(Arrays.asList("foo", "bar")); request.resolve(this.metadata); assertThat(request.getResolvedDependencies()).hasSize(2); assertThat(request.getBoms()).hasSize(1); assertThat(request.getRepositories()).hasSize(2); assertThat(request.getRepositories().get("foo-repo")).isEqualTo(this.metadata .getConfiguration().getEnv().getRepositories().get("foo-repo")); assertThat(request.getRepositories().get("bar-repo")).isEqualTo(this.metadata .getConfiguration().getEnv().getRepositories().get("bar-repo")); }
@Test void addRepoAndRemoveDuplicates() { Dependency first = Dependency.withId("first", "org.foo", "first"); first.setRepository("repo-foo"); Dependency second = Dependency.withId("second", "org.foo", "second"); Dependency third = Dependency.withId("third", "org.foo", "third"); third.setRepository("repo-foo"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addRepository("repo-foo", "my-repo", "http://localhost", false) .addDependencyGroup("test", first, second, third).build(); DependencyMetadata dependencyMetadata = this.provider.get(metadata, Version.parse("1.1.5.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(3); assertThat(dependencyMetadata.getRepositories()).hasSize(1); assertThat(dependencyMetadata.getBoms()).isEmpty(); assertThat(dependencyMetadata.getRepositories().get("repo-foo")).isSameAs( metadata.getConfiguration().getEnv().getRepositories().get("repo-foo")); }
@Test void invalidRepository() throws MalformedURLException { InitializrMetadata metadata = initializeMetadata(); Dependency foo = Dependency.withId("foo", "org.acme", "foo"); foo.setRepository("foo-repo"); addTestDependencyGroup(metadata, foo); metadata.getConfiguration().getEnv().getRepositories().put("my-repo", new Repository("repo", new URL("http://example.com/repo"), true)); assertThatExceptionOfType(InvalidInitializrMetadataException.class) .isThrownBy(metadata::validate).withMessageContaining("foo-repo") .withMessageContaining("my-repo"); }
@Test void resolveAdditionalRepositories() { Dependency dependency = Dependency.withId("foo"); dependency.setBom("foo-bom"); dependency.setRepository("foo-repo"); BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0"); bom.getRepositories().add("bar-repo"); this.metadata = InitializrMetadataTestBuilder.withDefaults() .addBom("foo-bom", bom) .addRepository("foo-repo", "foo-repo", "http://example.com/foo", false) .addRepository("bar-repo", "bar-repo", "http://example.com/bar", false) .addDependencyGroup("test", dependency).build(); ProjectRequest request = initProjectRequest(); request.getStyle().add("foo"); request.resolve(this.metadata); assertThat(request.getResolvedDependencies()).hasSize(1); assertThat(request.getBoms()).hasSize(1); assertThat(request.getRepositories()).hasSize(2); assertThat(request.getRepositories().get("foo-repo")).isEqualTo(this.metadata .getConfiguration().getEnv().getRepositories().get("foo-repo")); assertThat(request.getRepositories().get("bar-repo")).isEqualTo(this.metadata .getConfiguration().getEnv().getRepositories().get("bar-repo")); }
@Test void mavenRepositoryWithSeveralDependenciesOnSameRepository() { Dependency foo = Dependency.withId("foo", "org.acme", "foo"); foo.setRepository("the-repo"); Dependency bar = Dependency.withId("bar", "org.acme", "bar"); foo.setRepository("the-repo"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("group", foo, bar) .addRepository("the-repo", "repo", "http://example.com/repo", true) .build(); applyMetadata(metadata); ProjectRequest request = createProjectRequest("foo", "bar"); generateMavenPom(request).hasDependency(foo) .hasRepository("the-repo", "repo", "http://example.com/repo", true) .hasRepositoriesCount(1); }
@ParameterizedTest @MethodSource("parameters") public void repositories(String build, String fileName) { Dependency foo = Dependency.withId("foo", "org.acme", "foo"); foo.setRepository("foo-repository"); Dependency bar = Dependency.withId("bar", "org.acme", "bar"); bar.setRepository("bar-repository"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("test", foo, bar) .addRepository("foo-repository", "foo-repo", "https://example.com/foo", false) .addRepository("bar-repository", "bar-repo", "https://example.com/bar", true) .build(); applyMetadata(metadata); ProjectRequest request = createProjectRequestForType(build, "foo", "bar"); ProjectAssert project = generateProject(request); project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource( "project/" + build + "/repositories-" + getAssertFileName(fileName))); }
@Test void gradleRepository() { Dependency foo = Dependency.withId("foo", "org.acme", "foo"); foo.setRepository("foo-repo"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("foo", foo) .addRepository("foo-repo", "foo", "http://example.com/repo", false) .build(); applyMetadata(metadata); ProjectRequest request = createProjectRequest("foo"); generateGradleBuild(request).hasRepository("http://example.com/repo"); }
private DependencyMetadata testRepoFromBomAccordingToVersion(String bootVersion) { Dependency first = Dependency.withId("first", "org.foo", "first"); first.setRepository("repo-foo"); Dependency second = Dependency.withId("second", "org.foo", "second"); Dependency third = Dependency.withId("third", "org.foo", "third"); third.setBom("bom-foo"); BillOfMaterials bom = BillOfMaterials.create("org.foo", "bom"); bom.getMappings() .add(BillOfMaterials.Mapping.create("[1.0.0.RELEASE, 1.1.0.RELEASE)", "2.0.0.RELEASE", "repo-foo", "repo-bar")); bom.getMappings().add(BillOfMaterials.Mapping.create("1.1.0.RELEASE", "3.0.0.RELEASE", "repo-biz")); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addBom("bom-foo", bom) .addRepository("repo-foo", "foo", "http://localhost", false) .addRepository("repo-bar", "bar", "http://localhost", false) .addRepository("repo-biz", "biz", "http://localhost", false) .addDependencyGroup("test", first, second, third).build(); return this.provider.get(metadata, Version.parse(bootVersion)); }
@Test void mavenRepository() { Dependency foo = Dependency.withId("foo", "org.acme", "foo"); foo.setRepository("foo-repo"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("foo", foo) .addRepository("foo-repo", "foo", "http://example.com/repo", false) .build(); applyMetadata(metadata); ProjectRequest request = createProjectRequest("foo"); generateMavenPom(request).hasDependency(foo).hasRepository("foo-repo", "foo", "http://example.com/repo", false); }