github.com/justincormack/cli@v0.0.0-20201215022714-831ebeae9675/cli/command/orchestrator_test.go (about) 1 package command 2 3 import ( 4 "io/ioutil" 5 "testing" 6 7 "gotest.tools/v3/assert" 8 is "gotest.tools/v3/assert/cmp" 9 "gotest.tools/v3/env" 10 ) 11 12 func TestOrchestratorSwitch(t *testing.T) { 13 var testcases = []struct { 14 doc string 15 globalOrchestrator string 16 envOrchestrator string 17 flagOrchestrator string 18 contextOrchestrator string 19 expectedOrchestrator string 20 expectedKubernetes bool 21 expectedSwarm bool 22 }{ 23 { 24 doc: "default", 25 expectedOrchestrator: "swarm", 26 expectedKubernetes: false, 27 expectedSwarm: true, 28 }, 29 { 30 doc: "kubernetesConfigFile", 31 globalOrchestrator: "kubernetes", 32 expectedOrchestrator: "kubernetes", 33 expectedKubernetes: true, 34 expectedSwarm: false, 35 }, 36 { 37 doc: "kubernetesEnv", 38 envOrchestrator: "kubernetes", 39 expectedOrchestrator: "kubernetes", 40 expectedKubernetes: true, 41 expectedSwarm: false, 42 }, 43 { 44 doc: "kubernetesFlag", 45 flagOrchestrator: "kubernetes", 46 expectedOrchestrator: "kubernetes", 47 expectedKubernetes: true, 48 expectedSwarm: false, 49 }, 50 { 51 doc: "allOrchestratorFlag", 52 flagOrchestrator: "all", 53 expectedOrchestrator: "all", 54 expectedKubernetes: true, 55 expectedSwarm: true, 56 }, 57 { 58 doc: "kubernetesContext", 59 contextOrchestrator: "kubernetes", 60 expectedOrchestrator: "kubernetes", 61 expectedKubernetes: true, 62 }, 63 { 64 doc: "contextOverridesConfigFile", 65 globalOrchestrator: "kubernetes", 66 contextOrchestrator: "swarm", 67 expectedOrchestrator: "swarm", 68 expectedKubernetes: false, 69 expectedSwarm: true, 70 }, 71 { 72 doc: "envOverridesConfigFile", 73 globalOrchestrator: "kubernetes", 74 envOrchestrator: "swarm", 75 expectedOrchestrator: "swarm", 76 expectedKubernetes: false, 77 expectedSwarm: true, 78 }, 79 { 80 doc: "flagOverridesEnv", 81 envOrchestrator: "kubernetes", 82 flagOrchestrator: "swarm", 83 expectedOrchestrator: "swarm", 84 expectedKubernetes: false, 85 expectedSwarm: true, 86 }, 87 } 88 89 for _, testcase := range testcases { 90 t.Run(testcase.doc, func(t *testing.T) { 91 if testcase.envOrchestrator != "" { 92 defer env.Patch(t, "DOCKER_STACK_ORCHESTRATOR", testcase.envOrchestrator)() 93 } 94 orchestrator, err := GetStackOrchestrator(testcase.flagOrchestrator, testcase.contextOrchestrator, testcase.globalOrchestrator, ioutil.Discard) 95 assert.NilError(t, err) 96 assert.Check(t, is.Equal(testcase.expectedKubernetes, orchestrator.HasKubernetes())) 97 assert.Check(t, is.Equal(testcase.expectedSwarm, orchestrator.HasSwarm())) 98 assert.Check(t, is.Equal(testcase.expectedOrchestrator, string(orchestrator))) 99 }) 100 } 101 }