Oauthlib: Populate_token_attributes()floatexpires_at値のValueError

作成日 2020年12月10日  ·  7コメント  ·  ソース: oauthlib/oauthlib

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

一部のトークンには、フロートとしてexpires_at値があり(例: 1612807300.1613762 )、この行でValueError: invalid literal for int() with base 10がスローされます。 これは、 int(float(response.get('expires_at'))) (または切り捨てないように丸める)を使用して解決できます。

Bug Contributor Friendly OAuth2-Client

最も参考になるコメント

expires_atの使用法はRFCで定義されていないため、コードにも混乱があるようです。 expires_inと同様にintであると見なすことができます。

その使用法を修正し、このエッジケースをカバーするためにユニットテストを追加するPRは大歓迎です。

全てのコメント7件

そのすぐ上でself._expires_atがフロートになります。

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

expires_atの使用法はRFCで定義されていないため、コードにも混乱があるようです。 expires_inと同様にintであると見なすことができます。

その使用法を修正し、このエッジケースをカバーするためにユニットテストを追加するPRは大歓迎です。

ねえ、私はこの問題を抱えることができますか? 私はオープンソースから始めたばかりなので、これは良いスタートです。

ねえ、私はこの問題を抱えることができますか? 私はオープンソースから始めたばかりなので、これは良いスタートです。

@ default-303頑張ってください!

@ggiillありがとう、私は次の変更を行いました

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

すべてのテストに合格するのは、 pytest実行したときです。

しかし、どのようなテストを追加してほしいですか? 単純なtypecheckようにこのようなものをテストします-
`` `
ユニットテストをインポートする
インポート修正##このデモ用に作成したサンプルスクリプト
インポート時間

クラス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)

`` `

またはmock testいっぱいですか?

@ggiillねえ、レビューを
lmaoそれは私がそれを忘れていたとしても1ヶ月でした。

@ggiillねえ、レビューを
lmaoそれは私がそれを忘れていたとしても1ヶ月でした。

@ default-303私はメンテナではありません-@ JonathanHuotにpingを送信します。 あなたはおそらくレビューのためにもPRを入れたいと思うでしょう。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

prudnikov picture prudnikov  ·  11コメント

polamayster picture polamayster  ·  19コメント

ib-lundgren picture ib-lundgren  ·  21コメント

JonathanHuot picture JonathanHuot  ·  15コメント

JonathanHuot picture JonathanHuot  ·  10コメント