Skip to content

Commit

Permalink
Add Management API calls to user refresh token endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
l15n committed Sep 20, 2024
1 parent 18d38af commit be5bf95
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
34 changes: 33 additions & 1 deletion lib/auth0/api/v2/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -465,13 +465,45 @@ def user_sessions(user_id)
get "#{users_path}/#{user_id}/sessions"
end

# Retrieve details for a user's refresh tokens.
# @see https://auth0.com/docs/api/management/v2/users/get-refresh-tokens-for-user
#
# @param use_id [String] The user ID
# @param options [hash] A hash of options for getting permissions
# * :take [Integer] Number of results per page. Defaults to 50.
# * :from [String] Optional token ID from which to start selection (exclusive).
# * :include_totals [boolean] Return results inside an object that contains the total result count (true)
# or as a direct array of results (false, default)
#
# @return [json] Returns refresh tokens for the given user_id.
def user_refresh_tokens(user_id, options = {})
raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?

request_params = {
take: options.fetch(:take, nil),
from: options.fetch(:from, nil),
include_totals: options.fetch(:include_totals, nil)
}

get "#{users_path}/#{user_id}/refresh-tokens", request_params
end

# Delete all refresh tokens for a user.
#
# @param user_id [String] ID of the user to get remove refresh tokens for
# @see https://auth0.com/docs/api/management/v2/users/delete-refresh-tokens-for-user
def delete_user_refresh_tokens(user_id)
raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?

delete "#{users_path}/#{user_id}/refresh-tokens"
end

private

# Users API path
def users_path
@users_path ||= '/api/v2/users'
end

end
end
end
Expand Down
55 changes: 55 additions & 0 deletions spec/lib/auth0/api/v2/users_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,62 @@
expect do
@instance.user_sessions('USER_ID')
end.not_to raise_error
end
end

context '.user_refresh_tokens' do
it 'is expected to respond to a user_refresh_tokens method' do
expect(@instance).to respond_to(:user_refresh_tokens)
end

it 'is expected to raise an exception when the user ID is empty' do
expect { @instance.user_refresh_tokens(nil) }.to raise_exception(Auth0::MissingUserId)
end

it 'is expected to get user refresh tokens' do
expect(@instance).to receive(:get).with(
'/api/v2/users/USER_ID/refresh-tokens', {
from: nil,
take: nil,
include_totals: nil
}
)
expect do
@instance.user_refresh_tokens('USER_ID')
end.not_to raise_error
end

it 'is expected to get user refresh tokens with custom parameters' do
expect(@instance).to receive(:get).with(
'/api/v2/users/USER_ID/refresh-tokens', {
from: 'TOKEN_ID',
take: 10,
include_totals: true
}
)
expect do
@instance.user_refresh_tokens('USER_ID', from: 'TOKEN_ID', take: 10, include_totals: true)
end.not_to raise_error
end
end

context '.delete_user_refresh_tokens' do
it 'is expected to respond to delete_user_refresh_tokens' do
expect(@instance).to respond_to(:delete_user_refresh_tokens)
end

it 'is expected to raise an exception for a missing user ID' do
expect { @instance.delete_user_refresh_tokens(nil) }.to raise_exception(Auth0::MissingUserId)
end

it 'is expected to call the endpoint' do
expect(@instance).to receive(:delete).with(
'/api/v2/users/USER_ID/refresh-tokens'
)

expect do
@instance.delete_user_refresh_tokens 'USER_ID'
end.to_not raise_error
end
end
end

0 comments on commit be5bf95

Please sign in to comment.