Home / Class/ ImageTests Class — spring-boot Architecture

ImageTests Class — spring-boot Architecture

Architecture documentation for the ImageTests class in ImageTests.java from the spring-boot codebase.

Entity Profile

Relationship Graph

Source Code

build-plugin/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ImageTests.java lines 55–312

class ImageTests {

	@Test
	void getBuildRequestWhenNameIsNullDeducesName() {
		BuildRequest request = new Image().getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getName()).hasToString("docker.io/library/my-app:0.0.1-SNAPSHOT");
	}

	@Test
	void getBuildRequestWhenNameIsSetUsesName() {
		Image image = new Image();
		image.name = "demo";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getName()).hasToString("docker.io/library/demo:latest");
	}

	@Test
	void getBuildRequestWhenNoCustomizationsUsesDefaults() {
		BuildRequest request = new Image().getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getName()).hasToString("docker.io/library/my-app:0.0.1-SNAPSHOT");
		assertThat(request.getBuilder().toString()).contains("paketobuildpacks/builder-noble-java-tiny");
		assertThat(request.isTrustBuilder()).isTrue();
		assertThat(request.getRunImage()).isNull();
		assertThat(request.getEnv()).isEmpty();
		assertThat(request.isCleanCache()).isFalse();
		assertThat(request.isVerboseLogging()).isFalse();
		assertThat(request.getPullPolicy()).isEqualTo(PullPolicy.ALWAYS);
		assertThat(request.isPublish()).isFalse();
		assertThat(request.getBuildpacks()).isEmpty();
		assertThat(request.getBindings()).isEmpty();
		assertThat(request.getNetwork()).isNull();
		assertThat(request.getImagePlatform()).isNull();
	}

	@Test
	void getBuildRequestWhenHasBuilderUsesBuilder() {
		Image image = new Image();
		image.builder = "springboot/builder:2.2.x";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuilder()).hasToString("docker.io/springboot/builder:2.2.x");
		assertThat(request.isTrustBuilder()).isFalse();
	}

	@Test
	void getBuildRequestWhenHasBuilderAndTrustBuilderUsesBuilderAndTrustBuilder() {
		Image image = new Image();
		image.builder = "springboot/builder:2.2.x";
		image.trustBuilder = true;
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuilder()).hasToString("docker.io/springboot/builder:2.2.x");
		assertThat(request.isTrustBuilder()).isTrue();
	}

	@Test
	void getBuildRequestWhenHasDefaultBuilderAndTrustBuilderUsesTrustBuilder() {
		Image image = new Image();
		image.trustBuilder = false;
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuilder().toString()).contains("paketobuildpacks/builder-noble-java-tiny");
		assertThat(request.isTrustBuilder()).isFalse();
	}

	@Test
	void getBuildRequestWhenHasRunImageUsesRunImage() {
		Image image = new Image();
		image.runImage = "springboot/run:latest";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getRunImage()).hasToString("docker.io/springboot/run:latest");
	}

	@Test
	void getBuildRequestWhenHasEnvUsesEnv() {
		Image image = new Image();
		image.env = Collections.singletonMap("test", "test");
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getEnv()).containsExactly(entry("test", "test"));
	}

	@Test
	void getBuildRequestWhenHasCleanCacheUsesCleanCache() {
		Image image = new Image();
		image.cleanCache = true;
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.isCleanCache()).isTrue();
	}

	@Test
	void getBuildRequestWhenHasVerboseLoggingUsesVerboseLogging() {
		Image image = new Image();
		image.verboseLogging = true;
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.isVerboseLogging()).isTrue();
	}

	@Test
	void getBuildRequestWhenHasPullPolicyUsesPullPolicy() {
		Image image = new Image();
		image.setPullPolicy(PullPolicy.NEVER);
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getPullPolicy()).isEqualTo(PullPolicy.NEVER);
	}

	@Test
	void getBuildRequestWhenHasPublishUsesPublish() {
		Image image = new Image();
		image.publish = true;
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.isPublish()).isTrue();
	}

	@Test
	void getBuildRequestWhenHasBuildpacksUsesBuildpacks() {
		Image image = new Image();
		image.buildpacks = Arrays.asList("example/buildpack1@0.0.1", "example/buildpack2@0.0.2");
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuildpacks()).containsExactly(BuildpackReference.of("example/buildpack1@0.0.1"),
				BuildpackReference.of("example/buildpack2@0.0.2"));
	}

	@Test
	void getBuildRequestWhenHasBindingsUsesBindings() {
		Image image = new Image();
		image.bindings = Arrays.asList("host-src:container-dest:ro", "volume-name:container-dest:rw");
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBindings()).containsExactly(Binding.of("host-src:container-dest:ro"),
				Binding.of("volume-name:container-dest:rw"));
	}

	@Test
	void getBuildRequestWhenNetworkUsesNetwork() {
		Image image = new Image();
		image.network = "test";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getNetwork()).isEqualTo("test");
	}

	@Test
	void getBuildRequestWhenHasTagsUsesTags() {
		Image image = new Image();
		image.tags = Arrays.asList("my-app:latest", "example.com/my-app:0.0.1-SNAPSHOT", "example.com/my-app:latest");
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getTags()).containsExactly(ImageReference.of("my-app:latest"),
				ImageReference.of("example.com/my-app:0.0.1-SNAPSHOT"), ImageReference.of("example.com/my-app:latest"));
	}

	@Test
	void getBuildRequestWhenHasBuildWorkspaceVolumeUsesWorkspace() {
		Image image = new Image();
		image.buildWorkspace = CacheInfo.fromVolume(new VolumeCacheInfo("build-work-vol"));
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuildWorkspace()).isEqualTo(Cache.volume("build-work-vol"));
	}

	@Test
	void getBuildRequestWhenHasBuildCacheVolumeUsesCache() {
		Image image = new Image();
		image.buildCache = CacheInfo.fromVolume(new VolumeCacheInfo("build-cache-vol"));
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuildCache()).isEqualTo(Cache.volume("build-cache-vol"));
	}

	@Test
	void getBuildRequestWhenHasLaunchCacheVolumeUsesCache() {
		Image image = new Image();
		image.launchCache = CacheInfo.fromVolume(new VolumeCacheInfo("launch-cache-vol"));
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getLaunchCache()).isEqualTo(Cache.volume("launch-cache-vol"));
	}

	@Test
	void getBuildRequestWhenHasBuildWorkspaceBindUsesWorkspace() {
		Image image = new Image();
		image.buildWorkspace = CacheInfo.fromBind(new BindCacheInfo("build-work-dir"));
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuildWorkspace()).isEqualTo(Cache.bind("build-work-dir"));
	}

	@Test
	void getBuildRequestWhenHasBuildCacheBindUsesCache() {
		Image image = new Image();
		image.buildCache = CacheInfo.fromBind(new BindCacheInfo("build-cache-dir"));
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getBuildCache()).isEqualTo(Cache.bind("build-cache-dir"));
	}

	@Test
	void getBuildRequestWhenHasLaunchCacheBindUsesCache() {
		Image image = new Image();
		image.launchCache = CacheInfo.fromBind(new BindCacheInfo("launch-cache-dir"));
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getLaunchCache()).isEqualTo(Cache.bind("launch-cache-dir"));
	}

	@Test
	void getBuildRequestWhenHasCreatedDateUsesCreatedDate() {
		Image image = new Image();
		image.createdDate = "2020-07-01T12:34:56Z";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getCreatedDate()).isEqualTo("2020-07-01T12:34:56Z");
	}

	@Test
	void getBuildRequestWhenHasApplicationDirectoryUsesApplicationDirectory() {
		Image image = new Image();
		image.applicationDirectory = "/application";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getApplicationDirectory()).isEqualTo("/application");
	}

	@Test
	void getBuildRequestWhenHasNoSecurityOptionsUsesNoSecurityOptions() {
		Image image = new Image();
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getSecurityOptions()).isNull();
	}

	@Test
	void getBuildRequestWhenHasSecurityOptionsUsesSecurityOptions() {
		Image image = new Image();
		image.securityOptions = List.of("label=user:USER", "label=role:ROLE");
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getSecurityOptions()).containsExactly("label=user:USER", "label=role:ROLE");
	}

	@Test
	void getBuildRequestWhenHasEmptySecurityOptionsUsesSecurityOptions() {
		Image image = new Image();
		image.securityOptions = Collections.emptyList();
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getSecurityOptions()).isEmpty();
	}

	@Test
	void getBuildRequestWhenHasImagePlatformUsesImagePlatform() {
		Image image = new Image();
		image.imagePlatform = "linux/arm64";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getImagePlatform()).isEqualTo(ImagePlatform.of("linux/arm64"));
	}

	@Test
	void getBuildRequestWhenImagePlatformIsEmptyDoesntSetImagePlatform() {
		Image image = new Image();
		image.imagePlatform = "";
		BuildRequest request = image.getBuildRequest(createArtifact(), mockApplicationContent());
		assertThat(request.getImagePlatform()).isNull();
	}

	private Artifact createArtifact() {
		return new DefaultArtifact("com.example", "my-app", VersionRange.createFromVersion("0.0.1-SNAPSHOT"), "compile",
				"jar", null, new DefaultArtifactHandler());
	}

	private Function<Owner, TarArchive> mockApplicationContent() {
		return (owner) -> mock(TarArchive.class);
	}

}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free