Cleaned up Device Flow test log levels

Signed-off-by: justin-slowik <justin.slowik@thermofisher.com>

Remove extraneous "=" from conformance.go

Co-authored-by: Joel Speed <Joel.speed@hotmail.co.uk>

Additional test for TestHandleDeviceCode

Signed-off-by: justin-slowik <justin.slowik@thermofisher.com>
This commit is contained in:
justin-slowik 2020-07-14 10:14:37 -04:00
parent 334ecf0482
commit 9a7926c19b
3 changed files with 29 additions and 19 deletions

View file

@ -36,6 +36,10 @@ func (s *Server) getDeviceVerificationURI() string {
func (s *Server) handleDeviceExchange(w http.ResponseWriter, r *http.Request) { func (s *Server) handleDeviceExchange(w http.ResponseWriter, r *http.Request) {
switch r.Method { switch r.Method {
case http.MethodGet: case http.MethodGet:
// Grab the parameter(s) from the query.
// If "user_code" is set, pre-populate the user code text field.
// If "invalid" is set, set the invalidAttempt boolean, which will display a message to the user that they
// attempted to redeem an invalid or expired user code.
userCode := r.URL.Query().Get("user_code") userCode := r.URL.Query().Get("user_code")
invalidAttempt, err := strconv.ParseBool(r.URL.Query().Get("invalid")) invalidAttempt, err := strconv.ParseBool(r.URL.Query().Get("invalid"))
if err != nil { if err != nil {

View file

@ -31,7 +31,7 @@ func TestDeviceVerificationURI(t *testing.T) {
u, err := url.Parse(s.issuerURL.String()) u, err := url.Parse(s.issuerURL.String())
if err != nil { if err != nil {
t.Errorf("Could not parse issuer URL %v", err) t.Fatalf("Could not parse issuer URL %v", err)
} }
u.Path = path.Join(u.Path, "/device/auth/verify_code") u.Path = path.Join(u.Path, "/device/auth/verify_code")
@ -49,16 +49,25 @@ func TestHandleDeviceCode(t *testing.T) {
tests := []struct { tests := []struct {
testName string testName string
clientID string clientID string
requestType string
scopes []string scopes []string
expectedResponseCode int expectedResponseCode int
expectedServerResponse string expectedServerResponse string
}{ }{
{ {
testName: "New Valid Code", testName: "New Code",
clientID: "test", clientID: "test",
requestType: "POST",
scopes: []string{"openid", "profile", "email"}, scopes: []string{"openid", "profile", "email"},
expectedResponseCode: http.StatusOK, expectedResponseCode: http.StatusOK,
}, },
{
testName: "Invalid request Type (GET)",
clientID: "test",
requestType: "GET",
scopes: []string{"openid", "profile", "email"},
expectedResponseCode: http.StatusBadRequest,
},
} }
for _, tc := range tests { for _, tc := range tests {
t.Run(tc.testName, func(t *testing.T) { t.Run(tc.testName, func(t *testing.T) {
@ -74,7 +83,7 @@ func TestHandleDeviceCode(t *testing.T) {
u, err := url.Parse(s.issuerURL.String()) u, err := url.Parse(s.issuerURL.String())
if err != nil { if err != nil {
t.Errorf("Could not parse issuer URL %v", err) t.Fatalf("Could not parse issuer URL %v", err)
} }
u.Path = path.Join(u.Path, "device/code") u.Path = path.Join(u.Path, "device/code")
@ -83,7 +92,7 @@ func TestHandleDeviceCode(t *testing.T) {
for _, scope := range tc.scopes { for _, scope := range tc.scopes {
data.Add("scope", scope) data.Add("scope", scope)
} }
req, _ := http.NewRequest("POST", u.String(), bytes.NewBufferString(data.Encode())) req, _ := http.NewRequest(tc.requestType, u.String(), bytes.NewBufferString(data.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value") req.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value")
rr := httptest.NewRecorder() rr := httptest.NewRecorder()
@ -102,9 +111,6 @@ func TestHandleDeviceCode(t *testing.T) {
t.Errorf("Unexpected Device Code Response Format %v", string(body)) t.Errorf("Unexpected Device Code Response Format %v", string(body))
} }
} }
if tc.expectedResponseCode == http.StatusBadRequest || tc.expectedResponseCode == http.StatusUnauthorized {
expectErrorResponse(tc.testName, body, tc.expectedServerResponse, t)
}
}) })
} }
} }
@ -322,15 +328,15 @@ func TestDeviceCallback(t *testing.T) {
defer httpServer.Close() defer httpServer.Close()
if err := s.storage.CreateAuthCode(tc.testAuthCode); err != nil { if err := s.storage.CreateAuthCode(tc.testAuthCode); err != nil {
t.Errorf("failed to create auth code: %v", err) t.Fatalf("failed to create auth code: %v", err)
} }
if err := s.storage.CreateDeviceRequest(tc.testDeviceRequest); err != nil { if err := s.storage.CreateDeviceRequest(tc.testDeviceRequest); err != nil {
t.Errorf("failed to create device request: %v", err) t.Fatalf("failed to create device request: %v", err)
} }
if err := s.storage.CreateDeviceToken(tc.testDeviceToken); err != nil { if err := s.storage.CreateDeviceToken(tc.testDeviceToken); err != nil {
t.Errorf("failed to create device token: %v", err) t.Fatalf("failed to create device token: %v", err)
} }
client := storage.Client{ client := storage.Client{
@ -344,7 +350,7 @@ func TestDeviceCallback(t *testing.T) {
u, err := url.Parse(s.issuerURL.String()) u, err := url.Parse(s.issuerURL.String())
if err != nil { if err != nil {
t.Errorf("Could not parse issuer URL %v", err) t.Fatalf("Could not parse issuer URL %v", err)
} }
u.Path = path.Join(u.Path, "device/callback") u.Path = path.Join(u.Path, "device/callback")
q := u.Query() q := u.Query()
@ -506,16 +512,16 @@ func TestDeviceTokenResponse(t *testing.T) {
defer httpServer.Close() defer httpServer.Close()
if err := s.storage.CreateDeviceRequest(tc.testDeviceRequest); err != nil { if err := s.storage.CreateDeviceRequest(tc.testDeviceRequest); err != nil {
t.Errorf("Failed to store device token %v", err) t.Fatalf("Failed to store device token %v", err)
} }
if err := s.storage.CreateDeviceToken(tc.testDeviceToken); err != nil { if err := s.storage.CreateDeviceToken(tc.testDeviceToken); err != nil {
t.Errorf("Failed to store device token %v", err) t.Fatalf("Failed to store device token %v", err)
} }
u, err := url.Parse(s.issuerURL.String()) u, err := url.Parse(s.issuerURL.String())
if err != nil { if err != nil {
t.Errorf("Could not parse issuer URL %v", err) t.Fatalf("Could not parse issuer URL %v", err)
} }
u.Path = path.Join(u.Path, "device/token") u.Path = path.Join(u.Path, "device/token")
@ -540,7 +546,7 @@ func TestDeviceTokenResponse(t *testing.T) {
t.Errorf("Could read token response %v", err) t.Errorf("Could read token response %v", err)
} }
if tc.expectedResponseCode == http.StatusBadRequest || tc.expectedResponseCode == http.StatusUnauthorized { if tc.expectedResponseCode == http.StatusBadRequest || tc.expectedResponseCode == http.StatusUnauthorized {
expectErrorResponse(tc.testName, body, tc.expectedServerResponse, t) expectJsonErrorResponse(tc.testName, body, tc.expectedServerResponse, t)
} else if string(body) != tc.expectedServerResponse { } else if string(body) != tc.expectedServerResponse {
t.Errorf("Unexpected Server Response. Expected %v got %v", tc.expectedServerResponse, string(body)) t.Errorf("Unexpected Server Response. Expected %v got %v", tc.expectedServerResponse, string(body))
} }
@ -548,7 +554,7 @@ func TestDeviceTokenResponse(t *testing.T) {
} }
} }
func expectErrorResponse(testCase string, body []byte, expectedError string, t *testing.T) { func expectJsonErrorResponse(testCase string, body []byte, expectedError string, t *testing.T) {
jsonMap := make(map[string]interface{}) jsonMap := make(map[string]interface{})
err := json.Unmarshal(body, &jsonMap) err := json.Unmarshal(body, &jsonMap)
if err != nil { if err != nil {
@ -637,12 +643,12 @@ func TestVerifyCodeResponse(t *testing.T) {
defer httpServer.Close() defer httpServer.Close()
if err := s.storage.CreateDeviceRequest(tc.testDeviceRequest); err != nil { if err := s.storage.CreateDeviceRequest(tc.testDeviceRequest); err != nil {
t.Errorf("Failed to store device token %v", err) t.Fatalf("Failed to store device token %v", err)
} }
u, err := url.Parse(s.issuerURL.String()) u, err := url.Parse(s.issuerURL.String())
if err != nil { if err != nil {
t.Errorf("Could not parse issuer URL %v", err) t.Fatalf("Could not parse issuer URL %v", err)
} }
u.Path = path.Join(u.Path, "device/auth/verify_code") u.Path = path.Join(u.Path, "device/auth/verify_code")

View file

@ -1030,6 +1030,6 @@ func testDeviceTokenCRUD(t *testing.T, s storage.Storage) {
t.Fatalf("update failed, wanted token status=%v got %v", "complete", got.Status) t.Fatalf("update failed, wanted token status=%v got %v", "complete", got.Status)
} }
if got.Token != "token data" { if got.Token != "token data" {
t.Fatalf("update failed, wanted token =%v got %v", "token data", got.Token) t.Fatalf("update failed, wanted token %v got %v", "token data", got.Token)
} }
} }