mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-03 20:17:59 +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)
 | 
						|
	})
 | 
						|
}
 |