-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cli: allow setting namespace and region in the
nomad ui
command (#1…
- Loading branch information
Showing
4 changed files
with
131 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
```release-note:improvement | ||
cli: Allow specifying namesapce and region in the `nomad ui` command | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
package command | ||
|
||
import ( | ||
"fmt" | ||
"strings" | ||
"testing" | ||
|
||
"github.com/mitchellh/cli" | ||
"github.com/stretchr/testify/require" | ||
) | ||
|
||
func TestCommand_Ui(t *testing.T) { | ||
t.Parallel() | ||
|
||
type testCaseSetupFn func(*testing.T) | ||
|
||
cases := []struct { | ||
Name string | ||
SetupFn testCaseSetupFn | ||
Args []string | ||
ExpectedURL string | ||
}{ | ||
{ | ||
Name: "default values", | ||
ExpectedURL: "http://127.0.0.1:4646", | ||
}, | ||
{ | ||
Name: "set namespace via flag", | ||
Args: []string{"-namespace=dev"}, | ||
ExpectedURL: "http://127.0.0.1:4646?namespace=dev", | ||
}, | ||
{ | ||
Name: "set region via flag", | ||
Args: []string{"-region=earth"}, | ||
ExpectedURL: "http://127.0.0.1:4646?region=earth", | ||
}, | ||
{ | ||
Name: "set region and namespace via flag", | ||
Args: []string{"-region=earth", "-namespace=dev"}, | ||
ExpectedURL: "http://127.0.0.1:4646?namespace=dev®ion=earth", | ||
}, | ||
{ | ||
Name: "set namespace via env var", | ||
SetupFn: func(t *testing.T) { | ||
setEnv(t, "NOMAD_NAMESPACE", "dev") | ||
}, | ||
ExpectedURL: "http://127.0.0.1:4646?namespace=dev", | ||
}, | ||
{ | ||
Name: "set region via flag", | ||
SetupFn: func(t *testing.T) { | ||
setEnv(t, "NOMAD_REGION", "earth") | ||
}, | ||
ExpectedURL: "http://127.0.0.1:4646?region=earth", | ||
}, | ||
{ | ||
Name: "set region and namespace via flag", | ||
SetupFn: func(t *testing.T) { | ||
setEnv(t, "NOMAD_REGION", "earth") | ||
setEnv(t, "NOMAD_NAMESPACE", "dev") | ||
}, | ||
ExpectedURL: "http://127.0.0.1:4646?namespace=dev®ion=earth", | ||
}, | ||
{ | ||
Name: "set region and namespace via flag", | ||
SetupFn: func(t *testing.T) { | ||
setEnv(t, "NOMAD_REGION", "earth") | ||
setEnv(t, "NOMAD_NAMESPACE", "dev") | ||
}, | ||
ExpectedURL: "http://127.0.0.1:4646?namespace=dev®ion=earth", | ||
}, | ||
{ | ||
Name: "flags have higher precedence", | ||
SetupFn: func(t *testing.T) { | ||
setEnv(t, "NOMAD_REGION", "earth") | ||
setEnv(t, "NOMAD_NAMESPACE", "dev") | ||
}, | ||
Args: []string{ | ||
"-region=mars", | ||
"-namespace=prod", | ||
}, | ||
ExpectedURL: "http://127.0.0.1:4646?namespace=prod®ion=mars", | ||
}, | ||
} | ||
|
||
for _, tc := range cases { | ||
t.Run(tc.Name, func(t *testing.T) { | ||
// Make sure environment variables are clean. | ||
setEnv(t, "NOMAD_NAMESPACE", "") | ||
setEnv(t, "NOMAD_REGION", "") | ||
|
||
// Setup fake CLI UI and test case | ||
ui := cli.NewMockUi() | ||
cmd := &UiCommand{Meta: Meta{Ui: ui}} | ||
|
||
if tc.SetupFn != nil { | ||
tc.SetupFn(t) | ||
} | ||
|
||
// Don't try to open a browser. | ||
args := append(tc.Args, "-show-url") | ||
|
||
if code := cmd.Run(args); code != 0 { | ||
require.Equal(t, 0, code, "expected exit code 0, got %d", code) | ||
} | ||
|
||
got := ui.OutputWriter.String() | ||
expected := fmt.Sprintf("URL for web UI: %s", tc.ExpectedURL) | ||
require.Equal(t, expected, strings.TrimSpace(got)) | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters