github.com/werf/3p-helm@v2.8.1+incompatible/cmd/helm/reset_test.go (about) 1 /* 2 Copyright 2016 The Kubernetes Authors All rights reserved. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package main 18 19 import ( 20 "bytes" 21 "io/ioutil" 22 "os" 23 "strings" 24 "testing" 25 26 "k8s.io/kubernetes/pkg/apis/core" 27 "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake" 28 29 "k8s.io/helm/pkg/helm" 30 "k8s.io/helm/pkg/helm/helmpath" 31 "k8s.io/helm/pkg/proto/hapi/release" 32 ) 33 34 func TestResetCmd(t *testing.T) { 35 home, err := ioutil.TempDir("", "helm_home") 36 if err != nil { 37 t.Fatal(err) 38 } 39 defer os.Remove(home) 40 41 var buf bytes.Buffer 42 c := &helm.FakeClient{} 43 fc := fake.NewSimpleClientset() 44 cmd := &resetCmd{ 45 out: &buf, 46 home: helmpath.Home(home), 47 client: c, 48 kubeClient: fc, 49 namespace: core.NamespaceDefault, 50 } 51 if err := cmd.run(); err != nil { 52 t.Errorf("unexpected error: %v", err) 53 } 54 actions := fc.Actions() 55 if len(actions) != 3 { 56 t.Errorf("Expected 3 actions, got %d", len(actions)) 57 } 58 expected := "Tiller (the Helm server-side component) has been uninstalled from your Kubernetes Cluster." 59 if !strings.Contains(buf.String(), expected) { 60 t.Errorf("expected %q, got %q", expected, buf.String()) 61 } 62 if _, err := os.Stat(home); err != nil { 63 t.Errorf("Helm home directory %s does not exists", home) 64 } 65 } 66 67 func TestResetCmd_removeHelmHome(t *testing.T) { 68 home, err := ioutil.TempDir("", "helm_home") 69 if err != nil { 70 t.Fatal(err) 71 } 72 defer os.Remove(home) 73 74 var buf bytes.Buffer 75 c := &helm.FakeClient{} 76 fc := fake.NewSimpleClientset() 77 cmd := &resetCmd{ 78 removeHelmHome: true, 79 out: &buf, 80 home: helmpath.Home(home), 81 client: c, 82 kubeClient: fc, 83 namespace: core.NamespaceDefault, 84 } 85 if err := cmd.run(); err != nil { 86 t.Errorf("unexpected error: %v", err) 87 } 88 actions := fc.Actions() 89 if len(actions) != 3 { 90 t.Errorf("Expected 3 actions, got %d", len(actions)) 91 } 92 expected := "Tiller (the Helm server-side component) has been uninstalled from your Kubernetes Cluster." 93 if !strings.Contains(buf.String(), expected) { 94 t.Errorf("expected %q, got %q", expected, buf.String()) 95 } 96 if _, err := os.Stat(home); err == nil { 97 t.Errorf("Helm home directory %s already exists", home) 98 } 99 } 100 101 func TestReset_deployedReleases(t *testing.T) { 102 home, err := ioutil.TempDir("", "helm_home") 103 if err != nil { 104 t.Fatal(err) 105 } 106 defer os.Remove(home) 107 108 var buf bytes.Buffer 109 resp := []*release.Release{ 110 helm.ReleaseMock(&helm.MockReleaseOptions{Name: "atlas-guide", StatusCode: release.Status_DEPLOYED}), 111 } 112 c := &helm.FakeClient{ 113 Rels: resp, 114 } 115 fc := fake.NewSimpleClientset() 116 cmd := &resetCmd{ 117 out: &buf, 118 home: helmpath.Home(home), 119 client: c, 120 kubeClient: fc, 121 namespace: core.NamespaceDefault, 122 } 123 err = cmd.run() 124 expected := "there are still 1 deployed releases (Tip: use --force)" 125 if !strings.Contains(err.Error(), expected) { 126 t.Errorf("unexpected error: %v", err) 127 } 128 if _, err := os.Stat(home); err != nil { 129 t.Errorf("Helm home directory %s does not exists", home) 130 } 131 } 132 133 func TestReset_forceFlag(t *testing.T) { 134 home, err := ioutil.TempDir("", "helm_home") 135 if err != nil { 136 t.Fatal(err) 137 } 138 defer os.Remove(home) 139 140 var buf bytes.Buffer 141 resp := []*release.Release{ 142 helm.ReleaseMock(&helm.MockReleaseOptions{Name: "atlas-guide", StatusCode: release.Status_DEPLOYED}), 143 } 144 c := &helm.FakeClient{ 145 Rels: resp, 146 } 147 fc := fake.NewSimpleClientset() 148 cmd := &resetCmd{ 149 force: true, 150 out: &buf, 151 home: helmpath.Home(home), 152 client: c, 153 kubeClient: fc, 154 namespace: core.NamespaceDefault, 155 } 156 if err := cmd.run(); err != nil { 157 t.Errorf("unexpected error: %v", err) 158 } 159 actions := fc.Actions() 160 if len(actions) != 3 { 161 t.Errorf("Expected 3 actions, got %d", len(actions)) 162 } 163 expected := "Tiller (the Helm server-side component) has been uninstalled from your Kubernetes Cluster." 164 if !strings.Contains(buf.String(), expected) { 165 t.Errorf("expected %q, got %q", expected, buf.String()) 166 } 167 if _, err := os.Stat(home); err != nil { 168 t.Errorf("Helm home directory %s does not exists", home) 169 } 170 }