mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			136 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package command
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/mitchellh/cli"
 | |
| 
 | |
| 	credToken "github.com/hashicorp/vault/builtin/credential/token"
 | |
| 	credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
 | |
| 	"github.com/hashicorp/vault/command/token"
 | |
| )
 | |
| 
 | |
| func testAuthCommand(tb testing.TB) (*cli.MockUi, *AuthCommand) {
 | |
| 	tb.Helper()
 | |
| 
 | |
| 	ui := cli.NewMockUi()
 | |
| 	return ui, &AuthCommand{
 | |
| 		BaseCommand: &BaseCommand{
 | |
| 			UI: ui,
 | |
| 
 | |
| 			// Override to our own token helper
 | |
| 			tokenHelper: token.NewTestingTokenHelper(),
 | |
| 		},
 | |
| 		Handlers: map[string]LoginHandler{
 | |
| 			"token":    &credToken.CLIHandler{},
 | |
| 			"userpass": &credUserpass.CLIHandler{},
 | |
| 		},
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestAuthCommand_Run(t *testing.T) {
 | |
| 	t.Parallel()
 | |
| 
 | |
| 	// TODO: remove in 0.9.0
 | |
| 	t.Run("deprecated_methods", func(t *testing.T) {
 | |
| 		t.Parallel()
 | |
| 
 | |
| 		client, closer := testVaultServer(t)
 | |
| 		defer closer()
 | |
| 
 | |
| 		ui, cmd := testAuthCommand(t)
 | |
| 		cmd.client = client
 | |
| 
 | |
| 		// vault auth -methods -> vault auth list
 | |
| 		code := cmd.Run([]string{"-methods"})
 | |
| 		if exp := 0; code != exp {
 | |
| 			t.Errorf("expected %d to be %d: %s", code, exp, ui.ErrorWriter.String())
 | |
| 		}
 | |
| 		stdout, stderr := ui.OutputWriter.String(), ui.ErrorWriter.String()
 | |
| 
 | |
| 		if expected := "WARNING!"; !strings.Contains(stderr, expected) {
 | |
| 			t.Errorf("expected %q to contain %q", stderr, expected)
 | |
| 		}
 | |
| 
 | |
| 		if expected := "token/"; !strings.Contains(stdout, expected) {
 | |
| 			t.Errorf("expected %q to contain %q", stdout, expected)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("deprecated_method_help", func(t *testing.T) {
 | |
| 		t.Parallel()
 | |
| 
 | |
| 		client, closer := testVaultServer(t)
 | |
| 		defer closer()
 | |
| 
 | |
| 		ui, cmd := testAuthCommand(t)
 | |
| 		cmd.client = client
 | |
| 
 | |
| 		// vault auth -method=foo -method-help -> vault auth help foo
 | |
| 		code := cmd.Run([]string{
 | |
| 			"-method=userpass",
 | |
| 			"-method-help",
 | |
| 		})
 | |
| 		if exp := 0; code != exp {
 | |
| 			t.Errorf("expected %d to be %d: %s", code, exp, ui.ErrorWriter.String())
 | |
| 		}
 | |
| 		stdout, stderr := ui.OutputWriter.String(), ui.ErrorWriter.String()
 | |
| 
 | |
| 		if expected := "WARNING!"; !strings.Contains(stderr, expected) {
 | |
| 			t.Errorf("expected %q to contain %q", stderr, expected)
 | |
| 		}
 | |
| 
 | |
| 		if expected := "vault login"; !strings.Contains(stdout, expected) {
 | |
| 			t.Errorf("expected %q to contain %q", stdout, expected)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("deprecated_login", func(t *testing.T) {
 | |
| 		t.Parallel()
 | |
| 
 | |
| 		client, closer := testVaultServer(t)
 | |
| 		defer closer()
 | |
| 
 | |
| 		if err := client.Sys().EnableAuth("my-auth", "userpass", ""); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 		if _, err := client.Logical().Write("auth/my-auth/users/test", map[string]interface{}{
 | |
| 			"password": "test",
 | |
| 			"policies": "default",
 | |
| 		}); err != nil {
 | |
| 			t.Fatal(err)
 | |
| 		}
 | |
| 
 | |
| 		ui, cmd := testAuthCommand(t)
 | |
| 		cmd.client = client
 | |
| 
 | |
| 		// vault auth ARGS -> vault login ARGS
 | |
| 		code := cmd.Run([]string{
 | |
| 			"-method", "userpass",
 | |
| 			"-path", "my-auth",
 | |
| 			"username=test",
 | |
| 			"password=test",
 | |
| 		})
 | |
| 		if exp := 0; code != exp {
 | |
| 			t.Errorf("expected %d to be %d: %s", code, exp, ui.ErrorWriter.String())
 | |
| 		}
 | |
| 		stdout, stderr := ui.OutputWriter.String(), ui.ErrorWriter.String()
 | |
| 
 | |
| 		if expected := "WARNING!"; !strings.Contains(stderr, expected) {
 | |
| 			t.Errorf("expected %q to contain %q", stderr, expected)
 | |
| 		}
 | |
| 
 | |
| 		if expected := "Success! You are now authenticated."; !strings.Contains(stdout, expected) {
 | |
| 			t.Errorf("expected %q to contain %q", stdout, expected)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("no_tabs", func(t *testing.T) {
 | |
| 		t.Parallel()
 | |
| 
 | |
| 		_, cmd := testAuthCommand(t)
 | |
| 		assertNoTabs(t, cmd)
 | |
| 	})
 | |
| }
 | 
