Added tests for backend
This commit is contained in:
parent
e543e9ceea
commit
3f4203fdf0
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -5,3 +5,5 @@ backend-legacy/config/config-user.php
|
||||||
backend/src/vendor/*
|
backend/src/vendor/*
|
||||||
backend/src/config/ConfigUser.php
|
backend/src/config/ConfigUser.php
|
||||||
backend/src/config/ConfigOverride.php
|
backend/src/config/ConfigOverride.php
|
||||||
|
backend/test/config.sh
|
||||||
|
backend/test/node_modules/
|
||||||
|
|
|
@ -25,7 +25,7 @@ $defaultConfig = [
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
if (file_exists('ConfigOverride.php')) {
|
if (file_exists('../config/ConfigOverride.php')) {
|
||||||
$userConfig = require('ConfigOverride.php');
|
$userConfig = require('ConfigOverride.php');
|
||||||
} else {
|
} else {
|
||||||
$userConfig = require('ConfigUser.php');
|
$userConfig = require('ConfigUser.php');
|
||||||
|
|
288
backend/test/db.sql
Normal file
288
backend/test/db.sql
Normal file
|
@ -0,0 +1,288 @@
|
||||||
|
-- phpMyAdmin SQL Dump
|
||||||
|
-- version 4.5.4.1deb2ubuntu2
|
||||||
|
-- http://www.phpmyadmin.net
|
||||||
|
--
|
||||||
|
-- Host: localhost
|
||||||
|
-- Generation Time: Mar 23, 2018 at 02:29 PM
|
||||||
|
-- Server version: 5.7.21-0ubuntu0.16.04.1
|
||||||
|
-- PHP Version: 7.0.28-0ubuntu0.16.04.1
|
||||||
|
|
||||||
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `comments`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `comments`;
|
||||||
|
CREATE TABLE `comments` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`domain_id` int(11) NOT NULL,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`type` varchar(10) NOT NULL,
|
||||||
|
`modified_at` int(11) NOT NULL,
|
||||||
|
`account` varchar(40) CHARACTER SET utf8 DEFAULT NULL,
|
||||||
|
`comment` text CHARACTER SET utf8 NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `cryptokeys`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `cryptokeys`;
|
||||||
|
CREATE TABLE `cryptokeys` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`domain_id` int(11) NOT NULL,
|
||||||
|
`flags` int(11) NOT NULL,
|
||||||
|
`active` tinyint(1) DEFAULT NULL,
|
||||||
|
`content` text
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `domainmetadata`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `domainmetadata`;
|
||||||
|
CREATE TABLE `domainmetadata` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`domain_id` int(11) NOT NULL,
|
||||||
|
`kind` varchar(32) DEFAULT NULL,
|
||||||
|
`content` text
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `domains`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `domains`;
|
||||||
|
CREATE TABLE `domains` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`master` varchar(128) DEFAULT NULL,
|
||||||
|
`last_check` int(11) DEFAULT NULL,
|
||||||
|
`type` varchar(6) NOT NULL,
|
||||||
|
`notified_serial` int(10) UNSIGNED DEFAULT NULL,
|
||||||
|
`account` varchar(40) CHARACTER SET utf8 DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `domains`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `domains` (`id`, `name`, `master`, `last_check`, `type`, `notified_serial`, `account`) VALUES
|
||||||
|
(1, 'example.com', NULL, NULL, 'MASTER', NULL, NULL),
|
||||||
|
(2, 'slave.example.net', '12.34.56.78', NULL, 'SLAVE', NULL, NULL);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `permissions`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `permissions`;
|
||||||
|
CREATE TABLE `permissions` (
|
||||||
|
`domain_id` int(11) NOT NULL,
|
||||||
|
`user_id` int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `records`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `records`;
|
||||||
|
CREATE TABLE `records` (
|
||||||
|
`id` bigint(20) NOT NULL,
|
||||||
|
`domain_id` int(11) DEFAULT NULL,
|
||||||
|
`name` varchar(255) DEFAULT NULL,
|
||||||
|
`type` varchar(10) DEFAULT NULL,
|
||||||
|
`content` varchar(64000) DEFAULT NULL,
|
||||||
|
`ttl` int(11) DEFAULT NULL,
|
||||||
|
`prio` int(11) DEFAULT NULL,
|
||||||
|
`change_date` int(11) DEFAULT NULL,
|
||||||
|
`disabled` tinyint(1) DEFAULT '0',
|
||||||
|
`ordername` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
|
||||||
|
`auth` tinyint(1) DEFAULT '1'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `records`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `records` (`id`, `domain_id`, `name`, `type`, `content`, `ttl`, `prio`, `change_date`, `disabled`, `ordername`, `auth`) VALUES
|
||||||
|
(1, 1, 'test.example.com', 'A', '12.34.56.78', 86400, 0, 1521645110, 0, NULL, 1);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `supermasters`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `supermasters`;
|
||||||
|
CREATE TABLE `supermasters` (
|
||||||
|
`ip` varchar(64) NOT NULL,
|
||||||
|
`nameserver` varchar(255) NOT NULL,
|
||||||
|
`account` varchar(40) CHARACTER SET utf8 NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `tsigkeys`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `tsigkeys`;
|
||||||
|
CREATE TABLE `tsigkeys` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`name` varchar(255) DEFAULT NULL,
|
||||||
|
`algorithm` varchar(50) DEFAULT NULL,
|
||||||
|
`secret` varchar(255) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `users`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `users`;
|
||||||
|
CREATE TABLE `users` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`name` varchar(50) NOT NULL,
|
||||||
|
`backend` varchar(50) NOT NULL,
|
||||||
|
`type` varchar(20) NOT NULL,
|
||||||
|
`password` varchar(255) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `users`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `users` (`id`, `name`, `backend`, `type`, `password`) VALUES
|
||||||
|
(1, 'admin', 'native', 'admin', '$2y$10$9iIDHWgjY0pEsz8pZLXPx.gkMNDxTMzb7U0Um5hUGjKmUUHWQNXcW');
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for dumped tables
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `comments`
|
||||||
|
--
|
||||||
|
ALTER TABLE `comments`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `comments_name_type_idx` (`name`,`type`),
|
||||||
|
ADD KEY `comments_order_idx` (`domain_id`,`modified_at`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `cryptokeys`
|
||||||
|
--
|
||||||
|
ALTER TABLE `cryptokeys`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `domainidindex` (`domain_id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `domainmetadata`
|
||||||
|
--
|
||||||
|
ALTER TABLE `domainmetadata`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `domainmetadata_idx` (`domain_id`,`kind`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `domains`
|
||||||
|
--
|
||||||
|
ALTER TABLE `domains`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD UNIQUE KEY `name_index` (`name`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `permissions`
|
||||||
|
--
|
||||||
|
ALTER TABLE `permissions`
|
||||||
|
ADD PRIMARY KEY (`user_id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `records`
|
||||||
|
--
|
||||||
|
ALTER TABLE `records`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `nametype_index` (`name`,`type`),
|
||||||
|
ADD KEY `domain_id` (`domain_id`),
|
||||||
|
ADD KEY `ordername` (`ordername`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `supermasters`
|
||||||
|
--
|
||||||
|
ALTER TABLE `supermasters`
|
||||||
|
ADD PRIMARY KEY (`ip`,`nameserver`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `tsigkeys`
|
||||||
|
--
|
||||||
|
ALTER TABLE `tsigkeys`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD UNIQUE KEY `namealgoindex` (`name`,`algorithm`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indexes for table `users`
|
||||||
|
--
|
||||||
|
ALTER TABLE `users`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for dumped tables
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `comments`
|
||||||
|
--
|
||||||
|
ALTER TABLE `comments`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `cryptokeys`
|
||||||
|
--
|
||||||
|
ALTER TABLE `cryptokeys`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `domainmetadata`
|
||||||
|
--
|
||||||
|
ALTER TABLE `domainmetadata`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `domains`
|
||||||
|
--
|
||||||
|
ALTER TABLE `domains`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `records`
|
||||||
|
--
|
||||||
|
ALTER TABLE `records`
|
||||||
|
MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `tsigkeys`
|
||||||
|
--
|
||||||
|
ALTER TABLE `tsigkeys`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT for table `users`
|
||||||
|
--
|
||||||
|
ALTER TABLE `users`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
0
backend/test/logfile.log
Normal file
0
backend/test/logfile.log
Normal file
43
backend/test/package-lock.json
generated
Normal file
43
backend/test/package-lock.json
generated
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"name": "backend-test",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"axios": {
|
||||||
|
"version": "0.18.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
|
||||||
|
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
|
||||||
|
"requires": {
|
||||||
|
"follow-redirects": "1.4.1",
|
||||||
|
"is-buffer": "1.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"follow-redirects": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==",
|
||||||
|
"requires": {
|
||||||
|
"debug": "3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-buffer": {
|
||||||
|
"version": "1.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||||
|
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
|
||||||
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
8
backend/test/package.json
Normal file
8
backend/test/package.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"name": "backend-test",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Dependencies for pdnsmanager test",
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^0.18.0"
|
||||||
|
}
|
||||||
|
}
|
118
backend/test/test.sh
Executable file
118
backend/test/test.sh
Executable file
|
@ -0,0 +1,118 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function makeConfig() {
|
||||||
|
source config.sh
|
||||||
|
touch "logfile.log"
|
||||||
|
cat <<EOM > "../src/config/ConfigOverride.php"
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'db' => [
|
||||||
|
'host' => '$DBHOST',
|
||||||
|
'user' => '$DBUSER',
|
||||||
|
'password' => '$DBPASSWORD',
|
||||||
|
'dbname' => '$DBNAME'
|
||||||
|
],
|
||||||
|
'logging' => [
|
||||||
|
'level' => 'warning',
|
||||||
|
'path' => '../../test/logfile.log'
|
||||||
|
],
|
||||||
|
'authentication' => [
|
||||||
|
'default' => [
|
||||||
|
'plugin' => 'native',
|
||||||
|
'config' => null
|
||||||
|
],
|
||||||
|
'foo' => [
|
||||||
|
'plugin' => 'native',
|
||||||
|
'config' => null
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
EOM
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearConfig() {
|
||||||
|
rm "../src/config/ConfigOverride.php"
|
||||||
|
rm "logfile.log"
|
||||||
|
}
|
||||||
|
|
||||||
|
SCRIPT=$(readlink -f "$0")
|
||||||
|
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||||
|
|
||||||
|
source config.sh
|
||||||
|
|
||||||
|
cd "$SCRIPTPATH"
|
||||||
|
|
||||||
|
if [ $# -lt 1 ]
|
||||||
|
then
|
||||||
|
echo "The script needs either run or all as parameter."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $1 == "run" ]
|
||||||
|
then
|
||||||
|
if [ $# -lt 2 ]
|
||||||
|
then
|
||||||
|
echo "run needs an argument."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
makeConfig
|
||||||
|
|
||||||
|
echo "Preparing Database"
|
||||||
|
mysql "-h$DBHOST" "-u$DBUSER" "-p$DBPASSWORD" "$DBNAME" < db.sql
|
||||||
|
|
||||||
|
echo "Executing test"
|
||||||
|
if ! node "tests/$2.js" "$TESTURL"
|
||||||
|
then
|
||||||
|
echo "Test failed"
|
||||||
|
clearConfig
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [ $(wc -l logfile.log) -gt 0 ]
|
||||||
|
then
|
||||||
|
echo "Errors in logfile:"
|
||||||
|
cat "logfile.log"
|
||||||
|
clearConfig
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
echo "Test successfull"
|
||||||
|
clearConfig
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif [ $1 == "all" ]
|
||||||
|
then
|
||||||
|
for test in tests/*
|
||||||
|
do
|
||||||
|
makeConfig
|
||||||
|
|
||||||
|
echo -n $(basename $test .js) "..."
|
||||||
|
|
||||||
|
mysql "-h$DBHOST" "-u$DBUSER" "-p$DBPASSWORD" "$DBNAME" < db.sql
|
||||||
|
|
||||||
|
echo -n "..."
|
||||||
|
|
||||||
|
if ! node "$test" "$TESTURL"
|
||||||
|
then
|
||||||
|
clearConfig
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [ $(cat logfile.log | wc -l) -gt 0 ]
|
||||||
|
then
|
||||||
|
cat "logfile.log"
|
||||||
|
clearConfig
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
echo " OK"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
clearConfig
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "$1 is not a valid command."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
72
backend/test/testlib.js
Normal file
72
backend/test/testlib.js
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
const assert = require('assert');
|
||||||
|
const axios = require('axios');
|
||||||
|
|
||||||
|
async function runTest(f) {
|
||||||
|
const assertObj = {
|
||||||
|
equal: assert.deepStrictEqual,
|
||||||
|
true: assert.ok
|
||||||
|
};
|
||||||
|
|
||||||
|
var requestObj = axios.create({
|
||||||
|
baseURL: process.argv[2],
|
||||||
|
validateStatus: function () { return true; }
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const token = await logIn(assertObj, requestObj);
|
||||||
|
|
||||||
|
requestObj = axios.create({
|
||||||
|
baseURL: process.argv[2],
|
||||||
|
validateStatus: function () { return true; },
|
||||||
|
headers: { 'X-Authentication': token }
|
||||||
|
});
|
||||||
|
|
||||||
|
await f(assertObj, requestObj);
|
||||||
|
|
||||||
|
await logOut(assertObj, requestObj, token);
|
||||||
|
} catch (e) {
|
||||||
|
if (e instanceof assert.AssertionError) {
|
||||||
|
console.log(e.toString());
|
||||||
|
console.log('\nExpected:');
|
||||||
|
console.log(e.expected);
|
||||||
|
console.log('\nGot:');
|
||||||
|
console.log(e.actual);
|
||||||
|
process.exit(2);
|
||||||
|
} else {
|
||||||
|
console.log(e.toString());
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function logIn(assert, req) {
|
||||||
|
//Try to login with valid username and password
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
username: 'admin',
|
||||||
|
password: 'admin'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 201, 'LOGIN: Status not valid');
|
||||||
|
assert.equal(res.data.username, 'admin', 'LOGIN: Username should be admin');
|
||||||
|
assert.equal(res.data.token.length, 86, 'LOGIN: Token length fail');
|
||||||
|
|
||||||
|
return res.data.token;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function logOut(assert, req, token) {
|
||||||
|
//Try to logout check if this works
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions/' + token,
|
||||||
|
method: 'delete'
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 204, 'LOGOUT: Answer should be successfull but empty');
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = runTest;
|
61
backend/test/tests/session.js
Normal file
61
backend/test/tests/session.js
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
|
||||||
|
require('../testlib')(async function (assert, req) {
|
||||||
|
//Try to login with invalid username and password
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
username: 'foo',
|
||||||
|
password: 'bar'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 403, 'Status not valid');
|
||||||
|
|
||||||
|
//Try to login with invalid username
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
username: 'foo',
|
||||||
|
password: 'admin'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 403, 'Status not valid');
|
||||||
|
|
||||||
|
//Try to login with invalid password
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
username: 'admin',
|
||||||
|
password: 'foo'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 403, 'Status not valid');
|
||||||
|
|
||||||
|
//Try to login with missing field
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
password: 'admin'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 422, 'Status not valid');
|
||||||
|
|
||||||
|
//Try to login with invalid username and password
|
||||||
|
var res = await req({
|
||||||
|
url: '/sessions',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
username: 'foo/admin',
|
||||||
|
password: 'admin'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(res.status, 201, 'Status not valid');
|
||||||
|
});
|
Loading…
Reference in a new issue