refator the SecretOAuth and test the safe