-
Notifications
You must be signed in to change notification settings - Fork 95
Expand file tree
/
Copy pathtest_git_sync_relay_service.py
More file actions
73 lines (67 loc) · 2.99 KB
/
Copy pathtest_git_sync_relay_service.py
File metadata and controls
73 lines (67 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import pytest
from tests import supported_k8s_versions
from tests.chart import get_service_ports_by_name
from tests.utils.chart import render_chart
@pytest.mark.parametrize("kube_version", supported_k8s_versions)
class TestGitSyncRelayService:
def test_gsr_service_default(self, kube_version):
"""Test that no git-sync-relay templates are rendered by default."""
docs = render_chart(
kube_version=kube_version,
show_only="templates/git-sync-relay/git-sync-relay-service.yaml",
)
assert len(docs) == 0
def test_gsr_service_gsr_enabled(self, kube_version):
"""Test that a valid service is rendered when git-sync-relay is enabled."""
values = {"gitSyncRelay": {"enabled": True}}
docs = render_chart(
kube_version=kube_version,
show_only="templates/git-sync-relay/git-sync-relay-service.yaml",
values=values,
)
assert len(docs) == 1
doc = docs[0]
assert doc["kind"] == "Service"
assert doc["apiVersion"] == "v1"
assert doc["metadata"]["name"] == "release-name-git-sync-relay"
# No serviceType override exists for this Service -- it must stay unset so Kubernetes'
# own default (ClusterIP) applies. (PINF-986: ServiceOnlyAllowClusterIP)
assert "type" not in doc["spec"]
@pytest.mark.parametrize("repoShareMode,", ["git_daemon", "shared_volume"])
@pytest.mark.parametrize("repoFetchMode", ["poll", "webhook"])
def test_gsr_service_gsr_enabled_configured_ports(self, kube_version, repoFetchMode, repoShareMode):
"""Test that a correct port list is rendered when git-sync-relay is configured with different modes."""
values = {
"gitSyncRelay": {
"enabled": True,
"repoShareMode": repoShareMode,
"repoFetchMode": repoFetchMode,
}
}
docs = render_chart(
kube_version=kube_version,
show_only="templates/git-sync-relay/git-sync-relay-service.yaml",
values=values,
)
if repoFetchMode == "poll" and repoShareMode == "shared_volume":
assert len(docs) == 0
return
assert len(docs) == 1
doc = docs[0]
assert doc["kind"] == "Service"
assert doc["apiVersion"] == "v1"
assert doc["metadata"]["name"] == "release-name-git-sync-relay"
assert "type" not in doc["spec"]
ports = get_service_ports_by_name(doc)
if repoFetchMode == "webhook":
assert ports["webhook"]["port"] == 8000
assert ports["webhook"]["targetPort"] == 8000
assert ports["webhook"]["protocol"] == "TCP"
else:
assert not ports.get("git-sync-relay")
if repoShareMode == "git_daemon":
assert ports["git"]["port"] == 9418
assert ports["git"]["targetPort"] == 9418
assert ports["git"]["protocol"] == "TCP"
else:
assert not ports.get("git")