mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	Update path-help command
This commit is contained in:
		| @@ -1,32 +1,115 @@ | ||||
| package command | ||||
|  | ||||
| import ( | ||||
| 	"strings" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/hashicorp/vault/http" | ||||
| 	"github.com/hashicorp/vault/meta" | ||||
| 	"github.com/hashicorp/vault/vault" | ||||
| 	"github.com/mitchellh/cli" | ||||
| ) | ||||
|  | ||||
| func TestHelp(t *testing.T) { | ||||
| 	core, _, token := vault.TestCoreUnsealed(t) | ||||
| 	ln, addr := http.TestServer(t, core) | ||||
| 	defer ln.Close() | ||||
| func testPathHelpCommand(tb testing.TB) (*cli.MockUi, *PathHelpCommand) { | ||||
| 	tb.Helper() | ||||
|  | ||||
| 	ui := new(cli.MockUi) | ||||
| 	c := &PathHelpCommand{ | ||||
| 		Meta: meta.Meta{ | ||||
| 			ClientToken: token, | ||||
| 			Ui:          ui, | ||||
| 	ui := cli.NewMockUi() | ||||
| 	return ui, &PathHelpCommand{ | ||||
| 		BaseCommand: &BaseCommand{ | ||||
| 			UI: ui, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestPathHelpCommand_Run(t *testing.T) { | ||||
| 	t.Parallel() | ||||
|  | ||||
| 	cases := []struct { | ||||
| 		name string | ||||
| 		args []string | ||||
| 		out  string | ||||
| 		code int | ||||
| 	}{ | ||||
| 		{ | ||||
| 			"empty", | ||||
| 			nil, | ||||
| 			"Missing PATH!", | ||||
| 			1, | ||||
| 		}, | ||||
| 		{ | ||||
| 			"slash", | ||||
| 			[]string{"/"}, | ||||
| 			"Missing PATH!", | ||||
| 			1, | ||||
| 		}, | ||||
| 		{ | ||||
| 			"not_found", | ||||
| 			[]string{"nope/not/once/never"}, | ||||
| 			"", | ||||
| 			2, | ||||
| 		}, | ||||
| 		{ | ||||
| 			"generic", | ||||
| 			[]string{"secret/"}, | ||||
| 			"The generic backend", | ||||
| 			0, | ||||
| 		}, | ||||
| 		{ | ||||
| 			"sys", | ||||
| 			[]string{"sys/mounts"}, | ||||
| 			"currently mounted backends", | ||||
| 			0, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	args := []string{ | ||||
| 		"-address", addr, | ||||
| 		"sys/mounts", | ||||
| 	} | ||||
| 	if code := c.Run(args); code != 0 { | ||||
| 		t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) | ||||
| 	for _, tc := range cases { | ||||
| 		tc := tc | ||||
|  | ||||
| 		t.Run(tc.name, func(t *testing.T) { | ||||
| 			t.Parallel() | ||||
|  | ||||
| 			client, closer := testVaultServer(t) | ||||
| 			defer closer() | ||||
|  | ||||
| 			ui, cmd := testPathHelpCommand(t) | ||||
| 			cmd.client = client | ||||
|  | ||||
| 			code := cmd.Run(tc.args) | ||||
| 			if code != tc.code { | ||||
| 				t.Errorf("expected %d to be %d", code, tc.code) | ||||
| 			} | ||||
|  | ||||
| 			combined := ui.OutputWriter.String() + ui.ErrorWriter.String() | ||||
| 			if !strings.Contains(combined, tc.out) { | ||||
| 				t.Errorf("expected %q to contain %q", combined, tc.out) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | ||||
| 	t.Run("communication_failure", func(t *testing.T) { | ||||
| 		t.Parallel() | ||||
|  | ||||
| 		client, closer := testVaultServerBad(t) | ||||
| 		defer closer() | ||||
|  | ||||
| 		ui, cmd := testPathHelpCommand(t) | ||||
| 		cmd.client = client | ||||
|  | ||||
| 		code := cmd.Run([]string{ | ||||
| 			"sys/mounts", | ||||
| 		}) | ||||
| 		if exp := 2; code != exp { | ||||
| 			t.Errorf("expected %d to be %d", code, exp) | ||||
| 		} | ||||
|  | ||||
| 		expected := "Error retrieving help: " | ||||
| 		combined := ui.OutputWriter.String() + ui.ErrorWriter.String() | ||||
| 		if !strings.Contains(combined, expected) { | ||||
| 			t.Errorf("expected %q to contain %q", combined, expected) | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("no_tabs", func(t *testing.T) { | ||||
| 		t.Parallel() | ||||
|  | ||||
| 		_, cmd := testPathHelpCommand(t) | ||||
| 		assertNoTabs(t, cmd) | ||||
| 	}) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Seth Vargo
					Seth Vargo