Merge ~cbelu/charm-k8s-ingress:improve-coverage into charm-k8s-ingress:master

Proposed by Claudiu Belu
Status: Merged
Approved by: Tom Haddon
Approved revision: c7fd43c19c1522ff975a7177c66119f7872e2d61
Merged at revision: c7f215cf1aced241dbf286c8ead5c93a5d428adc
Proposed branch: ~cbelu/charm-k8s-ingress:improve-coverage
Merge into: charm-k8s-ingress:master
Diff against target: 60 lines (+40/-3)
1 file modified
tests/unit/test_charm.py (+40/-3)
Reviewer Review Type Date Requested Status
Tom Haddon Approve
Review via email: mp+416023@code.launchpad.net

Commit message

Improves the test code coverage

There are a few cases in which the test coverage could be improved.

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
Tom Haddon (mthaddon) wrote :

LGTM

review: Approve
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision c7f215cf1aced241dbf286c8ead5c93a5d428adc

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py
2index c4cc9cf..c9fbc7e 100644
3--- a/tests/unit/test_charm.py
4+++ b/tests/unit/test_charm.py
5@@ -490,15 +490,52 @@ class TestCharm(unittest.TestCase):
6
7 @patch('charm.NginxIngressCharm._remove_ingress')
8 @patch('charm.NginxIngressCharm._remove_service')
9- def test_on_ingress_relation_broken(self, _remove_service, _remove_ingress):
10+ def test_on_ingress_relation_broken_unauthorized(self, _remove_service, _remove_ingress):
11+ """Test the Unauthorized case on relation-broken."""
12+ # Call the test test_on_ingress_relation_changed first
13+ # to make sure the relation is created and therefore can be removed.
14+ self.test_on_ingress_relation_changed()
15+ _remove_service.side_effect = kubernetes.client.exceptions.ApiException(status=403)
16+
17+ self.harness.charm._authed = True
18+ relation = self.harness.charm.model.get_relation("ingress")
19+ self.harness.remove_relation(relation.id)
20+
21+ expected_status = BlockedStatus(
22+ "Insufficient permissions, try: `juju trust %s --scope=cluster`"
23+ % self.harness.charm.app.name
24+ )
25+ self.assertEqual(self.harness.charm.unit.status, expected_status)
26+
27+ @patch('charm._networking_v1_api')
28+ @patch('charm._core_v1_api')
29+ def test_on_ingress_relation_broken(self, mock_core_api, mock_net_api):
30 """Test relation-broken."""
31 # Call the test test_on_ingress_relation_changed first
32 # to make sure the relation is created and therefore can be removed.
33 self.test_on_ingress_relation_changed()
34+
35+ conf_or_rels = self.harness.charm._all_config_or_relations
36+ mock_service = mock.Mock()
37+ mock_service.metadata.name = conf_or_rels[0]._service_name
38+ mock_services = mock_core_api.return_value.list_namespaced_service.return_value
39+ mock_services.items = [mock_service]
40+
41+ mock_ingress = mock.Mock()
42+ mock_ingress.metadata.name = conf_or_rels[0]._ingress_name
43+ mock_ingresses = mock_net_api.return_value.list_namespaced_ingress.return_value
44+ mock_ingresses.items = [mock_ingress]
45+
46+ self.harness.charm._authed = True
47 relation = self.harness.charm.model.get_relation("ingress")
48 self.harness.remove_relation(relation.id)
49- self.assertEqual(_remove_ingress.call_count, 1)
50- self.assertEqual(_remove_service.call_count, 1)
51+
52+ mock_core_api.delete_namespaced_service(
53+ name=conf_or_rels[0]._service_name, namespace=conf_or_rels[0]._namespace
54+ )
55+ mock_net_api.delete_namespaced_ingress(
56+ conf_or_rels[0]._ingress_name, conf_or_rels[0]._namespace
57+ )
58
59 def test_get_k8s_ingress(self):
60 """Test getting our definition of a k8s ingress."""

Subscribers

People subscribed via source and target branches

to all changes: