github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/common/masterFlags_test.go (about)

     1  package common
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/spf13/cobra"
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/config"
    10  )
    11  
    12  var (
    13  	opts = HelmOptions{}
    14  	cfg  = &config.Data{}
    15  )
    16  
    17  func NewTestCmd() *cobra.Command {
    18  
    19  	cmd := &cobra.Command{
    20  		Use:    "test",
    21  		Hidden: true,
    22  		Run: func(cmd *cobra.Command, args []string) {
    23  			ProcessMasterFlags(cmd, &opts, cfg)
    24  		},
    25  	}
    26  
    27  	PopulateMasterFlags(cmd, &opts)
    28  	PopulateHelmFlags(cmd, &opts)
    29  	return cmd
    30  }
    31  
    32  func TestMasterCmds(t *testing.T) {
    33  	t.Run("Test all master flags set and isnecure", func(t *testing.T) {
    34  		cmd := NewTestCmd()
    35  		cmd.SetArgs([]string{"--master-insecure", "true",
    36  			"--agent-prefix", "dummy-agent-prefix",
    37  			"--api-prefix", "dummy-api-prefix",
    38  			"--ui-prefix", "dummy-ui-prefix",
    39  			"--root-domain", "dummy-root-domain",
    40  			"--dry-run", "true",
    41  			"--no-confirm", "true",
    42  			"--agent-token", "dummy-token",
    43  			"--agent-uri", "dummy-uri",
    44  			"--ui-prefix", "dummy-ui-prefix",
    45  		})
    46  		err := cmd.Execute()
    47  		assert.NoError(t, err)
    48  		assert.Equal(t, true, opts.Master.Insecure)
    49  		assert.Equal(t, true, opts.DryRun)
    50  		assert.Equal(t, true, opts.NoConfirm)
    51  		assert.Equal(t, "dummy-token", opts.Master.AgentToken)
    52  		assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent)
    53  		assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix)
    54  		assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix)
    55  		assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix)
    56  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
    57  		assert.Equal(t, "http://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api)
    58  		assert.Equal(t, "http://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui)
    59  	})
    60  	t.Run("Test all master flags set and secure", func(t *testing.T) {
    61  		cmd := NewTestCmd()
    62  		cmd.SetArgs([]string{"--agent-prefix", "dummy-agent-prefix",
    63  			"--api-prefix", "dummy-api-prefix",
    64  			"--ui-prefix", "dummy-ui-prefix",
    65  			"--root-domain", "dummy-root-domain",
    66  			"--dry-run", "true",
    67  			"--no-confirm", "true",
    68  			"--agent-token", "dummy-token",
    69  			"--agent-uri", "dummy-uri",
    70  			"--ui-prefix", "dummy-ui-prefix",
    71  		})
    72  		err := cmd.Execute()
    73  		assert.NoError(t, err)
    74  		assert.Equal(t, false, opts.Master.Insecure)
    75  		assert.Equal(t, true, opts.DryRun)
    76  		assert.Equal(t, true, opts.NoConfirm)
    77  		assert.Equal(t, "dummy-token", opts.Master.AgentToken)
    78  		assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent)
    79  		assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix)
    80  		assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix)
    81  		assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix)
    82  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
    83  		assert.Equal(t, "https://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api)
    84  		assert.Equal(t, "https://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui)
    85  	})
    86  
    87  	t.Run("Test all master flags set and isnecure former cloud flags", func(t *testing.T) {
    88  		cmd := NewTestCmd()
    89  		cmd.SetArgs([]string{"--cloud-insecure", "true",
    90  			"--cloud-agent-prefix", "dummy-agent-prefix",
    91  			"--cloud-api-prefix", "dummy-api-prefix",
    92  			"--cloud-ui-prefix", "dummy-ui-prefix",
    93  			"--cloud-root-domain", "dummy-root-domain",
    94  			"--dry-run", "true",
    95  			"--no-confirm", "true",
    96  			"--agent-token", "dummy-token",
    97  			"--agent-uri", "dummy-uri",
    98  			"--ui-prefix", "dummy-ui-prefix",
    99  		})
   100  		err := cmd.Execute()
   101  		assert.NoError(t, err)
   102  		assert.Equal(t, true, opts.Master.Insecure)
   103  		assert.Equal(t, true, opts.DryRun)
   104  		assert.Equal(t, true, opts.NoConfirm)
   105  		assert.Equal(t, "dummy-token", opts.Master.AgentToken)
   106  		assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent)
   107  		assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix)
   108  		assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix)
   109  		assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix)
   110  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
   111  		assert.Equal(t, "http://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api)
   112  		assert.Equal(t, "http://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui)
   113  	})
   114  	t.Run("Test all master flags set and secure former cloud flags", func(t *testing.T) {
   115  		cmd := NewTestCmd()
   116  		cmd.SetArgs([]string{"--cloud-agent-prefix", "dummy-agent-prefix",
   117  			"--cloud-api-prefix", "dummy-api-prefix",
   118  			"--cloud-ui-prefix", "dummy-ui-prefix",
   119  			"--cloud-root-domain", "dummy-root-domain",
   120  			"--dry-run", "true",
   121  			"--no-confirm", "true",
   122  			"--agent-token", "dummy-token",
   123  			"--agent-uri", "dummy-uri",
   124  			"--ui-prefix", "dummy-ui-prefix",
   125  		})
   126  		err := cmd.Execute()
   127  		assert.NoError(t, err)
   128  		assert.Equal(t, false, opts.Master.Insecure)
   129  		assert.Equal(t, true, opts.DryRun)
   130  		assert.Equal(t, true, opts.NoConfirm)
   131  		assert.Equal(t, "dummy-token", opts.Master.AgentToken)
   132  		assert.Equal(t, "dummy-uri", opts.Master.URIs.Agent)
   133  		assert.Equal(t, "dummy-ui-prefix", opts.Master.UiUrlPrefix)
   134  		assert.Equal(t, "dummy-api-prefix", opts.Master.ApiUrlPrefix)
   135  		assert.Equal(t, "dummy-agent-prefix", opts.Master.AgentUrlPrefix)
   136  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
   137  		assert.Equal(t, "https://dummy-api-prefix.dummy-root-domain", opts.Master.URIs.Api)
   138  		assert.Equal(t, "https://dummy-ui-prefix.dummy-root-domain", opts.Master.URIs.Ui)
   139  	})
   140  
   141  	t.Run("Test defaults for master flags secure", func(t *testing.T) {
   142  		cmd := NewTestCmd()
   143  		cmd.SetArgs([]string{})
   144  		err := cmd.Execute()
   145  		assert.NoError(t, err)
   146  		assert.Equal(t, false, opts.Master.Insecure)
   147  		assert.Equal(t, false, opts.DryRun)
   148  		assert.Equal(t, false, opts.NoConfirm)
   149  		assert.Equal(t, "", opts.Master.AgentToken)
   150  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   151  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   152  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   153  		assert.Equal(t, "testkube.io", opts.Master.RootDomain)
   154  		assert.Equal(t, "https://api.testkube.io", opts.Master.URIs.Api)
   155  		assert.Equal(t, "https://app.testkube.io", opts.Master.URIs.Ui)
   156  		assert.Equal(t, "agent.testkube.io:443", opts.Master.URIs.Agent)
   157  	})
   158  
   159  	t.Run("Test defaults for master flags insecure", func(t *testing.T) {
   160  		cmd := NewTestCmd()
   161  		cmd.SetArgs([]string{"--master-insecure", "true"})
   162  		err := cmd.Execute()
   163  		assert.NoError(t, err)
   164  		assert.Equal(t, true, opts.Master.Insecure)
   165  		assert.Equal(t, false, opts.DryRun)
   166  		assert.Equal(t, false, opts.NoConfirm)
   167  		assert.Equal(t, "", opts.Master.AgentToken)
   168  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   169  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   170  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   171  		assert.Equal(t, "testkube.io", opts.Master.RootDomain)
   172  		assert.Equal(t, "http://api.testkube.io", opts.Master.URIs.Api)
   173  		assert.Equal(t, "http://app.testkube.io", opts.Master.URIs.Ui)
   174  		assert.Equal(t, "agent.testkube.io:443", opts.Master.URIs.Agent)
   175  	})
   176  
   177  	t.Run("Test defaults for master flags insecure former cloud flags", func(t *testing.T) {
   178  		cmd := NewTestCmd()
   179  		cmd.SetArgs([]string{"--cloud-insecure", "true"})
   180  		err := cmd.Execute()
   181  		assert.NoError(t, err)
   182  		assert.Equal(t, true, opts.Master.Insecure)
   183  		assert.Equal(t, false, opts.DryRun)
   184  		assert.Equal(t, false, opts.NoConfirm)
   185  		assert.Equal(t, "", opts.Master.AgentToken)
   186  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   187  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   188  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   189  		assert.Equal(t, "testkube.io", opts.Master.RootDomain)
   190  		assert.Equal(t, "http://api.testkube.io", opts.Master.URIs.Api)
   191  		assert.Equal(t, "http://app.testkube.io", opts.Master.URIs.Ui)
   192  		assert.Equal(t, "agent.testkube.io:443", opts.Master.URIs.Agent)
   193  	})
   194  
   195  	t.Run("Test defaults for master flags secure with rood modified", func(t *testing.T) {
   196  		cmd := NewTestCmd()
   197  		cmd.SetArgs([]string{"--root-domain", "dummy-root-domain"})
   198  		err := cmd.Execute()
   199  		assert.NoError(t, err)
   200  		assert.Equal(t, false, opts.Master.Insecure)
   201  		assert.Equal(t, false, opts.DryRun)
   202  		assert.Equal(t, false, opts.NoConfirm)
   203  		assert.Equal(t, "", opts.Master.AgentToken)
   204  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   205  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   206  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   207  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
   208  		assert.Equal(t, "https://api.dummy-root-domain", opts.Master.URIs.Api)
   209  		assert.Equal(t, "https://app.dummy-root-domain", opts.Master.URIs.Ui)
   210  		assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent)
   211  	})
   212  
   213  	t.Run("Test defaults for master flags insecure with rood modified", func(t *testing.T) {
   214  		cmd := NewTestCmd()
   215  		cmd.SetArgs([]string{"--master-insecure", "true", "--root-domain", "dummy-root-domain"})
   216  		err := cmd.Execute()
   217  		assert.NoError(t, err)
   218  		assert.Equal(t, true, opts.Master.Insecure)
   219  		assert.Equal(t, false, opts.DryRun)
   220  		assert.Equal(t, false, opts.NoConfirm)
   221  		assert.Equal(t, "", opts.Master.AgentToken)
   222  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   223  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   224  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   225  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
   226  		assert.Equal(t, "http://api.dummy-root-domain", opts.Master.URIs.Api)
   227  		assert.Equal(t, "http://app.dummy-root-domain", opts.Master.URIs.Ui)
   228  		assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent)
   229  	})
   230  
   231  	t.Run("Test defaults for master flags secure with root modifiedc former cloud flags", func(t *testing.T) {
   232  		cmd := NewTestCmd()
   233  		cmd.SetArgs([]string{"--cloud-root-domain", "dummy-root-domain"})
   234  		err := cmd.Execute()
   235  		assert.NoError(t, err)
   236  		assert.Equal(t, false, opts.Master.Insecure)
   237  		assert.Equal(t, false, opts.DryRun)
   238  		assert.Equal(t, false, opts.NoConfirm)
   239  		assert.Equal(t, "", opts.Master.AgentToken)
   240  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   241  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   242  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   243  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
   244  		assert.Equal(t, "https://api.dummy-root-domain", opts.Master.URIs.Api)
   245  		assert.Equal(t, "https://app.dummy-root-domain", opts.Master.URIs.Ui)
   246  		assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent)
   247  	})
   248  
   249  	t.Run("Test defaults for master flags insecure with root modified former cloud flags", func(t *testing.T) {
   250  		cmd := NewTestCmd()
   251  		cmd.SetArgs([]string{"--cloud-insecure", "true", "--cloud-root-domain", "dummy-root-domain"})
   252  		err := cmd.Execute()
   253  		assert.NoError(t, err)
   254  		assert.Equal(t, true, opts.Master.Insecure)
   255  		assert.Equal(t, false, opts.DryRun)
   256  		assert.Equal(t, false, opts.NoConfirm)
   257  		assert.Equal(t, "", opts.Master.AgentToken)
   258  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   259  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   260  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   261  		assert.Equal(t, "dummy-root-domain", opts.Master.RootDomain)
   262  		assert.Equal(t, "http://api.dummy-root-domain", opts.Master.URIs.Api)
   263  		assert.Equal(t, "http://app.dummy-root-domain", opts.Master.URIs.Ui)
   264  		assert.Equal(t, "agent.dummy-root-domain:443", opts.Master.URIs.Agent)
   265  	})
   266  
   267  	t.Run("Test defaults for master flags secure with agent uri modified", func(t *testing.T) {
   268  		cmd := NewTestCmd()
   269  		cmd.SetArgs([]string{"--agent-uri", "dummy-agent-uri"})
   270  		err := cmd.Execute()
   271  		assert.NoError(t, err)
   272  		assert.Equal(t, false, opts.Master.Insecure)
   273  		assert.Equal(t, false, opts.DryRun)
   274  		assert.Equal(t, false, opts.NoConfirm)
   275  		assert.Equal(t, "", opts.Master.AgentToken)
   276  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   277  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   278  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   279  		assert.Equal(t, "testkube.io", opts.Master.RootDomain)
   280  		assert.Equal(t, "https://api.testkube.io", opts.Master.URIs.Api)
   281  		assert.Equal(t, "https://app.testkube.io", opts.Master.URIs.Ui)
   282  		assert.Equal(t, "dummy-agent-uri", opts.Master.URIs.Agent)
   283  	})
   284  
   285  	t.Run("Test defaults for master flags insecure with agent uri modified", func(t *testing.T) {
   286  		cmd := NewTestCmd()
   287  		cmd.SetArgs([]string{"--master-insecure", "true", "--agent-uri", "dummy-agent-uri"})
   288  		err := cmd.Execute()
   289  		assert.NoError(t, err)
   290  		assert.Equal(t, true, opts.Master.Insecure)
   291  		assert.Equal(t, false, opts.DryRun)
   292  		assert.Equal(t, false, opts.NoConfirm)
   293  		assert.Equal(t, "", opts.Master.AgentToken)
   294  		assert.Equal(t, "app", opts.Master.UiUrlPrefix)
   295  		assert.Equal(t, "api", opts.Master.ApiUrlPrefix)
   296  		assert.Equal(t, "agent", opts.Master.AgentUrlPrefix)
   297  		assert.Equal(t, "testkube.io", opts.Master.RootDomain)
   298  		assert.Equal(t, "http://api.testkube.io", opts.Master.URIs.Api)
   299  		assert.Equal(t, "http://app.testkube.io", opts.Master.URIs.Ui)
   300  		assert.Equal(t, "dummy-agent-uri", opts.Master.URIs.Agent)
   301  	})
   302  
   303  	t.Run("Test --feature-logs-v2 feature disabled by default", func(t *testing.T) {
   304  		cmd := NewTestCmd()
   305  		err := cmd.Execute()
   306  		assert.NoError(t, err)
   307  		assert.Equal(t, false, opts.Master.Features.LogsV2)
   308  	})
   309  
   310  	t.Run("Test --feature-logs-v2 feature flag", func(t *testing.T) {
   311  		cmd := NewTestCmd()
   312  		cmd.SetArgs([]string{"--feature-logs-v2", "true"})
   313  		err := cmd.Execute()
   314  		assert.NoError(t, err)
   315  		assert.Equal(t, true, opts.Master.Features.LogsV2)
   316  	})
   317  
   318  	t.Run("Test --root-domain for master flags", func(t *testing.T) {
   319  		cmd := NewTestCmd()
   320  		cmd.SetArgs([]string{"--root-domain", "test-domain"})
   321  		err := cmd.Execute()
   322  		assert.NoError(t, err)
   323  		assert.Equal(t, "test-domain", opts.Master.RootDomain)
   324  	})
   325  
   326  	t.Run("Test deprecated --cloud-root-domain for master flags", func(t *testing.T) {
   327  		cmd := NewTestCmd()
   328  		cmd.SetArgs([]string{"--cloud-root-domain", "test-domain"})
   329  		err := cmd.Execute()
   330  		assert.NoError(t, err)
   331  		assert.Equal(t, "test-domain", opts.Master.RootDomain)
   332  	})
   333  
   334  	t.Run("Test deprecated --pro-root-domain for master flags", func(t *testing.T) {
   335  		cmd := NewTestCmd()
   336  		cmd.SetArgs([]string{"--pro-root-domain", "test-domain"})
   337  		err := cmd.Execute()
   338  		assert.NoError(t, err)
   339  		assert.Equal(t, "test-domain", opts.Master.RootDomain)
   340  	})
   341  
   342  	t.Run("Test deprecated --cloud-root-domain and --pro-root-domain for master flags", func(t *testing.T) {
   343  		cmd := NewTestCmd()
   344  		cmd.SetArgs([]string{"--pro-root-domain", "pro-test-domain", "--cloud-root-domain", "cloud-test-domain"})
   345  		err := cmd.Execute()
   346  		assert.NoError(t, err)
   347  		assert.Equal(t, "pro-test-domain", opts.Master.RootDomain)
   348  	})
   349  }