Generates/Stores the device request and returns the device and user codes.
Signed-off-by: justin-slowik <justin.slowik@thermofisher.com>
This commit is contained in:
		
				
					committed by
					
						 justin-slowik
						justin-slowik
					
				
			
			
				
	
			
			
			
						parent
						
							11fc8568cb
						
					
				
				
					commit
					6d343e059b
				
			| @@ -49,6 +49,8 @@ func RunTests(t *testing.T, newStorage func() storage.Storage) { | ||||
| 		{"ConnectorCRUD", testConnectorCRUD}, | ||||
| 		{"GarbageCollection", testGC}, | ||||
| 		{"TimezoneSupport", testTimezones}, | ||||
| 		{"DeviceRequestCRUD", testDeviceRequestCRUD}, | ||||
| 		{"DeviceTokenCRUD", testDeviceTokenCRUD}, | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| @@ -834,6 +836,82 @@ func testGC(t *testing.T, s storage.Storage) { | ||||
| 	} else if err != storage.ErrNotFound { | ||||
| 		t.Errorf("expected storage.ErrNotFound, got %v", err) | ||||
| 	} | ||||
|  | ||||
| 	d := storage.DeviceRequest{ | ||||
| 		UserCode:     storage.NewUserCode(), | ||||
| 		DeviceCode:   storage.NewID(), | ||||
| 		ClientID:     "client1", | ||||
| 		Scopes:       []string{"openid", "email"}, | ||||
| 		PkceVerifier: storage.NewID(), | ||||
| 		Expiry:       expiry, | ||||
| 	} | ||||
|  | ||||
| 	if err := s.CreateDeviceRequest(d); err != nil { | ||||
| 		t.Fatalf("failed creating device request: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	for _, tz := range []*time.Location{time.UTC, est, pst} { | ||||
| 		result, err := s.GarbageCollect(expiry.Add(-time.Hour).In(tz)) | ||||
| 		if err != nil { | ||||
| 			t.Errorf("garbage collection failed: %v", err) | ||||
| 		} else { | ||||
| 			if result.DeviceRequests != 0 { | ||||
| 				t.Errorf("expected no device garbage collection results, got %#v", result) | ||||
| 			} | ||||
| 		} | ||||
| 		//if _, err := s.GetDeviceRequest(d.UserCode); err != nil { | ||||
| 		//	t.Errorf("expected to be able to get auth request after GC: %v", err) | ||||
| 		//} | ||||
| 	} | ||||
| 	if r, err := s.GarbageCollect(expiry.Add(time.Hour)); err != nil { | ||||
| 		t.Errorf("garbage collection failed: %v", err) | ||||
| 	} else if r.DeviceRequests != 1 { | ||||
| 		t.Errorf("expected to garbage collect 1 device request, got %d", r.DeviceRequests) | ||||
| 	} | ||||
|  | ||||
| 	//TODO add this code back once Getters are written for device requests | ||||
| 	//if _, err := s.GetDeviceRequest(d.UserCode); err == nil { | ||||
| 	//	t.Errorf("expected device request to be GC'd") | ||||
| 	//} else if err != storage.ErrNotFound { | ||||
| 	//	t.Errorf("expected storage.ErrNotFound, got %v", err) | ||||
| 	//} | ||||
|  | ||||
| 	dt := storage.DeviceToken{ | ||||
| 		DeviceCode: storage.NewID(), | ||||
| 		Status:     "pending", | ||||
| 		Token:      "foo", | ||||
| 		Expiry:     expiry, | ||||
| 	} | ||||
|  | ||||
| 	if err := s.CreateDeviceToken(dt); err != nil { | ||||
| 		t.Fatalf("failed creating device token: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	for _, tz := range []*time.Location{time.UTC, est, pst} { | ||||
| 		result, err := s.GarbageCollect(expiry.Add(-time.Hour).In(tz)) | ||||
| 		if err != nil { | ||||
| 			t.Errorf("garbage collection failed: %v", err) | ||||
| 		} else { | ||||
| 			if result.DeviceTokens != 0 { | ||||
| 				t.Errorf("expected no device token garbage collection results, got %#v", result) | ||||
| 			} | ||||
| 		} | ||||
| 		//if _, err := s.GetDeviceRequest(d.UserCode); err != nil { | ||||
| 		//	t.Errorf("expected to be able to get auth request after GC: %v", err) | ||||
| 		//} | ||||
| 	} | ||||
| 	if r, err := s.GarbageCollect(expiry.Add(time.Hour)); err != nil { | ||||
| 		t.Errorf("garbage collection failed: %v", err) | ||||
| 	} else if r.DeviceTokens != 1 { | ||||
| 		t.Errorf("expected to garbage collect 1 device token, got %d", r.DeviceTokens) | ||||
| 	} | ||||
|  | ||||
| 	//TODO add this code back once Getters are written for device tokens | ||||
| 	//if _, err := s.GetDeviceRequest(d.UserCode); err == nil { | ||||
| 	//	t.Errorf("expected device request to be GC'd") | ||||
| 	//} else if err != storage.ErrNotFound { | ||||
| 	//	t.Errorf("expected storage.ErrNotFound, got %v", err) | ||||
| 	//} | ||||
| } | ||||
|  | ||||
| // testTimezones tests that backends either fully support timezones or | ||||
| @@ -881,3 +959,44 @@ func testTimezones(t *testing.T, s storage.Storage) { | ||||
| 		t.Fatalf("expected expiry %v got %v", wantTime, gotTime) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func testDeviceRequestCRUD(t *testing.T, s storage.Storage) { | ||||
| 	d1 := storage.DeviceRequest{ | ||||
| 		UserCode:     storage.NewUserCode(), | ||||
| 		DeviceCode:   storage.NewID(), | ||||
| 		ClientID:     "client1", | ||||
| 		Scopes:       []string{"openid", "email"}, | ||||
| 		PkceVerifier: storage.NewID(), | ||||
| 		Expiry:       neverExpire, | ||||
| 	} | ||||
|  | ||||
| 	if err := s.CreateDeviceRequest(d1); err != nil { | ||||
| 		t.Fatalf("failed creating device request: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	// Attempt to create same DeviceRequest twice. | ||||
| 	err := s.CreateDeviceRequest(d1) | ||||
| 	mustBeErrAlreadyExists(t, "device request", err) | ||||
|  | ||||
| 	//No manual deletes for device requests, will be handled by garbage collection routines | ||||
| 	//see testGC | ||||
| } | ||||
|  | ||||
| func testDeviceTokenCRUD(t *testing.T, s storage.Storage) { | ||||
| 	d1 := storage.DeviceToken{ | ||||
| 		DeviceCode: storage.NewID(), | ||||
| 		Status:     "pending", | ||||
| 		Token:      storage.NewID(), | ||||
| 		Expiry:     neverExpire, | ||||
| 	} | ||||
|  | ||||
| 	if err := s.CreateDeviceToken(d1); err != nil { | ||||
| 		t.Fatalf("failed creating device token: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	// Attempt to create same DeviceRequest twice. | ||||
| 	err := s.CreateDeviceToken(d1) | ||||
| 	mustBeErrAlreadyExists(t, "device token", err) | ||||
|  | ||||
| 	//TODO Add update / delete tests as functionality is put into main code | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user