mirror of
https://github.com/netdata/netdata.git
synced 2025-05-01 16:09:52 +00:00
155 lines
4.2 KiB
JavaScript
155 lines
4.2 KiB
JavaScript
"use strict";
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
var netdata = require("../../node.d/node_modules/netdata");
|
|
// remember: subject will be a singleton!
|
|
var subject = require("../../node.d/fronius.node");
|
|
|
|
var service = netdata.service({
|
|
name: "validation",
|
|
module: this
|
|
});
|
|
|
|
describe("fronius response validation", function () {
|
|
|
|
it("should do nothing if response is null", function () {
|
|
netdata.send = jasmine.createSpy("send");
|
|
|
|
subject.processResponse(service, null);
|
|
var result = netdata.send.calls.count();
|
|
|
|
expect(result).toBe(0);
|
|
});
|
|
|
|
it("should return null if response is null", function () {
|
|
var result = subject.convertToJson(null);
|
|
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it("should return null and log error if response cannot be parsed", function () {
|
|
netdata.error = jasmine.createSpy("error");
|
|
|
|
// trailing commas are enough to create syntax exceptions
|
|
var result = subject.convertToJson("{name,}");
|
|
|
|
expect(result).toBeNull();
|
|
expect(netdata.error.calls.count()).toBe(1);
|
|
});
|
|
|
|
it("should return true if response is valid", function () {
|
|
var result = subject.isResponseValid({
|
|
"Body": {
|
|
"Data": {
|
|
"Site": {
|
|
"Mode": "meter"
|
|
},
|
|
"Inverters": {
|
|
"1": {}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
expect(result).toBeTruthy();
|
|
});
|
|
|
|
it("should return false if response is missing data", function () {
|
|
var result = subject.isResponseValid({
|
|
"Body": {}
|
|
});
|
|
|
|
expect(result).toBeFalsy();
|
|
});
|
|
|
|
it("should return false if response is missing inverter", function () {
|
|
var result = subject.isResponseValid({
|
|
"Body": {
|
|
"Data": {
|
|
"Site": {}
|
|
}
|
|
}
|
|
});
|
|
|
|
expect(result).toBeFalsy();
|
|
});
|
|
|
|
it("should return false if response is missing inverter", function () {
|
|
var result = subject.isResponseValid({
|
|
"Body": {
|
|
"Data": {
|
|
"Inverters": {}
|
|
}
|
|
}
|
|
});
|
|
|
|
expect(result).toBeFalsy();
|
|
});
|
|
|
|
});
|
|
|
|
describe("fronius configuration validation", function () {
|
|
|
|
it("should return 0 if there are no servers configured", function () {
|
|
var result = subject.configure({});
|
|
|
|
expect(result).toBe(0);
|
|
});
|
|
|
|
it("should return 0 if the servers array is empty", function () {
|
|
var result = subject.configure({
|
|
"servers": []
|
|
});
|
|
|
|
expect(result).toBe(0);
|
|
});
|
|
|
|
it("should return 0 if there is one server configured incorrectly", function () {
|
|
var result = subject.configure({
|
|
"servers": [{}]
|
|
});
|
|
|
|
expect(result).toBe(0);
|
|
});
|
|
|
|
it("should return 1 if there is one server configured", function () {
|
|
subject.serviceExecute = jasmine.createSpy("serviceExecute");
|
|
var name = "solar1";
|
|
var result = subject.configure({
|
|
"servers": [{
|
|
"name": name,
|
|
"api_path": "/api/",
|
|
"hostname": "solar1.local"
|
|
}]
|
|
});
|
|
|
|
expect(result).toBe(1);
|
|
expect(subject.serviceExecute).toHaveBeenCalledWith(name, "solar1.local/api/", 5);
|
|
});
|
|
|
|
it("should return 2 if there are two servers configured", function () {
|
|
subject.serviceExecute = jasmine.createSpy("serviceExecute");
|
|
var name1 = "solar 1";
|
|
var name2 = "solar 2";
|
|
var result = subject.configure({
|
|
"servers": [
|
|
{
|
|
"name": name1,
|
|
"api_path": "/",
|
|
"hostname": "solar1.local"
|
|
},
|
|
{
|
|
"name": name2,
|
|
"api_path": "/",
|
|
"hostname": "solar2.local",
|
|
"update_every": 3
|
|
}
|
|
]
|
|
});
|
|
|
|
expect(result).toBe(2);
|
|
expect(subject.serviceExecute).toHaveBeenCalledWith(name1, "solar1.local/", 5);
|
|
expect(subject.serviceExecute).toHaveBeenCalledWith(name2, "solar2.local/", 3);
|
|
});
|
|
|
|
});
|