tests/testthat/test-auth.R

user <- Sys.getenv("sb_user", unset=NA)

test_that("not_logged in tests", {
	skip("retired pattern")
	expect_error(sbtools:::get_access_token(), "no token found, must call authenticate_sb()")
	expect_error(sbtools:::get_refresh_token(), "no token found, must call authenticate_sb()")
	
	if(!interactive())
		expect_error(authenticate_sb(), 'username required for authentication')
	
	if(!interactive())
		expect_error(authenticate_sb("dummy"), 'No password supplied to authenticate_sciencebase in a non-interactive session.')
})

test_that("authenticate_sb errors", {
	skip("retired pattern")
	
	if(is.na(user)){
		skip("Authenticated tests skipped due to lack of login info")
	}
	
	keyring::key_set_with_value("sciencebase", "test-user@usgs.gov", "broken")
	
	on.exit(keyring::key_delete("sciencebase", "test-user@usgs.gov"))
	
	expect_error(authenticate_sb("test-user@usgs.gov"), 
							 "Sciencebase login failed with stored password?")

})

test_that("initialize_scienbase_session login results in valid session and renew works", {
	skip_on_cran()
	
	if(is.na(Sys.getenv("sb_user", unset=NA))){
		skip("Authenticated tests skipped due to lack of login info")
	}

	initialize_sciencebase_session()
	
	on.exit(sbtools:::clean_session())
	
	expect_true(session_validate())

	expect_equal(nchar(user_id()), 24)
	
	expect_type(sbtools:::get_refresh_token(), "character")
	expect_type(sbtools:::get_access_token(), "character")
	
	expect_s3_class(sbtools:::pkg.env$keycloak_expire, "POSIXct")
	
	old <- sbtools:::pkg.env$keycloak_expire
	
	check <- sbtools:::refresh_token_before_expired(5000)
	
	expect_true(check)

	new <- sbtools:::pkg.env$keycloak_expire		
	
	expect_true(old < new)

})


test_that("login results in valid session and renew works (new)", {
	skip_on_cran()
	
	sbtools:::clean_session()
	
	token <- sbtools:::grab_token()
	
	if(token == "" | is.na(Sys.getenv("sb_user"))){
		skip("Authenticated tests skipped due to lack of login info")
	}
	
	unlink(sbtools:::token_stache_path(), force = TRUE)
	
	if(!initialize_sciencebase_session(Sys.getenv("sb_user"), token)) {
		sbtools:::clean_session()
		
		skip("token didn't work, refresh it?")
		
	}
	
	on.exit(sbtools:::clean_session())
	
	expect_true(file.exists(sbtools:::token_stache_path()))
	
	expect_true(initialize_sciencebase_session())
	
	expect_true(session_validate())
	
	expect_equal(nchar(user_id()), 24)
	
	expect_type(sbtools:::get_refresh_token(), "character")
	expect_type(sbtools:::get_access_token(), "character")
	
	expect_s3_class(sbtools:::pkg.env$keycloak_expire, "POSIXct")
	
	old <- sbtools:::pkg.env$keycloak_expire
	
	check <- sbtools:::refresh_token_before_expired(5000)
	
	expect_true(check)
	
	new <- sbtools:::pkg.env$keycloak_expire		
	
	expect_true(old < new)
	
})
USGS-R/sbtools documentation built on Feb. 21, 2024, 10:15 a.m.