From e03289fe841dc3c06c1cf7e73825426520cfaab6 Mon Sep 17 00:00:00 2001
From: Matej Hrica <492778@mail.muni.cz>
Date: Sun, 26 Mar 2023 23:25:14 +0200
Subject: [PATCH] Add report integration tests

---
 .../report/server/ReportApplicationTests.java | 13 ---
 .../muni/fi/pa165/report/server/ReportIT.java | 99 +++++++++++++++++++
 2 files changed, 99 insertions(+), 13 deletions(-)
 delete mode 100644 report/src/test/java/cz/muni/fi/pa165/report/server/ReportApplicationTests.java
 create mode 100644 report/src/test/java/cz/muni/fi/pa165/report/server/ReportIT.java

diff --git a/report/src/test/java/cz/muni/fi/pa165/report/server/ReportApplicationTests.java b/report/src/test/java/cz/muni/fi/pa165/report/server/ReportApplicationTests.java
deleted file mode 100644
index 8708f43..0000000
--- a/report/src/test/java/cz/muni/fi/pa165/report/server/ReportApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cz.muni.fi.pa165.report.server;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class ReportApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}
diff --git a/report/src/test/java/cz/muni/fi/pa165/report/server/ReportIT.java b/report/src/test/java/cz/muni/fi/pa165/report/server/ReportIT.java
new file mode 100644
index 0000000..99c3434
--- /dev/null
+++ b/report/src/test/java/cz/muni/fi/pa165/report/server/ReportIT.java
@@ -0,0 +1,99 @@
+package cz.muni.fi.pa165.report.server;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import com.fasterxml.jackson.databind.ObjectMapper;;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.test.web.servlet.MockMvc;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+/**
+ * Integration tests. Run by "maven verify".
+ */
+@SpringBootTest
+@AutoConfigureMockMvc
+class ReportIT {
+
+    private static final Logger log = LoggerFactory.getLogger(ReportIT.class);
+
+    @Autowired
+    private MockMvc mockMvc;
+
+    @Autowired
+    ObjectMapper objectMapper;
+
+    @Test
+    void getReportFlightByIdTest() throws Exception {
+        log.debug("getReportFlightByIdTest() running");
+
+        ClassLoader classLoader = getClass().getClassLoader();
+
+        try(InputStream inputStream = classLoader.getResourceAsStream("sample.pdf")){
+            byte[] bytes = new byte[inputStream.available()];
+            inputStream.read(bytes);
+            ByteArrayResource resource = new ByteArrayResource(bytes);
+            var response = mockMvc.perform(get("/api/reports/flight/1"))
+                    .andExpect(status().isOk())
+                    .andReturn().getResponse().getContentAsByteArray();
+            assertThat(Arrays.equals(response, resource.getByteArray()));
+            log.debug("response: {}", response);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    @Test
+    void getReportAirportByIdTest() throws Exception {
+        log.debug("getReportFlightByIdTest() running");
+
+        ClassLoader classLoader = getClass().getClassLoader();
+
+        try(InputStream inputStream = classLoader.getResourceAsStream("sample.pdf")){
+            byte[] bytes = new byte[inputStream.available()];
+            inputStream.read(bytes);
+            ByteArrayResource resource = new ByteArrayResource(bytes);
+            var response = mockMvc.perform(get("/api/reports/airport/1"))
+                    .andExpect(status().isOk())
+                    .andReturn().getResponse().getContentAsByteArray();
+            assertThat(Arrays.equals(response, resource.getByteArray()));
+            log.debug("response: {}", response);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    @Test
+    void getReportAirplaneByIdTest() throws Exception {
+        log.debug("getReportFlightByIdTest() running");
+
+        ClassLoader classLoader = getClass().getClassLoader();
+
+        try(InputStream inputStream = classLoader.getResourceAsStream("sample.pdf")){
+            byte[] bytes = new byte[inputStream.available()];
+            inputStream.read(bytes);
+            ByteArrayResource resource = new ByteArrayResource(bytes);
+            var response = mockMvc.perform(get("/api/reports/airplane/1"))
+                    .andExpect(status().isOk())
+                    .andReturn().getResponse().getContentAsByteArray();
+            assertThat(Arrays.equals(response, resource.getByteArray()));
+            log.debug("response: {}", response);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+}
-- 
GitLab