Oauthlib: populate_token_attributes() ValueError pour les valeurs float expires_at

Créé le 10 déc. 2020  ·  7Commentaires  ·  Source: oauthlib/oauthlib

https://github.com/oauthlib/oauthlib/blob/d54965b86ce4ede956db70baff0b3d5e9182a007/oauthlib/oauth2/rfc6749/clients/base.py#L516

Certains jetons ont une expires_at tant que flottant (exemple : 1612807300.1613762 ) ce qui fait que cette ligne lance un ValueError: invalid literal for int() with base 10 . Cela pourrait être résolu en utilisant int(float(response.get('expires_at'))) (ou en arrondissant pour ne pas tronquer).

Bug Contributor Friendly OAuth2-Client

Commentaire le plus utile

L'utilisation de expires_at n'est pas définie dans RFC, il semble donc que la confusion soit également dans le code. Nous pouvons supposer qu'il s'agit d'un int similaire à expires_in .

Tout PR pour corriger son utilisation et ajouter un test unitaire pour couvrir ce cas limite est le bienvenu.

Tous les 7 commentaires

Juste au-dessus de self._expires_at est fait un flottant :

self._expires_at = time.time() + int(self.expires_in)

L'utilisation de expires_at n'est pas définie dans RFC, il semble donc que la confusion soit également dans le code. Nous pouvons supposer qu'il s'agit d'un int similaire à expires_in .

Tout PR pour corriger son utilisation et ajouter un test unitaire pour couvrir ce cas limite est le bienvenu.

Salut, puis-je avoir ce problème ? Je commence juste avec l'open source, donc ce sera un bon début ig.

Salut, puis-je avoir ce problème ? Je commence juste avec l'open source, donc ce sera un bon début ig.

@default-303 allez-y !

@ggiill merci, j'ai fait les changements suivants

- self._expires_at = int(response.get('expires_at')) 
+ self._expires_at = round(float(response.get('expires_at')))

et passe tous les tests quand je lance pytest

Mais quels tests voulez-vous que j'ajoute ? comme un simple typecheck tester quelque chose comme ça -
```
test unitaire d'importation
import fix ## un exemple de script que j'ai composé pour cette démo
heure d'importation

classe TestFix(unitest.TestCase) :

def test_float(self) : 
    string_time = str(time.time())
    self.assertIsInstance(fix.get_time("123345.1222"), int)

def test_int(self) : 
    string_time = str(round(time.time()))
    self.assertIsInstance(fix.get_time("12333"), int)

```

ou un plein sur mock test ?

@ggiill hey, puis-je avoir un avis ?
lmao ça fait un mois même si je l'ai oublié.

@ggiill hey, puis-je avoir un avis ?
lmao ça fait un mois même si je l'ai oublié.

@default-303 Je ne suis pas un mainteneur - ping @JonathanHuot. Vous voudrez probablement également soumettre un PR pour examen.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ib-lundgren picture ib-lundgren  ·  21Commentaires

JonathanHuot picture JonathanHuot  ·  10Commentaires

thedrow picture thedrow  ·  31Commentaires

JonathanHuot picture JonathanHuot  ·  15Commentaires

prudnikov picture prudnikov  ·  11Commentaires