github.com/deis/deis@v1.13.5-0.20170519182049-1d9e59fbdbfc/deisctl/config/config_test.go (about) 1 package config 2 3 import ( 4 "bytes" 5 "encoding/base64" 6 "io/ioutil" 7 "os" 8 "testing" 9 10 "github.com/deis/deis/deisctl/config/model" 11 "github.com/deis/deis/deisctl/test/mock" 12 ) 13 14 func TestGetConfig(t *testing.T) { 15 t.Parallel() 16 17 testMock := mock.ConfigBackend{Expected: []*model.ConfigNode{{Key: "/deis/controller/testing", Value: "foo"}, {Key: "/deis/controller/port", Value: "8000"}}} 18 testWriter := bytes.Buffer{} 19 20 err := doConfig("controller", "get", []string{"testing", "port"}, testMock, &testWriter) 21 22 if err != nil { 23 t.Fatal(err) 24 } 25 26 expected := "foo\n8000\n" 27 output := testWriter.String() 28 if output != expected { 29 t.Errorf("Expected: '%s', Got:'%s'", expected, output) 30 } 31 } 32 33 func TestGetConfigError(t *testing.T) { 34 t.Parallel() 35 36 testMock := mock.ConfigBackend{Expected: []*model.ConfigNode{{Key: "/deis/controller/testing", Value: "foo"}}} 37 testWriter := bytes.Buffer{} 38 39 err := doConfig("controller", "get", []string{"port"}, testMock, &testWriter) 40 41 if err == nil { 42 t.Fatal("Error Expected") 43 } 44 } 45 46 func TestSetConfig(t *testing.T) { 47 t.Parallel() 48 49 testMock := mock.ConfigBackend{Expected: []*model.ConfigNode{{Key: "/deis/controller/testing", Value: "foo"}, {Key: "/deis/controller/port", Value: "8000"}}} 50 testWriter := bytes.Buffer{} 51 52 err := doConfig("controller", "set", []string{"testing=bar", "port=1000"}, testMock, &testWriter) 53 54 if err != nil { 55 t.Fatal(err) 56 } 57 58 expected := "bar\n1000\n" 59 output := testWriter.String() 60 if output != expected { 61 t.Errorf("Expected: '%s', Got:'%s'", expected, output) 62 } 63 } 64 65 func TestSetConfigError(t *testing.T) { 66 t.Parallel() 67 68 testMock := mock.ConfigBackend{Expected: []*model.ConfigNode{}} 69 testWriter := bytes.Buffer{} 70 71 expected := "'foo' does not match the pattern 'key=var', ex: foo=bar\n" 72 err := doConfig("controller", "set", []string{"foo", "=", "bar"}, testMock, &testWriter) 73 74 if err.Error() != expected { 75 t.Errorf("Expected: '%s', Got:'%q'", expected, err) 76 } 77 } 78 79 func TestDeleteConfig(t *testing.T) { 80 t.Parallel() 81 82 testMock := mock.ConfigBackend{Expected: []*model.ConfigNode{{Key: "/deis/controller/testing", Value: "foo"}, {Key: "/deis/controller/port", Value: "8000"}}} 83 testWriter := bytes.Buffer{} 84 85 err := doConfig("controller", "rm", []string{"testing", "port"}, testMock, &testWriter) 86 87 if err != nil { 88 t.Fatal(err) 89 } 90 91 expected := "testing\nport\n" 92 output := testWriter.String() 93 if output != expected { 94 t.Errorf("Expected: '%s', Got:'%s'", expected, output) 95 } 96 } 97 98 // TestConfigSSHPrivateKey ensures private keys are base64 encoded from file path 99 func TestConfigSSHPrivateKey(t *testing.T) { 100 t.Parallel() 101 102 f, err := writeTempFile("private-key") 103 if err != nil { 104 t.Fatal(err) 105 } 106 107 val, err := valueForPath("/deis/platform/sshPrivateKey", f.Name()) 108 if err != nil { 109 t.Fatal(err) 110 } 111 112 encoded := base64.StdEncoding.EncodeToString([]byte("private-key")) 113 114 if val != encoded { 115 t.Fatalf("expected: %v, got: %v", encoded, val) 116 } 117 } 118 119 func TestConfigRouterKey(t *testing.T) { 120 t.Parallel() 121 122 f, err := writeTempFile("router-key") 123 if err != nil { 124 t.Fatal(err) 125 } 126 127 val, err := valueForPath("/deis/router/sslKey", f.Name()) 128 if err != nil { 129 t.Fatal(err) 130 } 131 132 if val != "router-key" { 133 t.Fatalf("expected: router-key, got: %v", val) 134 } 135 136 } 137 138 func TestConfigRouterCert(t *testing.T) { 139 t.Parallel() 140 141 f, err := writeTempFile("router-cert") 142 if err != nil { 143 t.Fatal(err) 144 } 145 146 val, err := valueForPath("/deis/router/sslCert", f.Name()) 147 if err != nil { 148 t.Fatal(err) 149 } 150 151 if val != "router-cert" { 152 t.Fatalf("expected: router-cert, got: %v", val) 153 } 154 155 } 156 157 func writeTempFile(data string) (*os.File, error) { 158 f, err := ioutil.TempFile("", "deisctl") 159 if err != nil { 160 return nil, err 161 } 162 163 f.Write([]byte(data)) 164 defer f.Close() 165 166 return f, nil 167 }