Home / Class/ InitializrServiceTests Class — spring-boot Architecture

InitializrServiceTests Class — spring-boot Architecture

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

Entity Profile

Source Code

cli/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/InitializrServiceTests.java lines 38–155

class InitializrServiceTests extends AbstractHttpClientMockTests {

	private final InitializrService invoker = new InitializrService(this.http);

	@Test
	void loadMetadata() throws Exception {
		mockSuccessfulMetadataGet(false);
		InitializrServiceMetadata metadata = this.invoker.loadMetadata("https://foo/bar");
		assertThat(metadata).isNotNull();
	}

	@Test
	void generateSimpleProject() throws Exception {
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		MockHttpProjectGenerationRequest mockHttpRequest = new MockHttpProjectGenerationRequest("application/xml",
				"foo.zip");
		ProjectGenerationResponse entity = generateProject(request, mockHttpRequest);
		assertProjectEntity(entity, mockHttpRequest.contentType, mockHttpRequest.fileName);
	}

	@Test
	void generateProjectCustomTargetFilename() throws Exception {
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		request.setOutput("bar.zip");
		MockHttpProjectGenerationRequest mockHttpRequest = new MockHttpProjectGenerationRequest("application/xml",
				null);
		ProjectGenerationResponse entity = generateProject(request, mockHttpRequest);
		assertProjectEntity(entity, mockHttpRequest.contentType, null);
	}

	@Test
	void generateProjectNoDefaultFileName() throws Exception {
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		MockHttpProjectGenerationRequest mockHttpRequest = new MockHttpProjectGenerationRequest("application/xml",
				null);
		ProjectGenerationResponse entity = generateProject(request, mockHttpRequest);
		assertProjectEntity(entity, mockHttpRequest.contentType, null);
	}

	@Test
	void generateProjectBadRequest() throws Exception {
		String jsonMessage = "Unknown dependency foo:bar";
		mockProjectGenerationError(400, jsonMessage);
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		request.getDependencies().add("foo:bar");
		assertThatExceptionOfType(ReportableException.class).isThrownBy(() -> this.invoker.generate(request))
			.withMessageContaining(jsonMessage);
	}

	@Test
	void generateProjectBadRequestNoExtraMessage() throws Exception {
		mockProjectGenerationError(400, null);
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		assertThatExceptionOfType(ReportableException.class).isThrownBy(() -> this.invoker.generate(request))
			.withMessageContaining("unexpected 400 error");
	}

	@Test
	void generateProjectNoContent() throws Exception {
		mockSuccessfulMetadataGet(false);
		ClassicHttpResponse response = mock(ClassicHttpResponse.class);
		mockStatus(response, 500);
		given(this.http.executeOpen(any(HttpHost.class), isA(HttpGet.class), isNull())).willReturn(response);
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		assertThatExceptionOfType(ReportableException.class).isThrownBy(() -> this.invoker.generate(request))
			.withMessageContaining("No content received from server");
	}

	@Test
	void loadMetadataBadRequest() throws Exception {
		String jsonMessage = "whatever error on the server";
		mockMetadataGetError(500, jsonMessage);
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		assertThatExceptionOfType(ReportableException.class).isThrownBy(() -> this.invoker.generate(request))
			.withMessageContaining(jsonMessage);
	}

	@Test
	void loadMetadataInvalidJson() throws Exception {
		ClassicHttpResponse response = mock(ClassicHttpResponse.class);
		mockHttpEntity(response, "Foo-Bar-Not-JSON".getBytes(), "application/json");
		mockStatus(response, 200);
		given(this.http.executeOpen(any(HttpHost.class), isA(HttpGet.class), isNull())).willReturn(response);
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		assertThatExceptionOfType(ReportableException.class).isThrownBy(() -> this.invoker.generate(request))
			.withMessageContaining("Invalid content received from server");
	}

	@Test
	void loadMetadataNoContent() throws Exception {
		ClassicHttpResponse response = mock(ClassicHttpResponse.class);
		mockStatus(response, 500);
		given(this.http.executeOpen(any(HttpHost.class), isA(HttpGet.class), isNull())).willReturn(response);
		ProjectGenerationRequest request = new ProjectGenerationRequest();
		assertThatExceptionOfType(ReportableException.class).isThrownBy(() -> this.invoker.generate(request))
			.withMessageContaining("No content received from server");
	}

	private ProjectGenerationResponse generateProject(ProjectGenerationRequest request,
			MockHttpProjectGenerationRequest mockRequest) throws Exception {
		mockSuccessfulProjectGeneration(mockRequest);
		ProjectGenerationResponse entity = this.invoker.generate(request);
		assertThat(entity.getContent()).as("wrong body content").isEqualTo(mockRequest.content);
		return entity;
	}

	private static void assertProjectEntity(ProjectGenerationResponse entity, @Nullable String mimeType,
			@Nullable String fileName) {
		if (mimeType == null) {
			assertThat(entity.getContentType()).isNull();
		}
		else {
			assertThat(entity.getContentType().getMimeType()).isEqualTo(mimeType);
		}
		assertThat(entity.getFileName()).isEqualTo(fileName);
	}

}

Analyze Your Own Codebase

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

Try Supermodel Free