From 60ad28592dd7c32c2eec5bda6b528cfdede16946 Mon Sep 17 00:00:00 2001 From: Jeffrey Koehler Date: Mon, 25 Oct 2021 20:27:06 -0500 Subject: [PATCH] pushy tests --- server/notification-providers/pushy.js | 7 +- server/notification-providers/pushy.spec.js | 157 +++++++++++++++++++- 2 files changed, 153 insertions(+), 11 deletions(-) diff --git a/server/notification-providers/pushy.js b/server/notification-providers/pushy.js index 2bb8993..f18c915 100644 --- a/server/notification-providers/pushy.js +++ b/server/notification-providers/pushy.js @@ -6,7 +6,6 @@ class Pushy extends NotificationProvider { name = "pushy"; async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { - let okMsg = "Sent Successfully."; try { await axios.post(`https://api.pushy.me/push?api_key=${notification.pushyAPIKey}`, { @@ -19,10 +18,10 @@ class Pushy extends NotificationProvider { "badge": 1, "sound": "ping.aiff" } - }) - return okMsg; + }); + return this.sendSuccess; } catch (error) { - this.throwGeneralAxiosError(error) + this.throwGeneralAxiosError(error); } } } diff --git a/server/notification-providers/pushy.spec.js b/server/notification-providers/pushy.spec.js index 477e2ce..4fada3d 100644 --- a/server/notification-providers/pushy.spec.js +++ b/server/notification-providers/pushy.spec.js @@ -1,14 +1,15 @@ -// jest.mock("nodemailer", () => ({ -// createTransport: jest.fn(), -// })); +jest.mock("axios", () => ({ + post: jest.fn(), +})); -// const mockNodeMailer = require("nodemailer"); - -const Pushy = require("./pushy"); +const axios = require("axios"); +const { UP, DOWN } = require("../../src/util"); +const NotificationSend = require("../notification"); beforeEach(() => { - // mockNodeMailer.createTransport.mockReset(); + axios.post.mockReset(); }); +const Pushy = require("./pushy"); describe("notification default information", () => { it("should have the correct name", () => { @@ -16,3 +17,145 @@ describe("notification default information", () => { expect(notification.name).toBe("pushy"); }); }); + +describe("notification to act properly on send", () => { + it("should call axios with the proper default data", async () => { + + let response = { + data: { + Message: "OK" + } + }; + axios.post.mockResolvedValueOnce(response); + + let notif = new Pushy(); + let notificationConf = { + pushyAPIKey: "key", + pushyToken: "token" + }; + let monitorConf = { + }; + let heartbeatConf = { + }; + let msg = "PassedInMessage😀"; + let res = await notif.send(notificationConf, msg, monitorConf, heartbeatConf); + + expect(axios.post).toHaveBeenCalledWith("https://api.pushy.me/push?api_key=key", { + "data": { + "message": "Uptime-Kuma", + }, + "notification": { + "badge": 1, + "body": "PassedInMessage😀", + "sound": "ping.aiff", + }, + "to": "token", + }); + expect(res).toBe("Sent Successfully."); + }); + + it("should call axios with the proper data when monitor nil", async () => { + let response = { + data: { + Message: "OK" + } + }; + axios.post.mockResolvedValueOnce(response); + + let notif = new Pushy(); + let notificationConf = { + pushyAPIKey: "key", + pushyToken: "token" + }; + + let msg = "PassedInMessage😀"; + + let res = await notif.send(notificationConf, msg, null, null); + + expect(axios.post).toHaveBeenCalledWith("https://api.pushy.me/push?api_key=key", { + "data": { + "message": "Uptime-Kuma", + }, + "notification": { + "badge": 1, + "body": "PassedInMessage😀", + "sound": "ping.aiff", + }, + "to": "token", + }); + expect(res).toBe("Sent Successfully."); + }); + +}); + +describe("notification to act properly on error", () => { + it("should respond with an axios error on error", async () => { + + axios.post.mockImplementation(() => { + throw new Error("Test Error"); + }); + let notif = new Pushy(); + let notificationConf = { + pushyAPIKey: "key", + pushyToken: "token" + }; + let msg = "PassedInMessage😀"; + + try { + await notif.send(notificationConf, msg, null, null); + expect("Error thrown").toBe(false); + } catch (e) { + expect(e.message).toBe("Error: Error: Test Error "); + } + + expect(axios.post).toHaveBeenCalledWith("https://api.pushy.me/push?api_key=key", { + "data": { + "message": "Uptime-Kuma", + }, + "notification": { + "badge": 1, + "body": "PassedInMessage😀", + "sound": "ping.aiff", + }, + "to": "token", + }); + }); + +}); + +describe("notification to get proper data from Notification.send", () => { + it("should call axios with proper data", async () => { + let response = { + data: { + Message: "OK" + } + }; + axios.post.mockResolvedValueOnce(response); + let notificationConf = { + type: "pushy", + pushyAPIKey: "key", + pushyToken: "token" + }; + let monitorConf = { + }; + let heartbeatConf = { + }; + let msg = "PassedInMessage😀"; + + NotificationSend.Notification.init(); + let res = await NotificationSend.Notification.send(notificationConf, msg, monitorConf, heartbeatConf); + expect(axios.post).toHaveBeenCalledWith("https://api.pushy.me/push?api_key=key", { + "data": { + "message": "Uptime-Kuma", + }, + "notification": { + "badge": 1, + "body": "PassedInMessage😀", + "sound": "ping.aiff", + }, + "to": "token", + }); + expect(res).toBe("Sent Successfully."); + }); + +});