github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/auth_test.go (about) 1 package cmd 2 3 import ( 4 "bytes" 5 "fmt" 6 "net/http" 7 "testing" 8 9 "github.com/drycc/workflow-cli/pkg/testutil" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestLogin(t *testing.T) { 14 t.Skip("Skip long running tests") 15 cf, server, err := testutil.NewTestServerAndClient() 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer server.Close() 20 var b bytes.Buffer 21 cmdr := DryccCmd{WOut: &b, ConfigFile: cf} 22 23 server.Mux.HandleFunc("/v2/", func(w http.ResponseWriter, _ *http.Request) { 24 testutil.SetHeaders(w) 25 w.WriteHeader(http.StatusUnauthorized) 26 fmt.Fprintf(w, `{}`) 27 }) 28 29 server.Mux.HandleFunc("/v2/auth/login/", func(w http.ResponseWriter, _ *http.Request) { 30 testutil.SetHeaders(w) 31 w.Header().Add("Location", "/v2/login/drycc/?key=fdbf3b34742e4ed2be4dfa848af13007/") 32 w.WriteHeader(http.StatusOK) 33 w.Write(nil) 34 }) 35 36 server.Mux.HandleFunc("/v2/auth/token/fdbf3b34742e4ed2be4dfa848af13007/", func(w http.ResponseWriter, _ *http.Request) { 37 testutil.SetHeaders(w) 38 w.WriteHeader(http.StatusOK) 39 w.Write([]byte(`{"username":"test-user","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}`)) 40 w.Write(nil) 41 }) 42 err = cmdr.Login(server.Server.URL, false) 43 assert.NoError(t, err) 44 } 45 46 func TestLogout(t *testing.T) { 47 cf, server, err := testutil.NewTestServerAndClient() 48 if err != nil { 49 t.Fatal(err) 50 } 51 defer server.Close() 52 var b bytes.Buffer 53 cmdr := DryccCmd{WOut: &b, ConfigFile: cf} 54 55 err = cmdr.Logout() 56 assert.NoError(t, err) 57 assert.Equal(t, b.String(), "Logged out\n", "output") 58 } 59 60 func TestWhoami(t *testing.T) { 61 t.Parallel() 62 63 cf, server, err := testutil.NewTestServerAndClient() 64 if err != nil { 65 t.Fatal(err) 66 } 67 defer server.Close() 68 var b bytes.Buffer 69 cmdr := DryccCmd{WOut: &b, ConfigFile: cf} 70 71 server.Mux.HandleFunc("/v2/auth/whoami/", func(w http.ResponseWriter, _ *http.Request) { 72 testutil.SetHeaders(w) 73 fmt.Fprintf(w, `{ 74 "email": "test@example.com", 75 "username": "test", 76 "first_name": "", 77 "last_name": "", 78 "is_superuser": true, 79 "is_staff": true, 80 "groups": [], 81 "user_permissions": [], 82 "last_login": "2016-09-12T22:15:26Z", 83 "date_joined": "2015-09-12T22:15:26Z", 84 "is_active": true 85 }`) 86 }) 87 88 err = cmdr.Whoami(false) 89 assert.NoError(t, err) 90 expected := fmt.Sprintf("You are test at %s\n", server.Server.URL) 91 assert.Equal(t, b.String(), expected, "output") 92 } 93 94 func TestWhoamiAll(t *testing.T) { 95 t.Parallel() 96 97 cf, server, err := testutil.NewTestServerAndClient() 98 if err != nil { 99 t.Fatal(err) 100 } 101 defer server.Close() 102 var b bytes.Buffer 103 cmdr := DryccCmd{WOut: &b, ConfigFile: cf} 104 105 server.Mux.HandleFunc("/v2/auth/whoami/", func(w http.ResponseWriter, _ *http.Request) { 106 testutil.SetHeaders(w) 107 fmt.Fprintf(w, `{ 108 "email": "test@example.com", 109 "username": "test", 110 "first_name": "test", 111 "last_name": "test", 112 "is_superuser": true, 113 "is_staff": true, 114 "groups": [], 115 "user_permissions": [], 116 "last_login": "2016-09-12T22:15:26Z", 117 "date_joined": "2015-09-12T22:15:26Z", 118 "is_active": true 119 }`) 120 }) 121 122 err = cmdr.Whoami(true) 123 assert.NoError(t, err) 124 expected := `ID: 0 125 Username: test 126 Email: test@example.com 127 First Name: test 128 Last Name: test 129 Last Login: 2016-09-12T22:15:26Z 130 Is Superuser: true 131 Is Staff: true 132 Is Active: true 133 Date Joined: 2015-09-12T22:15:26Z 134 ` 135 assert.Equal(t, b.String(), expected, "output") 136 }