Passed
Push — master ( 70d93a...985f9d )
by Tomaz
16s
created

ThirdPartyResourceTestCase   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 61
Duplicated Lines 0 %
Metric Value
dl 0
loc 61
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A test_get_trigger_payload_from_line() 0 14 1
B test_k8s_object_to_st2_trigger() 0 27 1
A test_k8s_object_to_st2_trigger_bad_object() 0 15 1
1
from st2tests.base import BaseSensorTestCase
2
3
from third_party_resource import ThirdPartyResource
4
5
6
class ThirdPartyResourceTestCase(BaseSensorTestCase):
7
    sensor_cls = ThirdPartyResource
8
9
    def test_k8s_object_to_st2_trigger_bad_object(self):
10
        k8s_obj = {
11
            'type': 'kanye',
12
            'object': {
13
                'kind': 'president',
14
                'metadata': {
15
                    'name': 'west',
16
                    'namespace': 'westashians'
17
                    # uid missing
18
                    # label missing
19
                }
20
            }
21
        }
22
        sensor = self.get_sensor_instance()
23
        self.assertRaises(KeyError, sensor._k8s_object_to_st2_trigger, k8s_obj)
24
25
    def test_k8s_object_to_st2_trigger(self):
26
        k8s_obj = {
27
            'type': 'kanye',
28
            'object': {
29
                'kind': 'president',
30
                'metadata': {
31
                    'name': 'west',
32
                    'namespace': 'westashians',
33
                    'uid': 'coinye',
34
                    'labels': ['rapper', 'train wrecker']
35
                }
36
            }
37
        }
38
        sensor = self.get_sensor_instance()
39
        payload = sensor._k8s_object_to_st2_trigger(k8s_obj)
40
        self.assertTrue('resource' in payload)
41
        self.assertEqual(payload['resource'], k8s_obj['type'])
42
        self.assertTrue('object_kind' in payload)
43
        self.assertEqual(payload['object_kind'], k8s_obj['object']['kind'])
44
        self.assertTrue('name' in payload)
45
        self.assertEqual(payload['name'], k8s_obj['object']['metadata']['name'])
46
        self.assertTrue('labels' in payload)
47
        self.assertListEqual(payload['labels'], k8s_obj['object']['metadata']['labels'])
48
        self.assertTrue('namespace' in payload)
49
        self.assertEqual(payload['namespace'], k8s_obj['object']['metadata']['namespace'])
50
        self.assertTrue('uid' in payload)
51
        self.assertEqual(payload['uid'], k8s_obj['object']['metadata']['uid'])
52
53
    def test_get_trigger_payload_from_line(self):
54
        line = '{"object": {"kind": "president", ' + \
55
               '"metadata": {"labels": ["rapper", "train wrecker"], ' + \
56
               '"namespace": "westashians", ' + \
57
               '"name": "west", "uid": "coinye"}}, "type": "kanye"}'
58
        sensor = self.get_sensor_instance()
59
        payload = sensor._get_trigger_payload_from_line(line)
60
        self.assertTrue(payload is not None)
61
        self.assertTrue('resource' in payload)
62
        self.assertTrue('object_kind' in payload)
63
        self.assertTrue('name' in payload)
64
        self.assertTrue('labels' in payload)
65
        self.assertTrue('namespace' in payload)
66
        self.assertTrue('uid' in payload)
67