Merge ~pjdc/charm-k8s-mattermost/+git/charm-k8s-mattermost:s3-wip into charm-k8s-mattermost:master

Proposed by Paul Collins
Status: Rejected
Rejected by: Paul Collins
Proposed branch: ~pjdc/charm-k8s-mattermost/+git/charm-k8s-mattermost:s3-wip
Merge into: charm-k8s-mattermost:master
Prerequisite: ~pjdc/charm-k8s-mattermost/+git/charm-k8s-mattermost:s3
Diff against target: 149 lines (+114/-0)
6 files modified
.gitignore (+3/-0)
Makefile (+14/-0)
requirements.txt (+0/-0)
tests/unit/requirements.txt (+4/-0)
tests/unit/test_charm.py (+47/-0)
tox.ini (+46/-0)
Reviewer Review Type Date Requested Status
Mattermost Charmers Pending
Review via email: mp+384794@code.launchpad.net
To post a comment you must log in.

Unmerged commits

d8c8a99... by Paul Collins

unit tests - XXX WIP DO NOT MERGE

9ea0964... by Paul Collins

add settings for S3 support

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.gitignore b/.gitignore
2index b25c15b..a41d835 100644
3--- a/.gitignore
4+++ b/.gitignore
5@@ -1 +1,4 @@
6 *~
7+.tox
8+.coverage
9+__pycache__
10diff --git a/Makefile b/Makefile
11new file mode 100644
12index 0000000..4f10863
13--- /dev/null
14+++ b/Makefile
15@@ -0,0 +1,14 @@
16+lint:
17+ @echo "Running flake8"
18+ @tox -e lint
19+
20+unittest:
21+ @tox -e unit
22+
23+test: lint unittest
24+
25+clean:
26+ @echo "Cleaning files"
27+ @git clean -fXd
28+
29+.PHONY: lint test unittest clean
30diff --git a/requirements.txt b/requirements.txt
31new file mode 100644
32index 0000000..e69de29
33--- /dev/null
34+++ b/requirements.txt
35diff --git a/tests/unit/requirements.txt b/tests/unit/requirements.txt
36new file mode 100644
37index 0000000..65431fc
38--- /dev/null
39+++ b/tests/unit/requirements.txt
40@@ -0,0 +1,4 @@
41+mock
42+pytest
43+pytest-cov
44+pyyaml
45diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py
46new file mode 100644
47index 0000000..aab2a31
48--- /dev/null
49+++ b/tests/unit/test_charm.py
50@@ -0,0 +1,47 @@
51+#!/usr/bin/env python3
52+
53+import copy
54+import unittest
55+import sys
56+
57+sys.path.append('lib') # noqa: E402
58+sys.path.append('src') # noqa: E402
59+
60+from charm import MattermostK8sCharm
61+from ops import testing
62+
63+CONFIG_NO_S3_SETTINGS_S3_ENABLED = {
64+ 's3_enabled': True,
65+ 's3_endpoint': 's3.amazonaws.com',
66+ 's3_bucket': '',
67+ 's3_region': '',
68+ 's3_access_key_id': '',
69+ 's3_secret_access_key': '',
70+}
71+
72+CONFIG_NO_S3_SETTINGS_S3_DISABLED_NO_DEFAULTS = {
73+ 's3_enabled': False,
74+}
75+
76+
77+class TestMattermostK8sCharm(unittest.TestCase):
78+
79+ def setUp(self):
80+ self.harness = testing.Harness(
81+ MattermostK8sCharm,
82+ meta='''
83+ name: mattermost
84+ ''',
85+ )
86+
87+ self.harness.begin()
88+
89+ def test_missing_charm_settings_no_s3_settings_s3_enabled(self):
90+ self.harness.charm.model.config = copy.deepcopy(CONFIG_NO_S3_SETTINGS_S3_ENABLED)
91+ expected = sorted(['s3_bucket', 's3_region', 's3_access_key_id', 's3_secret_access_key'])
92+ self.assertEqual(sorted(self.harness.charm._missing_charm_settings()), expected)
93+
94+ def test_missing_charm_settings_no_s3_settings_s3_disabled_no_defaults(self):
95+ self.harness.charm.model.config = copy.deepcopy(CONFIG_NO_S3_SETTINGS_S3_DISABLED_NO_DEFAULTS)
96+ expected = []
97+ self.assertEqual(sorted(self.harness.charm._missing_charm_settings()), expected)
98diff --git a/tox.ini b/tox.ini
99new file mode 100644
100index 0000000..117984d
101--- /dev/null
102+++ b/tox.ini
103@@ -0,0 +1,46 @@
104+[tox]
105+skipsdist=True
106+envlist = unit, functional
107+skip_missing_interpreters = True
108+
109+[testenv]
110+basepython = python3
111+setenv =
112+ PYTHONPATH = .
113+
114+[testenv:unit]
115+commands =
116+ pytest --ignore mod --ignore {toxinidir}/tests/functional \
117+ {posargs:-v --cov=src --cov-report=term-missing --cov-branch}
118+deps = -r{toxinidir}/tests/unit/requirements.txt
119+ -r{toxinidir}/requirements.txt
120+setenv =
121+ PYTHONPATH={toxinidir}/lib
122+ TZ=UTC
123+
124+[testenv:functional]
125+passenv =
126+ HOME
127+ JUJU_REPOSITORY
128+ PATH
129+commands =
130+ pytest -v --ignore mod --ignore {toxinidir}/tests/unit {posargs}
131+deps = -r{toxinidir}/tests/functional/requirements.txt
132+ -r{toxinidir}/requirements.txt
133+
134+[testenv:black]
135+commands = black --skip-string-normalization --line-length=120 src/ tests/
136+deps = black
137+
138+[testenv:lint]
139+commands = flake8 src/ tests/
140+deps =
141+ flake8 == 3.7.9 # to match focal
142+
143+[flake8]
144+exclude =
145+ .git,
146+ __pycache__,
147+ .tox,
148+max-line-length = 120
149+max-complexity = 10

Subscribers

People subscribed via source and target branches