-
Notifications
You must be signed in to change notification settings - Fork 1
/
provider_customization_test.go
139 lines (123 loc) · 3.62 KB
/
provider_customization_test.go
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package engine
import (
"github.com/ekara-platform/engine/util"
"testing"
"github.com/ekara-platform/engine/model"
"github.com/stretchr/testify/assert"
)
func TestMergeProvider(t *testing.T) {
parent2Content := `
ekara:
components:
comp2:
repository: comp2
providers:
p1:
component: comp2
params:
param_key1: parent2_param_key1_value
param_key2: parent2_param_key2_value
param_key3: parent2_param_key3_value
param_key4: parent2_param_key4_value
env:
env_key1: parent2_env_key1_value
env_key2: parent2_env_key2_value
env_key3: parent2_env_key3_value
env_key4: parent2_env_key4_value
proxy:
http_proxy: http_proxy_parent2
#https_proxy: https_proxy_parent2
#no_proxy: no_proxy_parent2
`
comp1Content := `
providers:
p1:
params:
param_key2: comp1_param_key2_value
param_key3: comp1_param_key3_value
param_key4: comp1_param_key4_value
env:
env_key2: comp1_env_key2_value
env_key3: comp1_env_key3_value
env_key4: comp1_env_key4_value
proxy:
https_proxy: https_proxy_comp1
#no_proxy: no_proxy_comp1
`
parent1Content := `
ekara:
parent:
repository: parent2
components:
comp1:
repository: comp1
providers:
p1:
params:
param_key3: parent1_param_key3_value
param_key4: parent1_param_key4_value
env:
env_key3: parent1_env_key3_value
env_key4: parent1_env_key4_value
proxy:
no_proxy: no_proxy_parent1
`
descContent := `
name: ekaraDemoVar
qualifier: dev
ekara:
parent:
repository: parent1
# Following content just to force the download of comp1 and comp2
orchestrator:
component: comp1
providers:
p1:
component: comp2
params:
param_key4: desc_param_key4_value
env:
env_key4: desc_env_key4_value
nodes:
node1:
instances: 1
provider:
name: p1
`
tester := util.CreateComponentTester(t, model.CreateEmptyParameters())
defer tester.Clean()
repParent1 := tester.CreateDir("parent1")
repParent2 := tester.CreateDir("parent2")
repComp1 := tester.CreateDir("comp1")
tester.CreateDirEmptyDesc("comp2")
repDesc := tester.CreateDir("descriptor")
repComp1.WriteCommit("ekara.yaml", comp1Content)
repParent1.WriteCommit("ekara.yaml", parent1Content)
repParent2.WriteCommit("ekara.yaml", parent2Content)
repDesc.WriteCommit("ekara.yaml", descContent)
tester.Init(repDesc.AsRepository("master"))
tester.AssertComponentAvailable(model.MainComponentId, model.MainComponentId+model.ParentComponentSuffix, model.MainComponentId+model.ParentComponentSuffix+model.ParentComponentSuffix, "comp1", "comp2")
env := tester.Env()
assert.NotNil(t, env)
assert.Equal(t, len(env.Providers), 1)
p, ok := env.Providers["p1"]
if assert.True(t, ok) {
params := p.Parameters()
if assert.Equal(t, 4, len(params)) {
tester.AssertParam(params, "param_key1", "parent2_param_key1_value")
tester.AssertParam(params, "param_key2", "comp1_param_key2_value")
tester.AssertParam(params, "param_key3", "parent1_param_key3_value")
tester.AssertParam(params, "param_key4", "desc_param_key4_value")
}
envVars := p.EnvVars()
if assert.Equal(t, 4, len(envVars)) {
tester.AssertEnvVar(envVars, "env_key1", "parent2_env_key1_value")
tester.AssertEnvVar(envVars, "env_key2", "comp1_env_key2_value")
tester.AssertEnvVar(envVars, "env_key3", "parent1_env_key3_value")
tester.AssertEnvVar(envVars, "env_key4", "desc_env_key4_value")
}
assert.Equal(t, p.Proxy().Http, "http_proxy_parent2")
assert.Equal(t, p.Proxy().Https, "https_proxy_comp1")
assert.Equal(t, p.Proxy().NoProxy, "no_proxy_parent1")
}
}