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  }