~coverity-launchpad-sync-tool-team/coverity-launchpad-sync-tool/trunk

« back to all changes in this revision

Viewing changes to covlpsync/tests/small/test_coverity.py

  • Committer: ps-jenkins at canonical
  • Date: 2012-11-20 22:42:45 UTC
  • mfrom: (133.1.16 covlpsync-ci)
  • Revision ID: ps-jenkins@lists.canonical.com-20121120224245-fa7m97tp6631e0pf
Merged covlpsync-ci.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
import datetime
 
3
import unittest
 
4
from mock import patch, MagicMock
 
5
from covlpsync.coverity import (severity_is_greater_than_or_equal,
 
6
                                SEVERITIES,
 
7
                                CoverityError,
 
8
                                WebFault)
 
9
from covlpsync.coverity import Cim
 
10
 
 
11
 
 
12
class CimTestCase(unittest.TestCase):
 
13
    def setUp(self):
 
14
        Cim.__init__ = MagicMock(spec=Cim, return_value=None)
 
15
        self.cim = Cim()
 
16
        self.cim.configuration_client = MagicMock()
 
17
        self.cim.defect_client = MagicMock()
 
18
 
 
19
 
 
20
class TestSeverityIsGreaterThanOrEqual(unittest.TestCase):
 
21
 
 
22
    def test_greater(self):
 
23
        self.assertTrue(severity_is_greater_than_or_equal('High', 'Low'))
 
24
 
 
25
    def test_less(self):
 
26
        self.assertFalse(severity_is_greater_than_or_equal('Low', 'High'))
 
27
 
 
28
    def test_equal(self):
 
29
        self.assertTrue(severity_is_greater_than_or_equal('Low', 'Low'))
 
30
        
 
31
    def test_no_alert_level_set(self):
 
32
        """Alert level at None, treat anything as a significant defect."""
 
33
        self.assertTrue(severity_is_greater_than_or_equal('Low', None))
 
34
 
 
35
    def test_defect_no_severity(self):
 
36
        """Defect type has no severity, lowest possible order."""
 
37
        self.assertFalse(severity_is_greater_than_or_equal(None, 'Low'))
 
38
 
 
39
    def test_defect_no_severity_and_no_alert_level_set(self):
 
40
        """Even a blank defect will trip if no alert level set."""
 
41
        self.assertTrue(severity_is_greater_than_or_equal(None, None))
 
42
 
 
43
    def test_bogus_severity1_raises(self):
 
44
        with self.assertRaises(CoverityError):
 
45
            severity_is_greater_than_or_equal('Oheck', 'Low')
 
46
 
 
47
    def test_bogus_severity2_raises(self):
 
48
        with self.assertRaises(CoverityError):
 
49
            severity_is_greater_than_or_equal('High', 'Oheck')
 
50
 
 
51
    def test_bogus_severity1_raises_against_none(self):
 
52
        with self.assertRaises(CoverityError):
 
53
            severity_is_greater_than_or_equal('Oheck', None)
 
54
 
 
55
    def test_bogus_severity2_raises_against_none(self):
 
56
        with self.assertRaises(CoverityError):
 
57
            severity_is_greater_than_or_equal(None, 'Oheck')
 
58
 
 
59
 
 
60
class TestGetLatestSnapshot(CimTestCase):
 
61
 
 
62
    def setUp(self):
 
63
        super(TestGetLatestSnapshot, self).setUp()
 
64
        self.snapshots = {
 
65
            10604:
 
66
                {'dateCreated':
 
67
                     datetime.datetime(2012, 11, 13, 18, 46, 26, 15)},
 
68
            10610:
 
69
                {'dateCreated':
 
70
                     datetime.datetime(2012, 11, 12, 18, 35, 30, 812)}
 
71
            }
 
72
        self.cim.configuration_client.get_snapshot_information = \
 
73
            MagicMock(side_effect=self.date_created)
 
74
        self.get_snapshots_for_stream_patch = \
 
75
            patch.object(self.cim.configuration_client, 'get_snapshots_for_stream')
 
76
        self.get_snapshots_for_stream = self.get_snapshots_for_stream_patch.start()
 
77
 
 
78
    def date_created(self, snapshot_id):
 
79
        return self.snapshots[snapshot_id]
 
80
 
 
81
    def test_vanilla_returns_correct_snapshot(self):
 
82
        expected = self.snapshots[10604]
 
83
        self.get_snapshots_for_stream.return_value = self.snapshots.keys()
 
84
        self.assertEqual(expected, self.cim.get_latest_snapshot('dbus-test-runner-12.10'))
 
85
 
 
86
    def test_reversed_returns_correct_snapshot(self):
 
87
        # just for kicks let's reverse the order
 
88
        expected = {'dateCreated': datetime.datetime(2012, 11, 13, 18, 46, 26, 15)}
 
89
        snapshot_ids_list = self.snapshots.keys()
 
90
        snapshot_ids_list.reverse()
 
91
        self.get_snapshots_for_stream.return_value = snapshot_ids_list
 
92
        self.assertEqual(expected, self.cim.get_latest_snapshot('dbus-test-runner-12.10'))
 
93
 
 
94
    def test_no_snapshots_returns_none(self):
 
95
        self.get_snapshots_for_stream.return_value = []
 
96
        self.assertEqual(None, self.cim.get_latest_snapshot('dbus-test-runner-12.10'))
 
97
 
 
98
    def test_gibberish_stream_name_raises(self):
 
99
        WebFault.__init__ = MagicMock(spec=WebFault, return_value=None)
 
100
        self.get_snapshots_for_stream.side_effect = WebFault('BOOM')
 
101
        with self.assertRaises(CoverityError):
 
102
            self.cim.get_latest_snapshot('oheck-infinity')