From 395ca6817df3559a014157d7448559bb1b2a09f6 Mon Sep 17 00:00:00 2001 From: Mikolaj Widla Date: Thu, 22 Jun 2023 14:11:48 +0200 Subject: [PATCH] Implemented REST Mock tool Co-authored-by: widlam Co-authored-by: Adam Bem Reviewed-on: https://gitea.release11.com/R11/release11-tools/pulls/231 Reviewed-by: Adam Bem Co-authored-by: Mikolaj Widla Co-committed-by: Mikolaj Widla --- .../r11/tools/controller/MockController.java | 6 +- Frontend/Dockerfile | 10 +++ Frontend/nginx.conf | 5 ++ Frontend/package.json | 2 +- Frontend/src/App.vue | 2 +- .../components/mock/BodyDetailComponent.vue | 15 ++++ .../src/components/mock/HeadersComponent.vue | 62 +++++++++++++++ .../mock/HeadersDetailComponent.vue | 23 ++++++ .../src/components/mock/HistoryComponent.vue | 40 ++++++++++ .../src/components/mock/HistoryRecords.vue | 63 ++++++++++++++++ .../mock/MockedMessageToastComponent.vue | 36 +++++++++ .../src/components/mock/RestMockComponent.vue | 10 --- .../mock/RestMockMessageComponent.vue | 72 ++++++++++++++++++ .../src/components/mock/SaveComponent.vue | 46 ++++++++++++ .../components/xml/XmlInputFieldComponent.vue | 2 +- Frontend/src/router/index.ts | 5 ++ Frontend/src/style.css | 4 +- Frontend/src/views/JsonFormatterView.vue | 2 +- Frontend/src/views/RestMockView.vue | 14 ++-- Frontend/src/views/XmlFormatterView.vue | 2 +- Frontend/vite.config.ts | 21 ++++++ dev.sh | 1 + docker-compose.dev.yml | 75 +++++++++++++++++++ docker-compose.yml | 4 +- readme.md | 3 + 25 files changed, 496 insertions(+), 29 deletions(-) create mode 100644 Frontend/src/components/mock/BodyDetailComponent.vue create mode 100644 Frontend/src/components/mock/HeadersComponent.vue create mode 100644 Frontend/src/components/mock/HeadersDetailComponent.vue create mode 100644 Frontend/src/components/mock/HistoryComponent.vue create mode 100644 Frontend/src/components/mock/HistoryRecords.vue create mode 100644 Frontend/src/components/mock/MockedMessageToastComponent.vue delete mode 100644 Frontend/src/components/mock/RestMockComponent.vue create mode 100644 Frontend/src/components/mock/RestMockMessageComponent.vue create mode 100644 Frontend/src/components/mock/SaveComponent.vue create mode 100755 dev.sh create mode 100644 docker-compose.dev.yml diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java index a9af2c3..108815b 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java @@ -36,14 +36,12 @@ public class MockController { /** * Updates queried message with given set of data - * @param body {@link MockedMessageDto} json representation + * @param message {@link MockedMessageDto} json representation * @return confirmation and 200 OK */ @SneakyThrows @PutMapping - public ResponseEntity updateMessage(@RequestBody String body){ - ObjectMapper mapper = new ObjectMapper(); - MockedMessageDto message = mapper.readValue(body, MockedMessageDto.class); + public ResponseEntity updateMessage(@RequestBody MockedMessageDto message){ return klausService.setMockedResponse(message); } diff --git a/Frontend/Dockerfile b/Frontend/Dockerfile index 0af9ce9..0b44b57 100644 --- a/Frontend/Dockerfile +++ b/Frontend/Dockerfile @@ -18,3 +18,13 @@ COPY ./nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 EXPOSE 443 + + +FROM node:latest as dev +WORKDIR /app +COPY package*.json ./ +RUN npm install +ENV HOST=0.0.0.0 +COPY . . +EXPOSE 8080 +CMD ["npm", "run", "dev"] diff --git a/Frontend/nginx.conf b/Frontend/nginx.conf index f2d3d8d..144dee5 100644 --- a/Frontend/nginx.conf +++ b/Frontend/nginx.conf @@ -18,6 +18,11 @@ server { proxy_set_header Host $host; } + location /api/mock { + proxy_pass http://xmltools-mocked-services:8097/api/mock; + proxy_set_header Host $host; + } + location /libxml/ { proxy_pass http://xmltools-libxml-backend/; proxy_set_header Host $host; diff --git a/Frontend/package.json b/Frontend/package.json index 37b53fe..dc3c3f1 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "run-p type-check build-only", "preview": "vite preview", "build-only": "vite build", diff --git a/Frontend/src/App.vue b/Frontend/src/App.vue index 2a93a0a..31e6146 100644 --- a/Frontend/src/App.vue +++ b/Frontend/src/App.vue @@ -8,7 +8,7 @@ import SidebarComponent from '@components/sidebar/SidebarComponent.vue'; \ No newline at end of file diff --git a/Frontend/src/router/index.ts b/Frontend/src/router/index.ts index 3f9f65d..99858a0 100644 --- a/Frontend/src/router/index.ts +++ b/Frontend/src/router/index.ts @@ -47,6 +47,11 @@ const routes = [ name: 'xslt', component: () => xsltTool }, + { + path: '/rest/mock', + name: 'restmock', + component: () => restMock + } ] diff --git a/Frontend/src/style.css b/Frontend/src/style.css index 03ecf9e..9f2f873 100644 --- a/Frontend/src/style.css +++ b/Frontend/src/style.css @@ -3,9 +3,9 @@ @tailwind utilities; .tool-button { - @apply py-1 px-4 rounded-full w-fit bg-gradient-to-r from-blue-400 to-blue-300 dark:text-white dark:from-sky-600 dark:to-sky-800 hover:bg-blue-400 + @apply py-1 px-4 rounded-full bg-gradient-to-r from-blue-300 to-sky-200 dark:text-white dark:from-sky-600 dark:to-sky-800 hover:bg-blue-400 } .text-field { - @apply w-full h-full resize-none font-mono bg-white dark:text-slate-100 dark:bg-gray-600 border border-slate-400 p-2 rounded-md + @apply w-full font-mono dark:text-slate-100 dark:bg-gray-600 border border-slate-400 p-2 rounded-lg } \ No newline at end of file diff --git a/Frontend/src/views/JsonFormatterView.vue b/Frontend/src/views/JsonFormatterView.vue index 5c4f345..a389db3 100644 --- a/Frontend/src/views/JsonFormatterView.vue +++ b/Frontend/src/views/JsonFormatterView.vue @@ -31,6 +31,6 @@ function clear() { - + \ No newline at end of file diff --git a/Frontend/src/views/RestMockView.vue b/Frontend/src/views/RestMockView.vue index df7008f..771d134 100644 --- a/Frontend/src/views/RestMockView.vue +++ b/Frontend/src/views/RestMockView.vue @@ -1,14 +1,14 @@ - diff --git a/Frontend/src/views/XmlFormatterView.vue b/Frontend/src/views/XmlFormatterView.vue index 853c0e2..583c334 100644 --- a/Frontend/src/views/XmlFormatterView.vue +++ b/Frontend/src/views/XmlFormatterView.vue @@ -31,6 +31,6 @@ function clear() { - + \ No newline at end of file diff --git a/Frontend/vite.config.ts b/Frontend/vite.config.ts index a096036..adf0c13 100644 --- a/Frontend/vite.config.ts +++ b/Frontend/vite.config.ts @@ -8,6 +8,27 @@ export default defineConfig({ plugins: [ vue(), ], + server:{ + port: 80, + host: '0.0.0.0', + proxy : { + '/java': { + target:'http://xmltools-backend:8081/', + rewrite: (path) => path.replace(/^\/java/, ''), + }, + '/libxml': { + target:'http://xmltools-libxml-backend/', + rewrite: (path) => path.replace(/^\/libxml/, ''), + }, + '/mock': { + target:'http://xmltools-mocked-services:8097/', + rewrite: (path) => path.replace(/^\/mock/, ''), + }, + '/api/mock': { + target: 'http://xmltools-mocked-services:8097/' + } + }, + }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), diff --git a/dev.sh b/dev.sh new file mode 100755 index 0000000..0a22208 --- /dev/null +++ b/dev.sh @@ -0,0 +1 @@ +docker-compose -f docker-compose.dev.yml up --build \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..8aa4ac8 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,75 @@ +version: "3" + +services: + redis: + container_name: xmltools-redis + build: ./Redis + restart: "no" + + xmltools-frontend: + build: + context: ./Frontend + target: dev + container_name: xmltools-frontend + image: xmltools-frontend + ports: + - 80:80 + volumes: + - ./Frontend:/app + - /app/node_modules + xmltools-backend: + build: ./Backend/tools-services + container_name: xmltools-backend + image: xmltools-backend + ports: + - 8081:8081 + + xmltools-libxml-backend: + build: ./Backend-libXML + container_name: xmltools-libxml-backend + image: xmltools-libxml-backend + ports: + - 8082:80 + + xmltools-mocked-services: + build: + context: ./Backend/mocked-services + dockerfile: Dockerfile + container_name: xmltools-mocked-services + restart: "no" + ports: + - "8097:8097" + depends_on: + - redis + environment: + SPRING_PROFILES_ACTIVE: DEV + TZ: Europe/Warsaw + + swagger: + image: "swaggerapi/swagger-ui:latest" + container_name: xmltools-swagger + ports: + - "8000:8080" + environment: + - BASE_URL=/swagger + - SWAGGER_JSON=/Swagger/swagger.json + volumes: + - ./Swagger:/Swagger + + filebeat: + build: ./Filebeat + container_name: xmltools-filebeat + user: root + volumes: + - "./Filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" + - "/var/lib/docker/containers:/var/lib/docker/containers:ro" + - "/var/run/docker.sock:/var/run/docker.sock:ro" + environment: + - ENV_TYPE + command: + - "-e" + - "--strict.perms=false" + +networks: + default: + name: tools_network diff --git a/docker-compose.yml b/docker-compose.yml index 4345161..01f9948 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,9 @@ services: restart: "no" xmltools-frontend: - build: ./Frontend + build: + context: ./Frontend + target: production-stage container_name: xmltools-frontend image: xmltools-frontend ports: diff --git a/readme.md b/readme.md index e0e9ba1..2d61997 100644 --- a/readme.md +++ b/readme.md @@ -41,6 +41,9 @@ within created container. ## How to run +Dev server(with hot-reload frontend): docker-compose -f docker-compose.dev.yml up --build +Prod: docker-compose up --build + ### Localy In order to run application use ```aidl