Oauthlib: populate_token_attributes () ValueError para float expires_at valores

Creado en 10 dic. 2020  ·  7Comentarios  ·  Fuente: oauthlib/oauthlib

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

Algunos tokens tienen un expires_at como flotante (ejemplo: 1612807300.1613762 ) que hace que esta línea arroje un ValueError: invalid literal for int() with base 10 . Esto podría resolverse usando int(float(response.get('expires_at'))) (o redondeando para no truncar).

Bug Contributor Friendly OAuth2-Client

Comentario más útil

El uso de expires_at no está definido en RFC, por lo que parece que también hay confusión en el código. Podemos asumir que es un int similar a expires_in .

Cualquier RP para corregir su uso y agregar una prueba de unidad para cubrir este caso de borde es bienvenido.

Todos 7 comentarios

Justo encima de ese self._expires_at se hace un flotador:

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

El uso de expires_at no está definido en RFC, por lo que parece que también hay confusión en el código. Podemos asumir que es un int similar a expires_in .

Cualquier RP para corregir su uso y agregar una prueba de unidad para cubrir este caso de borde es bienvenido.

oye, ¿puedo tener este problema? Estoy empezando con el código abierto, así que este será un buen comienzo, ig.

oye, ¿puedo tener este problema? Estoy empezando con el código abierto, así que este será un buen comienzo, ig.

@ default-303 ¡adelante!

@ggiill gracias, hice los siguientes cambios

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

y pasa todas las pruebas es cuando ejecuto pytest

Pero, ¿qué tipo de pruebas quieres que agregue? como una simple prueba typecheck algo como esto -
''
unidad de prueba de importación
importar corrección ## un script de muestra que inventé para esta demostración
tiempo de importación

clase TestFix (unittest.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)

''

o un total de mock test ?

@ggiill hey, ¿puedo obtener una reseña?
lmao ha pasado un mes incluso lo olvidé.

@ggiill hey, ¿puedo obtener una reseña?
lmao ha pasado un mes incluso lo olvidé.

@ default-303 No soy un mantenedor - haciendo ping a @JonathanHuot. Probablemente también desee poner un PR para su revisión.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ryarnyah picture ryarnyah  ·  3Comentarios

potiuk picture potiuk  ·  14Comentarios

thedrow picture thedrow  ·  31Comentarios

JonathanHuot picture JonathanHuot  ·  15Comentarios

jcampbell05 picture jcampbell05  ·  14Comentarios