github.com/vmware/transport-go@v1.3.4/plank/pkg/server/helpers_test.go (about) 1 package server 2 3 import ( 4 "encoding/json" 5 "github.com/spf13/pflag" 6 "github.com/stretchr/testify/assert" 7 "os" 8 "path/filepath" 9 "testing" 10 "time" 11 ) 12 13 func TestGeneratePlatformServerConfig_Default(t *testing.T) { 14 // arrange 15 f := &serverConfigFactory{} 16 pflag.CommandLine = pflag.NewFlagSet("", pflag.ExitOnError) 17 18 // act 19 testArgs := []string{""} 20 f.configureFlags(pflag.CommandLine) 21 f.parseFlags(testArgs) 22 config, err := generatePlatformServerConfig(f) 23 24 // assert 25 wd, _ := os.Getwd() 26 assert.Nil(t, err) 27 assert.EqualValues(t, "localhost", config.Host) 28 assert.EqualValues(t, 30080, config.Port) 29 assert.EqualValues(t, wd, config.RootDir) 30 assert.Empty(t, config.StaticDir) 31 assert.EqualValues(t, 5*time.Minute, config.ShutdownTimeout) 32 assert.EqualValues(t, "stdout", config.LogConfig.OutputLog) 33 assert.EqualValues(t, "stdout", config.LogConfig.AccessLog) 34 assert.EqualValues(t, "stderr", config.LogConfig.ErrorLog) 35 assert.EqualValues(t, wd, config.LogConfig.Root) 36 assert.False(t, config.Debug) 37 assert.False(t, config.NoBanner) 38 assert.False(t, config.EnablePrometheus) 39 assert.EqualValues(t, time.Minute, config.RestBridgeTimeout) 40 assert.EqualValues(t, "/ws", config.FabricConfig.FabricEndpoint) 41 assert.EqualValues(t, "/topic", config.FabricConfig.EndpointConfig.TopicPrefix) 42 assert.EqualValues(t, "/queue", config.FabricConfig.EndpointConfig.UserQueuePrefix) 43 assert.EqualValues(t, "/pub", config.FabricConfig.EndpointConfig.AppRequestPrefix) 44 assert.EqualValues(t, "/pub/queue", config.FabricConfig.EndpointConfig.AppRequestQueuePrefix) 45 assert.EqualValues(t, 60000, config.FabricConfig.EndpointConfig.Heartbeat) 46 } 47 48 func TestGeneratePlatformServerConfig_CertConfig(t *testing.T) { 49 // arrange 50 f := &serverConfigFactory{} 51 pflag.CommandLine = pflag.NewFlagSet("", pflag.ExitOnError) 52 dummyCert := filepath.Join(os.TempDir(), "plank-tests", "cert.pem") 53 dummyKey := filepath.Join(os.TempDir(), "plank-tests", "key.pem") 54 55 // act 56 testArgs := []string{"", "--cert", dummyCert, "--cert-key", dummyKey} 57 f.configureFlags(pflag.CommandLine) 58 f.parseFlags(testArgs) 59 config, err := generatePlatformServerConfig(f) 60 61 // assert 62 assert.Nil(t, err) 63 assert.EqualValues(t, dummyCert, config.TLSCertConfig.CertFile) 64 assert.EqualValues(t, dummyKey, config.TLSCertConfig.KeyFile) 65 } 66 67 func TestGeneratePlatformServerConfig_SpaConfig(t *testing.T) { 68 // arrange 69 f := &serverConfigFactory{} 70 pflag.CommandLine = pflag.NewFlagSet("", pflag.ExitOnError) 71 spaRoot := filepath.Join(os.TempDir(), "plank-tests", "spaRoot") 72 73 // act 74 testArgs := []string{"", "--spa-path", spaRoot} 75 f.configureFlags(pflag.CommandLine) 76 f.parseFlags(testArgs) 77 config, err := generatePlatformServerConfig(f) 78 79 // assert 80 assert.Nil(t, err) 81 assert.EqualValues(t, spaRoot, config.SpaConfig.RootFolder) 82 assert.EqualValues(t, "spaRoot", config.SpaConfig.BaseUri) 83 } 84 85 func TestGeneratePlatformServerConfig_ConfigFile(t *testing.T) { 86 // arrange 87 f := &serverConfigFactory{} 88 pflag.CommandLine = pflag.NewFlagSet("", pflag.ExitOnError) 89 configFile, err := CreateConfigJsonForTest() 90 if err != nil { 91 assert.FailNow(t, err.Error()) 92 } 93 defer os.RemoveAll(filepath.Dir(configFile)) 94 95 // act 96 testArgs := []string{"", "--config-file", configFile} 97 f.configureFlags(pflag.CommandLine) 98 f.parseFlags(testArgs) 99 config, err := generatePlatformServerConfig(f) 100 101 // assert 102 assert.Nil(t, err) 103 assert.EqualValues(t, "localhost", config.Host) 104 assert.EqualValues(t, 31234, config.Port) 105 assert.EqualValues(t, "./", config.RootDir) 106 assert.Empty(t, config.StaticDir) 107 assert.EqualValues(t, 5*time.Minute, config.ShutdownTimeout) 108 assert.EqualValues(t, "stdout", config.LogConfig.OutputLog) 109 assert.EqualValues(t, "access.log", config.LogConfig.AccessLog) 110 assert.EqualValues(t, "errors.log", config.LogConfig.ErrorLog) 111 assert.EqualValues(t, ".", config.LogConfig.Root) 112 assert.True(t, config.Debug) 113 assert.True(t, config.NoBanner) 114 assert.True(t, config.EnablePrometheus) 115 assert.EqualValues(t, time.Minute, config.RestBridgeTimeout) 116 assert.EqualValues(t, "cert/server.key", config.TLSCertConfig.KeyFile) 117 assert.EqualValues(t, "cert/fullchain.pem", config.TLSCertConfig.CertFile) 118 assert.EqualValues(t, "/ws", config.FabricConfig.FabricEndpoint) 119 assert.EqualValues(t, "/topic", config.FabricConfig.EndpointConfig.TopicPrefix) 120 assert.EqualValues(t, "/queue", config.FabricConfig.EndpointConfig.UserQueuePrefix) 121 assert.EqualValues(t, "/pub", config.FabricConfig.EndpointConfig.AppRequestPrefix) 122 assert.EqualValues(t, "/pub/queue", config.FabricConfig.EndpointConfig.AppRequestQueuePrefix) 123 assert.EqualValues(t, 60000, config.FabricConfig.EndpointConfig.Heartbeat) 124 assert.EqualValues(t, "public/", config.SpaConfig.RootFolder) 125 assert.EqualValues(t, "/", config.SpaConfig.BaseUri) 126 assert.EqualValues(t, "public/assets:/assets", config.SpaConfig.StaticAssets[0]) 127 } 128 129 func TestMarshalResponseBody_byteSlice(t *testing.T) { 130 payload := []byte("hello") 131 results, err := ensureResponseInByteSlice(payload) 132 133 assert.Nil(t, err) 134 assert.EqualValues(t, payload, results) 135 } 136 137 func TestMarshalResponseBody_nonByteSlice(t *testing.T) { 138 payload := PlatformServerConfig{} 139 jsonMarshalled, _ := json.Marshal(payload) 140 results, err := ensureResponseInByteSlice(payload) 141 142 assert.Nil(t, err) 143 assert.EqualValues(t, jsonMarshalled, results) 144 }