chore: quality of life improvements

This commit is contained in:
Ralph Khreish
2025-10-12 19:22:14 +02:00
parent 0dfb33b402
commit e2e3e6f748
3 changed files with 60 additions and 20 deletions

View File

@@ -90,18 +90,28 @@ export class AuthManager {
allowExpired: true
});
// Only attempt refresh if we have expired credentials with a refresh token
if (expiredCredentials && expiredCredentials.refreshToken) {
try {
this.logger.info('Token expired, attempting automatic refresh...');
return await this.refreshToken();
} catch (error) {
this.logger.warn('Automatic token refresh failed:', error);
return null;
}
// Check if we have any credentials at all
if (!expiredCredentials) {
// No credentials found
return null;
}
return null;
// Check if refresh token is available
if (!expiredCredentials.refreshToken) {
this.logger.warn(
'Token expired but no refresh token available. Please re-authenticate.'
);
return null;
}
// Attempt refresh
try {
this.logger.info('Token expired, attempting automatic refresh...');
return await this.refreshToken();
} catch (error) {
this.logger.warn('Automatic token refresh failed:', error);
return null;
}
}
return credentials;

View File

@@ -199,6 +199,26 @@ describe('AuthManager - Token Auto-Refresh Integration', () => {
expect(credentials).toBeNull();
});
it('should return null if credentials missing expiresAt', async () => {
const credentialsWithoutExpiry: AuthCredentials = {
token: 'test-token',
refreshToken: 'refresh-token',
userId: 'test-user-id',
email: 'test@example.com',
// Missing expiresAt
savedAt: new Date().toISOString()
} as any;
credentialStore.saveCredentials(credentialsWithoutExpiry);
authManager = AuthManager.getInstance();
const credentials = await authManager.getCredentials();
// Should return null because no valid expiration
expect(credentials).toBeNull();
});
});
describe('Clock Skew Tolerance', () => {