0
0
Rest APIprogramming~20 mins

Token refresh mechanism in Rest API - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Token Refresh Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this token refresh simulation?
Consider a simple token refresh function that returns a new access token if the refresh token is valid. What will be the output of the code below?
Rest API
def refresh_token(refresh_token):
    valid_refresh_tokens = {"abc123": "new_access_token_1", "def456": "new_access_token_2"}
    return valid_refresh_tokens.get(refresh_token, "Invalid refresh token")

print(refresh_token("abc123"))
ANone
Bnew_access_token_1
CInvalid refresh token
Dnew_access_token_2
Attempts:
2 left
💡 Hint
Look at the dictionary keys and what the function returns when the key is found.
🧠 Conceptual
intermediate
1:30remaining
Which statement best describes the purpose of a refresh token?
Choose the best description of what a refresh token does in an authentication system.
AIt stores user credentials like username and password.
BIt grants permanent access to all resources without expiration.
CIt replaces the access token and is sent with every API request.
DIt is used to obtain a new access token after the old one expires.
Attempts:
2 left
💡 Hint
Think about what happens when an access token expires.
🔧 Debug
advanced
2:30remaining
Why does this token refresh code raise an error?
The code below is intended to refresh an access token but raises an error. What is the cause?
Rest API
valid_tokens = {"r1": "token1", "r2": "token2"}

def refresh_token(refresh_token):
    if refresh_token in valid_tokens:
        return valid_tokens[refresh_token]
    else:
        return "Invalid token"

print(refresh_token("r1"))
ANameError because valid_tokens is used before it is defined.
BTypeError because refresh_token is a function parameter and cannot be used as a variable.
CKeyError because 'r1' is not in valid_tokens.
DNo error; the code runs and prints 'token1'.
Attempts:
2 left
💡 Hint
Check the order of variable and function definitions.
📝 Syntax
advanced
2:30remaining
Which option correctly implements a token refresh function with error handling?
Select the code snippet that correctly returns a new access token or raises an exception if the refresh token is invalid.
A
def refresh_token(token):
    if token not in tokens:
        raise ValueError("Invalid token")
    return tokens[token]
B
def refresh_token(token):
    if token in tokens
        return tokens[token]
    else:
        raise ValueError("Invalid token")
C
def refresh_token(token):
    if token in tokens:
        return tokens[token]
    else
        raise ValueError("Invalid token")
D
def refresh_token(token):
    if token in tokens:
        return tokens[token]
    else:
        return ValueError("Invalid token")
Attempts:
2 left
💡 Hint
Look carefully at the syntax of if statements and raising exceptions.
🚀 Application
expert
3:00remaining
How many tokens will be valid after this refresh sequence?
Given the code below, how many tokens remain valid after refreshing 'r1' and 'r3'?
Rest API
valid_tokens = {"r1": "token1", "r2": "token2", "r3": "token3"}

# Refresh function invalidates old refresh token and issues a new one

def refresh_token(token):
    if token not in valid_tokens:
        return "Invalid token"
    new_token = f"token_new_{token}"
    del valid_tokens[token]
    valid_tokens[f"r_new_{token}"] = new_token
    return new_token

refresh_token("r1")
refresh_token("r3")
A4
B2
C3
D5
Attempts:
2 left
💡 Hint
Count tokens before and after refresh calls carefully.