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  }