Oauthlib: populate_token_attributes () ValueError para valores flutuantes expires_at

Criado em 10 dez. 2020  ·  7Comentários  ·  Fonte: oauthlib/oauthlib

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

Alguns tokens têm um expires_at como um float (exemplo: 1612807300.1613762 ) que faz com que esta linha lance um ValueError: invalid literal for int() with base 10 . Isso pode ser resolvido usando int(float(response.get('expires_at'))) (ou arredondando para não truncar).

Bug Contributor Friendly OAuth2-Client

Comentários muito úteis

O uso de expires_at não está definido no RFC, então parece que há confusão no código também. Podemos assumir que é um int semelhante a expires_in .

Qualquer RP para corrigir seu uso e adicionar teste de unidade para cobrir esse caso crítico é bem-vindo.

Todos 7 comentários

Logo acima desse self._expires_at é feito um float:

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

O uso de expires_at não está definido no RFC, então parece que há confusão no código também. Podemos assumir que é um int semelhante a expires_in .

Qualquer RP para corrigir seu uso e adicionar teste de unidade para cobrir esse caso crítico é bem-vindo.

ei, posso ter esse problema? Estou apenas começando com o código aberto, então este será um bom começo ig.

ei, posso ter esse problema? Estou apenas começando com o código aberto, então este será um bom começo ig.

@ default-303 vá em frente!

@ggiill obrigado, fiz as seguintes alterações

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

e passa em todos os testes é quando eu executo pytest

Mas que tipo de teste você quer que eu adicione? como um simples teste typecheck algo assim -
`` `
import unittest
import fix ## um script de amostra que criei para esta demonstração
tempo de importação

classe 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)

`` `

ou um total de mock test ?

@ggiill ei, posso fazer uma resenha?
lmao já faz um mês que até eu esqueci.

@ggiill ei, posso fazer uma resenha?
lmao já faz um mês que até eu esqueci.

@ default-303 Não sou um mantenedor - executando ping em @JonathanHuot. Provavelmente, você também deseja fazer um RP para revisão.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ryarnyah picture ryarnyah  ·  3Comentários

jcampbell05 picture jcampbell05  ·  14Comentários

polamayster picture polamayster  ·  19Comentários

JonathanHuot picture JonathanHuot  ·  26Comentários

JonathanHuot picture JonathanHuot  ·  15Comentários