From 29c17b9d23109f480ef7095f022f67a7532fe428 Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Wed, 23 Sep 2015 16:13:41 -0400 Subject: [PATCH] Add test coverate for grafana.py Previous to this we actually didn't install our requests dependency. So grafyaml actually didn't work :( Now we have basic coverage with mock. Change-Id: I771ea12e444ea851d76983df75f69d1569653f9d Signed-off-by: Paul Belanger --- requirements.txt | 1 + test-requirements.txt | 1 + tests/test_grafana.py | 46 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 tests/test_grafana.py diff --git a/requirements.txt b/requirements.txt index 38952d0..f0cd15f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,5 @@ oslo.config>=1.11.0 oslo.log>=1.0.0,<1.1.0 PyYAML>=3.1.0 +requests voluptuous>=0.7 diff --git a/test-requirements.txt b/test-requirements.txt index 8592bde..6d8b464 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -7,6 +7,7 @@ hacking<0.11,>=0.10.0 coverage>=3.6 discover python-subunit>=0.0.18 +requests-mock>=0.6.0 sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 oslosphinx>=2.2.0 # Apache-2.0 oslotest>=1.2.0 # Apache-2.0 diff --git a/tests/test_grafana.py b/tests/test_grafana.py new file mode 100644 index 0000000..bb613a2 --- /dev/null +++ b/tests/test_grafana.py @@ -0,0 +1,46 @@ +# Copyright 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from requests_mock.contrib import fixture as rm_fixture +from testtools import TestCase + +from grafana_dashboards import grafana + + +class TestCaseGrafana(TestCase): + + def setUp(self): + super(TestCaseGrafana, self).setUp() + self.apikey = 'eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk' + self.url = 'http://localhost' + self.grafana = grafana.Grafana(self.url, self.apikey) + + def test_create_dashboard(self): + mock_requests = self.useFixture(rm_fixture.Fixture()) + mock_requests.post('/api/dashboards/db') + data = { + "dashboard": { + "title": "New dashboard", + } + } + self.grafana.create_dashboard(data) + self.assertEqual(mock_requests.call_count, 1) + headers = mock_requests.last_request.headers + self._test_headers(headers) + + def _test_headers(self, headers): + self.assertIn('Authorization', headers) + self.assertEqual(headers['Authorization'], 'Bearer %s' % self.apikey) + self.assertIn('Content-Type', headers) + self.assertEqual(headers['Content-Type'], 'application/json')