Selaa lähdekoodia

add gateway api endpoint jest and supertest

mehmet.kirkoca 2 vuotta sitten
vanhempi
sitoutus
c19fc8cafb

+ 7 - 2
services/gateway/package.json

@@ -2,9 +2,10 @@
     "name": "api-gateway",
     "version": "1.0.0",
     "description": "",
-    "main": "index.js",
+    "main": "start.js",
     "scripts": {
-        "start": "nodemon index.js"
+        "start": "nodemon start.js",
+        "test": "jest --forceExit"
     },
     "dependencies": {
         "amqplib": "^0.10.3",
@@ -13,5 +14,9 @@
     },
     "engines": {
         "node": ">=12.0.0"
+    },
+    "devDependencies": {
+        "jest": "^29.6.4",
+        "supertest": "^6.3.3"
     }
 }

+ 4 - 10
services/gateway/index.js → services/gateway/server.js

@@ -1,21 +1,15 @@
-const fastify = require('fastify')();
+const app = require('fastify')();
 const RabbitMQProducer = require('./utils/RabbitMQProducer');
 let rabbitMQProducer = new RabbitMQProducer();
 
-fastify.post('/', async (request, reply) => {
+app.post('/', async (request, reply) => {
   try {
     await rabbitMQProducer.sendMessage('formatter', request.body.message);
-    reply.send({ status: 'Message Send' });
+    reply.send({ status: 'ok' });
   } catch (error) {
     console.error('Error handling POST request:', error);
     reply.status(500).send({ error: 'Internal Server Error' });
   }
 });
 
-fastify.listen(8084, 'gateway', (err, address) => {
-  if (err) {
-    console.error(err);
-    process.exit(1);
-  }
-  console.log(`Gateway api service workin on ${address}`);
-});
+module.exports = app;

+ 9 - 0
services/gateway/start.js

@@ -0,0 +1,9 @@
+const app = require("./server.js");
+
+app.listen(8084, 'gateway', (err, address) => {
+    if (err) {
+        console.error(err);
+        process.exit(1);
+    }
+    console.log(`Gateway api service workin on ${address}`);
+});

+ 17 - 0
services/gateway/tests/gateway.test.js

@@ -0,0 +1,17 @@
+const app = require("../server");
+const supertest = require("supertest");
+const request = supertest(app.server);
+
+beforeAll(async () => {
+    await app.ready();
+});
+
+it("send test message to endpoint", async() => {
+    const response = await request.post('/').send({message: "test"});
+    expect(response.status).toBe(200);
+    expect(response.body.status).toBe("ok");
+});
+
+afterAll(async () => {
+    await app.close();
+});

+ 4 - 1
services/utils/RabbitMQProducer.js

@@ -8,7 +8,7 @@ class RabbitMQProducer {
 
   async connect() {
     this.rabbitmqConnector = new RabbitMQConnector();
-    this.rabbitmqConnector.connect();
+    await this.rabbitmqConnector.connect();
   }
 
   async disconnect() { 
@@ -16,6 +16,9 @@ class RabbitMQProducer {
   }
 
   async publishToQueue(queueName, message) {
+    if(this.rabbitmqConnector.channel === null) {
+      await this.connect();
+    }
     try {
       await this.rabbitmqConnector.channel.assertQueue(queueName, { durable: true });
       this.rabbitmqConnector.channel.sendToQueue(queueName, Buffer.from(message));