diff --git a/README.md b/README.md index 927b44b..d098345 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # QR-code Generator and Reader -## Application used [Java 15](https://onurdesk.com/what-are-preview-features-in-java-15/) | [Onurdesk](https://onurdesk.com/) +## Application used [Java 17](https://onurdesk.com/what-are-preview-features-in-java-17/) and Spring Boot 3.5.0 | [Onurdesk](https://onurdesk.com/) -###### Spring boot application exposing REST API endpoint to genrate QR-code representing custom message and another endpoint to read the decoded message, built using Java [Spring boot](https://onurdesk.com/category/spring/spring-boot/) and [google's zxing library](https://opensource.google/projects/zxing). +###### Spring boot application exposing REST API endpoint to genrate QR-code representing custom message and another endpoint to read the decoded message, built using Java, [Spring Boot 3.5.0](https://spring.io/projects/spring-boot/) and [google's zxing library](https://opensource.google/projects/zxing).
Running Application @@ -10,7 +10,7 @@ ## Local Setup -* Install [Java 15](https://onurdesk.com/what-are-preview-features-in-java-15/) +* Install [Java 17](https://onurdesk.com/what-are-preview-features-in-java-17/) * Install [Maven](https://onurdesk.com/what-is-maven-plugin/) Recommended way is to use [sdkman](https://sdkman.io/) for installing both maven and java @@ -33,3 +33,27 @@ Go to the below url to view swagger-ui (API docs) ``` http://localhost:9090/swagger-ui.html ``` + +## Testing + +The core QR code generation and reading functionalities are tested in `src/test/java/com/onurdesk/iris/service/QrCodeServiceTests.java`. These tests cover: + +* **Positive Scenarios:** + * Successful QR code generation with valid text input. + * Successful reading and decoding of a valid QR code image. +* **Negative Scenarios:** + * Attempting QR code generation with null or invalid DTO. + * Handling of empty title during QR code generation. + * Attempting to read invalid image files (not images or not QR codes). + * Attempting to read QR codes with unexpected content (not deserializable to the expected DTO). + * Handling I/O exceptions during file reading. + +### Running Tests + +You can run the tests using Maven: + +```bash +mvn test +``` + +Alternatively, running `mvn clean install` will also execute the tests as part of the build lifecycle. diff --git a/pom.xml b/pom.xml index ac30b74..6c354db 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 2.5.0 + 3.5.0 com.onurdesk @@ -15,7 +15,7 @@ spring-boot-qr-code-generator-reader Spring Boot Application exposing REST APi endpoints to generate QR code representing custom messages and another endpoint to read it. - 15 + 17 @@ -43,8 +43,8 @@ org.springdoc - springdoc-openapi-ui - 1.5.8 + springdoc-openapi-starter-webmvc-ui + 2.5.0 org.springframework.boot diff --git a/src/main/java/com/onurdesk/iris/controller/QrCodeController.java b/src/main/java/com/onurdesk/iris/controller/QrCodeController.java index 7f5c9c4..a93700f 100644 --- a/src/main/java/com/onurdesk/iris/controller/QrCodeController.java +++ b/src/main/java/com/onurdesk/iris/controller/QrCodeController.java @@ -2,8 +2,8 @@ import java.io.IOException; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.java b/src/main/java/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.java index e428b9a..25a17b6 100644 --- a/src/main/java/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.java +++ b/src/main/java/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.java @@ -1,7 +1,7 @@ package com.onurdesk.iris.dto; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; import com.fasterxml.jackson.databind.annotation.JacksonStdImpl; diff --git a/src/main/java/com/onurdesk/iris/service/QrCodeService.java b/src/main/java/com/onurdesk/iris/service/QrCodeService.java index 9f136be..a9a30b6 100644 --- a/src/main/java/com/onurdesk/iris/service/QrCodeService.java +++ b/src/main/java/com/onurdesk/iris/service/QrCodeService.java @@ -5,7 +5,7 @@ import java.io.IOException; import javax.imageio.ImageIO; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; @@ -42,6 +42,7 @@ public void generate(final QrCodeGenerationRequestDto qrCodeGenerationRequestDto final HttpServletResponse httpServletResponse) throws IOException, WriterException { httpServletResponse.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + qrCodeGenerationRequestDto.getTitle().trim().replace(" ", "_") + ".png"); + httpServletResponse.setContentType("image/png"); // Explicitly set content type final var outputStream = new BufferedOutputStream(httpServletResponse.getOutputStream()); QRCodeWriter writer = new QRCodeWriter(); diff --git a/src/test/java/com/onurdesk/iris/service/QrCodeServiceTests.java b/src/test/java/com/onurdesk/iris/service/QrCodeServiceTests.java new file mode 100644 index 0000000..497db77 --- /dev/null +++ b/src/test/java/com/onurdesk/iris/service/QrCodeServiceTests.java @@ -0,0 +1,197 @@ +package com.onurdesk.iris.service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import com.onurdesk.iris.dto.QrCodeGenerationRequestDto; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.web.multipart.MultipartFile; + +import javax.imageio.ImageIO; +import jakarta.servlet.ServletOutputStream; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QrCodeServiceTests { + + @InjectMocks + private QrCodeService qrCodeService; + + private QrCodeGenerationRequestDto sampleDto; + private ObjectMapper objectMapper = new ObjectMapper(); + + @BeforeEach + void setUp() { + sampleDto = QrCodeGenerationRequestDto.builder() + .title("Test QR") + .message("This is a test payload") // Assuming 'payload' maps to 'message' in DTO based on schema + .generatedByName("JUnit") // Assuming 'generatedBy' maps to 'generatedByName' + .generatedForName("Test Target") // Adding a value for this field + .build(); + } + + @Test + void testGenerateQrCode_success() throws IOException, WriterException { + MockHttpServletResponse mockResponse = new MockHttpServletResponse(); + + qrCodeService.generate(sampleDto, mockResponse); + + assertEquals("attachment;filename=Test_QR.png", mockResponse.getHeader(HttpHeaders.CONTENT_DISPOSITION)); + assertEquals("image/png", mockResponse.getContentType()); // MatrixToImageWriter sets this implicitly + + // Verify the output stream contains PNG data (basic check for non-empty) + assertTrue(mockResponse.getContentAsByteArray().length > 0); + + // Further verification could involve trying to read the byte array as an image + // and potentially decoding it, but that might be too much for a unit test. + // For now, we trust that if MatrixToImageWriter.writeToStream ran without error + // and produced bytes, it's likely correct. + + // We can also try to verify the content of the QR code if we mock the writer part. + // Let's try to capture the string passed to the QRCodeWriter.encode + // This requires QRCodeWriter to be a mock or using a static mock for MatrixToImageWriter + // For simplicity, the current check on headers and non-empty output is a good start. + } + + @Test + void testGenerateQrCode_nullDto() { + MockHttpServletResponse mockResponse = new MockHttpServletResponse(); + assertThrows(NullPointerException.class, () -> { + // The ObjectMapper().writeValueAsString(null) will throw NullPointerException + qrCodeService.generate(null, mockResponse); + }); + } + + @Test + void testGenerateQrCode_emptyTitleInDto() throws IOException, WriterException { + MockHttpServletResponse mockResponse = new MockHttpServletResponse(); + QrCodeGenerationRequestDto dtoWithEmptyTitle = QrCodeGenerationRequestDto.builder() + .title("") // Empty title + .message("Some payload") + .generatedByName("JUnit") + .generatedForName("Test Target") + .build(); + + qrCodeService.generate(dtoWithEmptyTitle, mockResponse); + + // Expecting "attachment;filename=.png" or similar, depending on implementation logic for empty title + assertEquals("attachment;filename=.png", mockResponse.getHeader(HttpHeaders.CONTENT_DISPOSITION)); + assertTrue(mockResponse.getContentAsByteArray().length > 0); + } + + + @Test + void testReadQrCode_success() throws Exception { + // 1. Prepare a valid QR code image as byte array + String originalContent = objectMapper.writeValueAsString(sampleDto); + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode(originalContent, BarcodeFormat.QR_CODE, 200, 200); + ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); + byte[] qrCodeBytes = pngOutputStream.toByteArray(); + + // 2. Mock MultipartFile + MultipartFile multipartFile = mock(MultipartFile.class); + when(multipartFile.getInputStream()).thenReturn(new ByteArrayInputStream(qrCodeBytes)); + + // 3. Call read method + ResponseEntity responseEntity = qrCodeService.read(multipartFile); + + // 4. Assertions + assertNotNull(responseEntity); + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + assertTrue(responseEntity.getBody() instanceof QrCodeGenerationRequestDto); + QrCodeGenerationRequestDto resultDto = (QrCodeGenerationRequestDto) responseEntity.getBody(); + assertEquals(sampleDto.getTitle(), resultDto.getTitle()); + assertEquals(sampleDto.getMessage(), resultDto.getMessage()); // Changed from getPayload to getMessage + assertEquals(sampleDto.getGeneratedByName(), resultDto.getGeneratedByName()); // Changed from getGeneratedBy + } + + @Test + void testReadQrCode_invalidImageFormat() throws IOException { + MultipartFile multipartFile = mock(MultipartFile.class); + // Simulate a file that is not a valid image (e.g., random bytes) + byte[] invalidImageBytes = "This is not an image".getBytes(); + when(multipartFile.getInputStream()).thenReturn(new ByteArrayInputStream(invalidImageBytes)); + + // ImageIO.read is expected to return null for non-image formats it doesn't understand + // which will then cause NullPointerException in BufferedImageLuminanceSource constructor + assertThrows(NullPointerException.class, () -> { + qrCodeService.read(multipartFile); + }, "Should throw NullPointerException when ImageIO.read returns null for invalid image format that is not decodable by ImageIO"); + } + + @Test + void testReadQrCode_notAQrCode() throws IOException { + // Create a valid PNG image, but not a QR code (e.g., a blank image) + BufferedImage blankImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(blankImage, "png", baos); + byte[] blankImageBytes = baos.toByteArray(); + + MultipartFile multipartFile = mock(MultipartFile.class); + when(multipartFile.getInputStream()).thenReturn(new ByteArrayInputStream(blankImageBytes)); + + // Expect NotFoundException because MultiFormatReader won't find a QR code + assertThrows(com.google.zxing.NotFoundException.class, () -> { + qrCodeService.read(multipartFile); + }); + } + + @Test + void testReadQrCode_ioExceptionOnInputStream() throws IOException { + MultipartFile multipartFile = mock(MultipartFile.class); + when(multipartFile.getInputStream()).thenThrow(new IOException("Failed to read input stream")); + + assertThrows(IOException.class, () -> { + qrCodeService.read(multipartFile); + }); + } + + @Test + void testReadQrCode_unexpectedContent() throws Exception { + // 1. Prepare a QR code with content that is not a valid JSON for QrCodeGenerationRequestDto + String nonJsonContent = "Just some plain text, not JSON"; + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode(nonJsonContent, BarcodeFormat.QR_CODE, 200, 200); + ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); + byte[] qrCodeBytes = pngOutputStream.toByteArray(); + + // 2. Mock MultipartFile + MultipartFile multipartFile = mock(MultipartFile.class); + when(multipartFile.getInputStream()).thenReturn(new ByteArrayInputStream(qrCodeBytes)); + + // 3. Call read method and expect a Jackson mapping/parsing exception + // The service tries to map result.getText() to QrCodeGenerationRequestDto.class + // This will fail if the text is not a JSON representation of that DTO. + assertThrows(com.fasterxml.jackson.core.JsonProcessingException.class, () -> { // Changed to broader JsonProcessingException + qrCodeService.read(multipartFile); + }); + } +} diff --git a/target/classes/META-INF/spring-configuration-metadata.json b/target/classes/META-INF/spring-configuration-metadata.json new file mode 100644 index 0000000..a10f1df --- /dev/null +++ b/target/classes/META-INF/spring-configuration-metadata.json @@ -0,0 +1,57 @@ +{ + "groups": [ + { + "name": "com.onurdesk.iris.swagger", + "type": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties" + }, + { + "name": "com.onurdesk.iris.swagger.properties", + "type": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties", + "sourceMethod": "getProperties()" + }, + { + "name": "com.onurdesk.iris.swagger.properties.contact", + "type": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties$Contact", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties", + "sourceMethod": "getContact()" + } + ], + "properties": [ + { + "name": "com.onurdesk.iris.swagger.properties.api-version", + "type": "java.lang.String", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties" + }, + { + "name": "com.onurdesk.iris.swagger.properties.contact.email", + "type": "java.lang.String", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties$Contact" + }, + { + "name": "com.onurdesk.iris.swagger.properties.contact.name", + "type": "java.lang.String", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties$Contact" + }, + { + "name": "com.onurdesk.iris.swagger.properties.contact.url", + "type": "java.lang.String", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties$Contact" + }, + { + "name": "com.onurdesk.iris.swagger.properties.description", + "type": "java.lang.String", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties" + }, + { + "name": "com.onurdesk.iris.swagger.properties.title", + "type": "java.lang.String", + "sourceType": "com.onurdesk.iris.configuration.properties.OpenApiConfigurationProperties$Properties" + } + ], + "hints": [], + "ignored": { + "properties": [] + } +} \ No newline at end of file diff --git a/target/classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplication.class b/target/classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplication.class index ec91067..8f38ca1 100644 Binary files a/target/classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplication.class and b/target/classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplication.class differ diff --git a/target/classes/com/onurdesk/iris/configuration/OpenApiConfiguration.class b/target/classes/com/onurdesk/iris/configuration/OpenApiConfiguration.class index 58a9bdc..31e4249 100644 Binary files a/target/classes/com/onurdesk/iris/configuration/OpenApiConfiguration.class and b/target/classes/com/onurdesk/iris/configuration/OpenApiConfiguration.class differ diff --git a/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties$Contact.class b/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties$Contact.class index b69dbd9..59f9e79 100644 Binary files a/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties$Contact.class and b/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties$Contact.class differ diff --git a/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties.class b/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties.class index df6794a..3c410e7 100644 Binary files a/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties.class and b/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties$Properties.class differ diff --git a/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties.class b/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties.class index ba4902f..c41a36d 100644 Binary files a/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties.class and b/target/classes/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties.class differ diff --git a/target/classes/com/onurdesk/iris/controller/QrCodeController.class b/target/classes/com/onurdesk/iris/controller/QrCodeController.class index 00cc80a..685c704 100644 Binary files a/target/classes/com/onurdesk/iris/controller/QrCodeController.class and b/target/classes/com/onurdesk/iris/controller/QrCodeController.class differ diff --git a/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto$QrCodeGenerationRequestDtoBuilder.class b/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto$QrCodeGenerationRequestDtoBuilder.class new file mode 100644 index 0000000..1016245 Binary files /dev/null and b/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto$QrCodeGenerationRequestDtoBuilder.class differ diff --git a/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.class b/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.class index e09be29..12393d4 100644 Binary files a/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.class and b/target/classes/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.class differ diff --git a/target/classes/com/onurdesk/iris/exception/handler/GenericExceptionHandler.class b/target/classes/com/onurdesk/iris/exception/handler/GenericExceptionHandler.class index f5f7652..a43bcad 100644 Binary files a/target/classes/com/onurdesk/iris/exception/handler/GenericExceptionHandler.class and b/target/classes/com/onurdesk/iris/exception/handler/GenericExceptionHandler.class differ diff --git a/target/classes/com/onurdesk/iris/exception/handler/ValidationFailureExceptionHandler.class b/target/classes/com/onurdesk/iris/exception/handler/ValidationFailureExceptionHandler.class index 027a215..1f09a71 100644 Binary files a/target/classes/com/onurdesk/iris/exception/handler/ValidationFailureExceptionHandler.class and b/target/classes/com/onurdesk/iris/exception/handler/ValidationFailureExceptionHandler.class differ diff --git a/target/classes/com/onurdesk/iris/service/QrCodeService.class b/target/classes/com/onurdesk/iris/service/QrCodeService.class index 52f65bf..4cdafb4 100644 Binary files a/target/classes/com/onurdesk/iris/service/QrCodeService.class and b/target/classes/com/onurdesk/iris/service/QrCodeService.class differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..7d952d8 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +META-INF/spring-configuration-metadata.json +com/onurdesk/iris/dto/QrCodeGenerationRequestDto$QrCodeGenerationRequestDtoBuilder.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..53408bd --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,8 @@ +/app/src/main/java/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplication.java +/app/src/main/java/com/onurdesk/iris/configuration/OpenApiConfiguration.java +/app/src/main/java/com/onurdesk/iris/configuration/properties/OpenApiConfigurationProperties.java +/app/src/main/java/com/onurdesk/iris/controller/QrCodeController.java +/app/src/main/java/com/onurdesk/iris/dto/QrCodeGenerationRequestDto.java +/app/src/main/java/com/onurdesk/iris/exception/handler/GenericExceptionHandler.java +/app/src/main/java/com/onurdesk/iris/exception/handler/ValidationFailureExceptionHandler.java +/app/src/main/java/com/onurdesk/iris/service/QrCodeService.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..ef1836e --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1 @@ +com/onurdesk/iris/service/QrCodeServiceTests.class diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..16de772 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1,2 @@ +/app/src/test/java/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplicationTests.java +/app/src/test/java/com/onurdesk/iris/service/QrCodeServiceTests.java diff --git a/target/surefire-reports/TEST-com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests.xml b/target/surefire-reports/TEST-com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests.xml new file mode 100644 index 0000000..bbe6352 --- /dev/null +++ b/target/surefire-reports/TEST-com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.onurdesk.iris.service.QrCodeServiceTests.xml b/target/surefire-reports/TEST-com.onurdesk.iris.service.QrCodeServiceTests.xml new file mode 100644 index 0000000..640653d --- /dev/null +++ b/target/surefire-reports/TEST-com.onurdesk.iris.service.QrCodeServiceTests.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/surefire-reports/com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests.txt b/target/surefire-reports/com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests.txt new file mode 100644 index 0000000..2f752d1 --- /dev/null +++ b/target/surefire-reports/com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.685 s -- in com.onurdesk.iris.SpringBootQrCodeGeneratorReaderApplicationTests diff --git a/target/surefire-reports/com.onurdesk.iris.service.QrCodeServiceTests.txt b/target/surefire-reports/com.onurdesk.iris.service.QrCodeServiceTests.txt new file mode 100644 index 0000000..e9acdd9 --- /dev/null +++ b/target/surefire-reports/com.onurdesk.iris.service.QrCodeServiceTests.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.onurdesk.iris.service.QrCodeServiceTests +------------------------------------------------------------------------------- +Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.827 s -- in com.onurdesk.iris.service.QrCodeServiceTests diff --git a/target/test-classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplicationTests.class b/target/test-classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplicationTests.class index e5acd1a..48e08e5 100644 Binary files a/target/test-classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplicationTests.class and b/target/test-classes/com/onurdesk/iris/SpringBootQrCodeGeneratorReaderApplicationTests.class differ diff --git a/target/test-classes/com/onurdesk/iris/service/QrCodeServiceTests.class b/target/test-classes/com/onurdesk/iris/service/QrCodeServiceTests.class new file mode 100644 index 0000000..48f2705 Binary files /dev/null and b/target/test-classes/com/onurdesk/iris/service/QrCodeServiceTests.class differ