Skip to content

Commit

Permalink
Added more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
FlyingBird95 committed Feb 27, 2018
1 parent 63d053d commit a904535
Show file tree
Hide file tree
Showing 9 changed files with 259 additions and 16 deletions.
4 changes: 2 additions & 2 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
recursive-include dashboard/static *
recursive-include dashboard/templates *
recursive-include flask_monitoringdashboard/static *
recursive-include flask_monitoringdashboard/templates *
4 changes: 3 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Documentation

The documentation is generated using [Sphinx](http://www.sphinx-doc.org/en/master/).

If you want to generate the documentation, you can run:
Expand All @@ -13,3 +12,6 @@ The following packages are required to generate the documentation:
pip install Sphinx
pip install Flask-Sphinx-Themes
```

# Read The Docs
You can also find the documentation on see [this site](http://flask-monitoringdashboard.readthedocs.io).
4 changes: 2 additions & 2 deletions flask_monitoringdashboard/test/db/test_monitor_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import unittest

from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, NAME
from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, NAME, TIMES


class TestMonitorRule(unittest.TestCase):
Expand All @@ -27,7 +27,7 @@ def test_get_monitor_rules(self):
self.assertEqual(result[0].endpoint, NAME)
self.assertTrue(result[0].monitor)
self.assertEqual(result[0].version_added, config.version)
self.assertIsNone(result[0].last_accessed)
self.assertEqual(result[0].last_accessed, TIMES[0])

def test_get_monitor_names(self):
"""
Expand Down
39 changes: 29 additions & 10 deletions flask_monitoringdashboard/test/routings/test_export_data.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,42 @@
import unittest

import jwt
from flask import json

from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, EXECUTION_TIMES, NAME, TIMES, GROUP_BY, \
IP
from flask import Flask, json
from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, login, get_test_app, \
EXECUTION_TIMES, NAME, GROUP_BY, IP, TIMES


class TestExportData(unittest.TestCase):

def setUp(self):
set_test_environment()
import flask_monitoringdashboard
user_app = Flask(__name__)
user_app.testing = True
flask_monitoringdashboard.config.get_group_by = lambda: '12345'
flask_monitoringdashboard.bind(app=user_app)
clear_db()
add_fake_data()
self.app = user_app.test_client()
self.app = get_test_app()

def test_download_csv(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/download-csv').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/download-csv').status_code)

def test_export_data(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/export-data').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/export-data').status_code)

def test_submit_test_results(self):
"""
Just retrieve the content and check if nothing breaks
"""
pass
# TODO: Implement function

def test_get_json_data_from(self):
"""
Expand Down Expand Up @@ -46,7 +65,7 @@ def test_get_json_monitor_rules(self):
self.assertEqual(len(data), 1)
row = data[0]
self.assertEqual(row['endpoint'], NAME)
self.assertEqual(row['last_accessed'], u'None')
self.assertEqual(row['last_accessed'], str(TIMES[0]))
self.assertTrue(row['monitor'])
self.assertEqual(row['version_added'], config.version)

Expand Down
20 changes: 20 additions & 0 deletions flask_monitoringdashboard/test/routings/test_login.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import unittest

from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, login, get_test_app


class TestLogin(unittest.TestCase):

def setUp(self):
set_test_environment()
clear_db()
add_fake_data()
self.app = get_test_app()

def test_login(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(200, self.app.get('dashboard/login').status_code)
login(self.app)
self.assertEqual(302, self.app.get('dashboard/login').status_code)
53 changes: 53 additions & 0 deletions flask_monitoringdashboard/test/routings/test_measurements.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import unittest

from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, get_test_app, login


class TestMeasurement(unittest.TestCase):

def setUp(self):
set_test_environment()
clear_db()
add_fake_data()
self.app = get_test_app()

def test_overview(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/measurements/overview').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/measurements/overview').status_code)

def test_heatmap(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/measurements/heatmap').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/measurements/heatmap').status_code)

def test_page_number_of_requests_per_endpoint(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/measurements/requests').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/measurements/requests').status_code)

def test_page_boxplot_per_version(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/measurements/versions').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/measurements/versions').status_code)

def test_page_boxplot_per_endpoint(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/measurements/endpoints').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/measurements/endpoints').status_code)

77 changes: 77 additions & 0 deletions flask_monitoringdashboard/test/routings/test_result.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import unittest

from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, get_test_app, login, \
NAME


class TestResult(unittest.TestCase):

def setUp(self):
set_test_environment()
clear_db()
add_fake_data()
self.app = get_test_app()

def test_result_heatmap(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/heatmap'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/heatmap'.format(NAME)).status_code)

def test_result_time_per_hour(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/time_per_hour'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/time_per_hour'.format(NAME)).status_code)

def test_result_hits_per_hour(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/hits_per_hour'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/hits_per_hour'.format(NAME)).status_code)

def test_result_time_per_version_per_user(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/time_per_version_per_user'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/time_per_version_per_user'.format(NAME)).status_code)

def test_result_time_per_version_per_ip(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/time_per_version_per_ip'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/time_per_version_per_ip'.format(NAME)).status_code)

def test_result_time_per_version(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/time_per_version'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/time_per_version'.format(NAME)).status_code)

def test_result_time_per_user(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/time_per_user'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/time_per_user'.format(NAME)).status_code)

def test_result_outliers(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/result/{}/outliers'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/result/{}/outliers'.format(NAME)).status_code)
45 changes: 45 additions & 0 deletions flask_monitoringdashboard/test/routings/test_setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import unittest

from flask_monitoringdashboard.test.utils import set_test_environment, clear_db, add_fake_data, get_test_app, login, \
NAME


class TestSetup(unittest.TestCase):

def setUp(self):
set_test_environment()
clear_db()
add_fake_data()
self.app = get_test_app()

def test_settings(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/settings').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/settings').status_code)

def test_rules(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/rules').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/rules').status_code)

def test_test_result(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/testmonitor/{}'.format(NAME)).status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/testmonitor/{}'.format(NAME)).status_code)

def test_testmonitor(self):
"""
Just retrieve the content and check if nothing breaks
"""
self.assertEqual(302, self.app.get('dashboard/testmonitor').status_code)
login(self.app)
self.assertEqual(200, self.app.get('dashboard/testmonitor').status_code)
29 changes: 28 additions & 1 deletion flask_monitoringdashboard/test/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
"""
import datetime

from flask import Flask

NAME = 'main'
IP = '127.0.0.1'
GROUP_BY = '1'
Expand Down Expand Up @@ -42,7 +44,7 @@ def add_fake_data():
# Add MonitorRule
with session_scope() as db_session:
db_session.add(MonitorRule(endpoint=NAME, monitor=True, time_added=datetime.datetime.now(),
version_added=config.version))
version_added=config.version, last_accessed=TIMES[0]))

# Add Tests
with session_scope() as db_session:
Expand All @@ -54,5 +56,30 @@ def add_fake_data():
db_session.add(TestsGrouped(endpoint=NAME, test_name=test_name))


def get_test_app():
"""
:return: Flask Test Application with the right settings
"""
import flask_monitoringdashboard
user_app = Flask(__name__)
user_app.config['SECRET_KEY'] = flask_monitoringdashboard.config.security_token
user_app.testing = True
flask_monitoringdashboard.config.get_group_by = lambda: '12345'
flask_monitoringdashboard.bind(app=user_app)
return user_app.test_client()


def login(test_app):
"""
Used for setting the sessions, such that you have a fake login to the dashboard.
:param test_app:
"""
from flask_monitoringdashboard import config
with test_app as c:
with c.session_transaction() as sess:
sess[config.link + '_logged_in'] = True
sess[config.link + '_admin'] = True


def mean(numbers):
return float(sum(numbers)) / max(len(numbers), 1)

0 comments on commit a904535

Please sign in to comment.