github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/common/masterFlags_test.go (about) 1 package common 2 3 import ( 4 "testing" 5 6 "github.com/spf13/cobra" 7 "github.com/stretchr/testify/assert" 8 9 "github.com/kubeshop/testkube/cmd/kubectl-testkube/config" 10 ) 11 12 var ( 13 opts = HelmOptions{} 14 cfg = &config.Data{} 15 ) 16 17 func NewTestCmd() *cobra.Command { 18 19 cmd := &cobra.Command{ 20 Use: "test", 21 Hidden: true, 22 Run: func(cmd *cobra.Command, args []string) { 23 ProcessMasterFlags(cmd, &opts, cfg) 24 }, 25 } 26 27 PopulateMasterFlags(cmd, &opts) 28 PopulateHelmFlags(cmd, &opts) 29 return cmd 30 } 31 32 func TestMasterCmds(t *testing.T) { 33 t.Run("Test all master flags set and isnecure", func(t *testing.T) { 34 cmd := NewTestCmd() 35 cmd.SetArgs([]string{"--master-insecure", "true", 36 "--agent-prefix", "dummy-agent-prefix", 37 "--api-prefix", "dummy-api-prefix", 38 "--ui-prefix", "dummy-ui-prefix", 39 "--root-domain", "dummy-root-domain", 40 "--dry-run", "true", 41 "--no-confirm", "true", 42 "--agent-token", "dummy-token", 43 "--agent-uri", "dummy-uri", 44 "--ui-prefix", "dummy-ui-prefix", 45 }) 46 err := cmd.Execute() 47 assert.NoError(t, err) 48 assert.Equal(t, true, opts.Master.Insecure) 49 assert.Equal(t, true, opts.DryRun) 50 assert.Equal(t, true, opts.NoConfirm) 51 assert.Equal(t, "dummy-token", opts.Master.AgentToken) 52 assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent) 53 assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix) 54 assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix) 55 assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix) 56 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 57 assert.Equal(t, "http://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api) 58 assert.Equal(t, "http://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui) 59 }) 60 t.Run("Test all master flags set and secure", func(t *testing.T) { 61 cmd := NewTestCmd() 62 cmd.SetArgs([]string{"--agent-prefix", "dummy-agent-prefix", 63 "--api-prefix", "dummy-api-prefix", 64 "--ui-prefix", "dummy-ui-prefix", 65 "--root-domain", "dummy-root-domain", 66 "--dry-run", "true", 67 "--no-confirm", "true", 68 "--agent-token", "dummy-token", 69 "--agent-uri", "dummy-uri", 70 "--ui-prefix", "dummy-ui-prefix", 71 }) 72 err := cmd.Execute() 73 assert.NoError(t, err) 74 assert.Equal(t, false, opts.Master.Insecure) 75 assert.Equal(t, true, opts.DryRun) 76 assert.Equal(t, true, opts.NoConfirm) 77 assert.Equal(t, "dummy-token", opts.Master.AgentToken) 78 assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent) 79 assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix) 80 assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix) 81 assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix) 82 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 83 assert.Equal(t, "https://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api) 84 assert.Equal(t, "https://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui) 85 }) 86 87 t.Run("Test all master flags set and isnecure former cloud flags", func(t *testing.T) { 88 cmd := NewTestCmd() 89 cmd.SetArgs([]string{"--cloud-insecure", "true", 90 "--cloud-agent-prefix", "dummy-agent-prefix", 91 "--cloud-api-prefix", "dummy-api-prefix", 92 "--cloud-ui-prefix", "dummy-ui-prefix", 93 "--cloud-root-domain", "dummy-root-domain", 94 "--dry-run", "true", 95 "--no-confirm", "true", 96 "--agent-token", "dummy-token", 97 "--agent-uri", "dummy-uri", 98 "--ui-prefix", "dummy-ui-prefix", 99 }) 100 err := cmd.Execute() 101 assert.NoError(t, err) 102 assert.Equal(t, true, opts.Master.Insecure) 103 assert.Equal(t, true, opts.DryRun) 104 assert.Equal(t, true, opts.NoConfirm) 105 assert.Equal(t, "dummy-token", opts.Master.AgentToken) 106 assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent) 107 assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix) 108 assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix) 109 assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix) 110 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 111 assert.Equal(t, "http://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api) 112 assert.Equal(t, "http://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui) 113 }) 114 t.Run("Test all master flags set and secure former cloud flags", func(t *testing.T) { 115 cmd := NewTestCmd() 116 cmd.SetArgs([]string{"--cloud-agent-prefix", "dummy-agent-prefix", 117 "--cloud-api-prefix", "dummy-api-prefix", 118 "--cloud-ui-prefix", "dummy-ui-prefix", 119 "--cloud-root-domain", "dummy-root-domain", 120 "--dry-run", "true", 121 "--no-confirm", "true", 122 "--agent-token", "dummy-token", 123 "--agent-uri", "dummy-uri", 124 "--ui-prefix", "dummy-ui-prefix", 125 }) 126 err := cmd.Execute() 127 assert.NoError(t, err) 128 assert.Equal(t, false, opts.Master.Insecure) 129 assert.Equal(t, true, opts.DryRun) 130 assert.Equal(t, true, opts.NoConfirm) 131 assert.Equal(t, "dummy-token", opts.Master.AgentToken) 132 assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent) 133 assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix) 134 assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix) 135 assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix) 136 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 137 assert.Equal(t, "https://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api) 138 assert.Equal(t, "https://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui) 139 }) 140 141 t.Run("Test defaults for master flags secure", func(t *testing.T) { 142 cmd := NewTestCmd() 143 cmd.SetArgs([]string{}) 144 err := cmd.Execute() 145 assert.NoError(t, err) 146 assert.Equal(t, false, opts.Master.Insecure) 147 assert.Equal(t, false, opts.DryRun) 148 assert.Equal(t, false, opts.NoConfirm) 149 assert.Equal(t, "", opts.Master.AgentToken) 150 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 151 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 152 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 153 assert.Equal(t, "testkube.io", opts.Master.RootDomain) 154 assert.Equal(t, "https://api.testkube.io", opts.Master.URIs.Api) 155 assert.Equal(t, "https://app.testkube.io", opts.Master.URIs.Ui) 156 assert.Equal(t, "agent.testkube.io:443", opts.Master.URIs.Agent) 157 }) 158 159 t.Run("Test defaults for master flags insecure", func(t *testing.T) { 160 cmd := NewTestCmd() 161 cmd.SetArgs([]string{"--master-insecure", "true"}) 162 err := cmd.Execute() 163 assert.NoError(t, err) 164 assert.Equal(t, true, opts.Master.Insecure) 165 assert.Equal(t, false, opts.DryRun) 166 assert.Equal(t, false, opts.NoConfirm) 167 assert.Equal(t, "", opts.Master.AgentToken) 168 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 169 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 170 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 171 assert.Equal(t, "testkube.io", opts.Master.RootDomain) 172 assert.Equal(t, "http://api.testkube.io", opts.Master.URIs.Api) 173 assert.Equal(t, "http://app.testkube.io", opts.Master.URIs.Ui) 174 assert.Equal(t, "agent.testkube.io:443", opts.Master.URIs.Agent) 175 }) 176 177 t.Run("Test defaults for master flags insecure former cloud flags", func(t *testing.T) { 178 cmd := NewTestCmd() 179 cmd.SetArgs([]string{"--cloud-insecure", "true"}) 180 err := cmd.Execute() 181 assert.NoError(t, err) 182 assert.Equal(t, true, opts.Master.Insecure) 183 assert.Equal(t, false, opts.DryRun) 184 assert.Equal(t, false, opts.NoConfirm) 185 assert.Equal(t, "", opts.Master.AgentToken) 186 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 187 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 188 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 189 assert.Equal(t, "testkube.io", opts.Master.RootDomain) 190 assert.Equal(t, "http://api.testkube.io", opts.Master.URIs.Api) 191 assert.Equal(t, "http://app.testkube.io", opts.Master.URIs.Ui) 192 assert.Equal(t, "agent.testkube.io:443", opts.Master.URIs.Agent) 193 }) 194 195 t.Run("Test defaults for master flags secure with rood modified", func(t *testing.T) { 196 cmd := NewTestCmd() 197 cmd.SetArgs([]string{"--root-domain", "dummy-root-domain"}) 198 err := cmd.Execute() 199 assert.NoError(t, err) 200 assert.Equal(t, false, opts.Master.Insecure) 201 assert.Equal(t, false, opts.DryRun) 202 assert.Equal(t, false, opts.NoConfirm) 203 assert.Equal(t, "", opts.Master.AgentToken) 204 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 205 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 206 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 207 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 208 assert.Equal(t, "https://api.dummy-root-domain", opts.Master.URIs.Api) 209 assert.Equal(t, "https://app.dummy-root-domain", opts.Master.URIs.Ui) 210 assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent) 211 }) 212 213 t.Run("Test defaults for master flags insecure with rood modified", func(t *testing.T) { 214 cmd := NewTestCmd() 215 cmd.SetArgs([]string{"--master-insecure", "true", "--root-domain", "dummy-root-domain"}) 216 err := cmd.Execute() 217 assert.NoError(t, err) 218 assert.Equal(t, true, opts.Master.Insecure) 219 assert.Equal(t, false, opts.DryRun) 220 assert.Equal(t, false, opts.NoConfirm) 221 assert.Equal(t, "", opts.Master.AgentToken) 222 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 223 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 224 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 225 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 226 assert.Equal(t, "http://api.dummy-root-domain", opts.Master.URIs.Api) 227 assert.Equal(t, "http://app.dummy-root-domain", opts.Master.URIs.Ui) 228 assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent) 229 }) 230 231 t.Run("Test defaults for master flags secure with root modifiedc former cloud flags", func(t *testing.T) { 232 cmd := NewTestCmd() 233 cmd.SetArgs([]string{"--cloud-root-domain", "dummy-root-domain"}) 234 err := cmd.Execute() 235 assert.NoError(t, err) 236 assert.Equal(t, false, opts.Master.Insecure) 237 assert.Equal(t, false, opts.DryRun) 238 assert.Equal(t, false, opts.NoConfirm) 239 assert.Equal(t, "", opts.Master.AgentToken) 240 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 241 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 242 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 243 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 244 assert.Equal(t, "https://api.dummy-root-domain", opts.Master.URIs.Api) 245 assert.Equal(t, "https://app.dummy-root-domain", opts.Master.URIs.Ui) 246 assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent) 247 }) 248 249 t.Run("Test defaults for master flags insecure with root modified former cloud flags", func(t *testing.T) { 250 cmd := NewTestCmd() 251 cmd.SetArgs([]string{"--cloud-insecure", "true", "--cloud-root-domain", "dummy-root-domain"}) 252 err := cmd.Execute() 253 assert.NoError(t, err) 254 assert.Equal(t, true, opts.Master.Insecure) 255 assert.Equal(t, false, opts.DryRun) 256 assert.Equal(t, false, opts.NoConfirm) 257 assert.Equal(t, "", opts.Master.AgentToken) 258 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 259 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 260 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 261 assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain) 262 assert.Equal(t, "http://api.dummy-root-domain", opts.Master.URIs.Api) 263 assert.Equal(t, "http://app.dummy-root-domain", opts.Master.URIs.Ui) 264 assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent) 265 }) 266 267 t.Run("Test defaults for master flags secure with agent uri modified", func(t *testing.T) { 268 cmd := NewTestCmd() 269 cmd.SetArgs([]string{"--agent-uri", "dummy-agent-uri"}) 270 err := cmd.Execute() 271 assert.NoError(t, err) 272 assert.Equal(t, false, opts.Master.Insecure) 273 assert.Equal(t, false, opts.DryRun) 274 assert.Equal(t, false, opts.NoConfirm) 275 assert.Equal(t, "", opts.Master.AgentToken) 276 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 277 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 278 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 279 assert.Equal(t, "testkube.io", opts.Master.RootDomain) 280 assert.Equal(t, "https://api.testkube.io", opts.Master.URIs.Api) 281 assert.Equal(t, "https://app.testkube.io", opts.Master.URIs.Ui) 282 assert.Equal(t, "dummy-agent-uri", opts.Master.URIs.Agent) 283 }) 284 285 t.Run("Test defaults for master flags insecure with agent uri modified", func(t *testing.T) { 286 cmd := NewTestCmd() 287 cmd.SetArgs([]string{"--master-insecure", "true", "--agent-uri", "dummy-agent-uri"}) 288 err := cmd.Execute() 289 assert.NoError(t, err) 290 assert.Equal(t, true, opts.Master.Insecure) 291 assert.Equal(t, false, opts.DryRun) 292 assert.Equal(t, false, opts.NoConfirm) 293 assert.Equal(t, "", opts.Master.AgentToken) 294 assert.Equal(t, "app", opts.Master.UiUrlPrefix) 295 assert.Equal(t, "api", opts.Master.ApiUrlPrefix) 296 assert.Equal(t, "agent", opts.Master.AgentUrlPrefix) 297 assert.Equal(t, "testkube.io", opts.Master.RootDomain) 298 assert.Equal(t, "http://api.testkube.io", opts.Master.URIs.Api) 299 assert.Equal(t, "http://app.testkube.io", opts.Master.URIs.Ui) 300 assert.Equal(t, "dummy-agent-uri", opts.Master.URIs.Agent) 301 }) 302 303 t.Run("Test --feature-logs-v2 feature disabled by default", func(t *testing.T) { 304 cmd := NewTestCmd() 305 err := cmd.Execute() 306 assert.NoError(t, err) 307 assert.Equal(t, false, opts.Master.Features.LogsV2) 308 }) 309 310 t.Run("Test --feature-logs-v2 feature flag", func(t *testing.T) { 311 cmd := NewTestCmd() 312 cmd.SetArgs([]string{"--feature-logs-v2", "true"}) 313 err := cmd.Execute() 314 assert.NoError(t, err) 315 assert.Equal(t, true, opts.Master.Features.LogsV2) 316 }) 317 318 t.Run("Test --root-domain for master flags", func(t *testing.T) { 319 cmd := NewTestCmd() 320 cmd.SetArgs([]string{"--root-domain", "test-domain"}) 321 err := cmd.Execute() 322 assert.NoError(t, err) 323 assert.Equal(t, "test-domain", opts.Master.RootDomain) 324 }) 325 326 t.Run("Test deprecated --cloud-root-domain for master flags", func(t *testing.T) { 327 cmd := NewTestCmd() 328 cmd.SetArgs([]string{"--cloud-root-domain", "test-domain"}) 329 err := cmd.Execute() 330 assert.NoError(t, err) 331 assert.Equal(t, "test-domain", opts.Master.RootDomain) 332 }) 333 334 t.Run("Test deprecated --pro-root-domain for master flags", func(t *testing.T) { 335 cmd := NewTestCmd() 336 cmd.SetArgs([]string{"--pro-root-domain", "test-domain"}) 337 err := cmd.Execute() 338 assert.NoError(t, err) 339 assert.Equal(t, "test-domain", opts.Master.RootDomain) 340 }) 341 342 t.Run("Test deprecated --cloud-root-domain and --pro-root-domain for master flags", func(t *testing.T) { 343 cmd := NewTestCmd() 344 cmd.SetArgs([]string{"--pro-root-domain", "pro-test-domain", "--cloud-root-domain", "cloud-test-domain"}) 345 err := cmd.Execute() 346 assert.NoError(t, err) 347 assert.Equal(t, "pro-test-domain", opts.Master.RootDomain) 348 }) 349 }