nova/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py

191 lines
7.3 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 IBM
#
# 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
import telnetlib
import coverage
import webob
from nova.api.openstack.compute.contrib import coverage_ext
from nova import context
from nova.openstack.common import jsonutils
from nova import test
from nova.tests.api.openstack import fakes
def fake_telnet(self, data):
return
def fake_check_coverage(self):
return False
def fake_xml_report(self, outfile):
return
def fake_report(self, file):
return
class CoverageExtensionTest(test.TestCase):
def setUp(self):
super(CoverageExtensionTest, self).setUp()
self.stubs.Set(telnetlib.Telnet, 'write', fake_telnet)
self.stubs.Set(telnetlib.Telnet, 'expect', fake_telnet)
self.stubs.Set(coverage.coverage, 'report', fake_report)
self.stubs.Set(coverage.coverage, 'xml_report', fake_xml_report)
self.admin_context = context.RequestContext('fakeadmin_0',
'fake',
is_admin=True)
self.user_context = context.RequestContext('fakeadmin_0',
'fake',
is_admin=False)
def test_not_admin(self):
body = {'start': {}}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.user_context))
self.assertEqual(res.status_int, 403)
def test_start_coverage_action(self):
body = {'start': {}}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 200)
def test_stop_coverage_action(self):
self.stubs.Set(coverage_ext.CoverageController,
'_check_coverage', fake_check_coverage)
body = {'stop': {}}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 200)
resp_dict = jsonutils.loads(res.body)
self.assertTrue('path' in resp_dict)
def test_report_coverage_action_file(self):
self.stubs.Set(coverage_ext.CoverageController,
'_check_coverage', fake_check_coverage)
self.test_start_coverage_action()
body = {
'report': {
'file': 'coverage-unit-test.report',
},
}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 200)
resp_dict = jsonutils.loads(res.body)
self.assertTrue('path' in resp_dict)
self.assertTrue('coverage-unit-test.report' in resp_dict['path'])
def test_report_coverage_action_xml_file(self):
self.stubs.Set(coverage_ext.CoverageController,
'_check_coverage', fake_check_coverage)
body = {
'report': {
'file': 'coverage-xml-unit-test.report',
'xml': 'True',
},
}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 200)
resp_dict = jsonutils.loads(res.body)
self.assertTrue('path' in resp_dict)
self.assertTrue('coverage-xml-unit-test.report' in resp_dict['path'])
def test_report_coverage_action_nofile(self):
self.stubs.Set(coverage_ext.CoverageController,
'_check_coverage', fake_check_coverage)
body = {'report': {}}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 400)
def test_coverage_bad_body(self):
body = {}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 400)
def test_coverage_report_bad_path(self):
self.stubs.Set(coverage_ext.CoverageController,
'_check_coverage', fake_check_coverage)
body = {
'report': {
'file': '/tmp/coverage-xml-unit-test.report',
}
}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 400)
def test_stop_coverage_action_nostart(self):
body = {'stop': {}}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 404)
def test_report_coverage_action_nostart(self):
body = {'report': {}}
req = webob.Request.blank('/v2/fake/os-coverage/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
res = req.get_response(fakes.wsgi_app(
fake_auth_context=self.admin_context))
self.assertEqual(res.status_int, 404)