github.com/mweagle/Sparta@v1.15.0/docker/docker_test.go (about) 1 package docker 2 3 import ( 4 "bytes" 5 "os" 6 "os/exec" 7 "strings" 8 "testing" 9 10 sparta "github.com/mweagle/Sparta" 11 "github.com/mweagle/Sparta/system" 12 ) 13 14 func TestLogin(t *testing.T) { 15 logger, _ := sparta.NewLogger("info") 16 17 // If docker -v doesn't work, then login definitely won't 18 dockerVersionCmd := exec.Command("docker", "-v") 19 dockerVersionCmdErr := system.RunOSCommand(dockerVersionCmd, logger) 20 if dockerVersionCmdErr != nil { 21 t.Logf("WARNING: failed to execute `docker -v` as prerequisite for testing STDIN password") 22 return 23 } 24 // Don't supply password on command line 25 26 dockerLoginCmd := exec.Command("docker", 27 "login", 28 "-u", 29 "mweagle", 30 "--password-stdin") 31 dockerLoginCmd.Stdout = os.Stdout 32 dockerLoginCmd.Stdin = bytes.NewReader([]byte("0AA421A3-931B-4985-8E99-9F5432A2BB58\n")) 33 dockerLoginCmd.Stderr = os.Stderr 34 dockerLoginCmdErr := system.RunOSCommand(dockerLoginCmd, logger) 35 if dockerLoginCmdErr != nil { 36 if strings.Contains(dockerLoginCmdErr.Error(), "Cannot perform an interactive login") { 37 // The stdin write failed... 38 t.Fatalf("Failed to write password to STDIN") 39 } else if strings.Contains(dockerLoginCmdErr.Error(), "unauthorized: incorrect username or password") { 40 t.Logf("Expected authorization rejection detected") 41 } 42 } else { 43 // This should never happen 44 t.Fatalf("Docker login with invalid credentials") 45 } 46 }