Oauthlib: populate_token_attributes() ValueError untuk nilai float expired_at

Dibuat pada 10 Des 2020  ·  7Komentar  ·  Sumber: oauthlib/oauthlib

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

Beberapa token memiliki nilai expires_at sebagai float (contoh: 1612807300.1613762 ) yang menyebabkan baris ini mengeluarkan ValueError: invalid literal for int() with base 10 . Ini dapat diselesaikan menggunakan int(float(response.get('expires_at'))) (atau pembulatan agar tidak terpotong).

Bug Contributor Friendly OAuth2-Client

Komentar yang paling membantu

Penggunaan expires_at tidak didefinisikan dalam RFC, jadi tampaknya kebingungan juga ada dalam kode. Kita dapat menganggap itu adalah int yang mirip dengan expires_in .

Setiap PR untuk memperbaiki penggunaannya dan menambahkan unit test untuk menutupi edge-case ini diterima.

Semua 7 komentar

Tepat di atas itu self._expires_at dijadikan float:

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

Penggunaan expires_at tidak didefinisikan dalam RFC, jadi tampaknya kebingungan juga ada dalam kode. Kita dapat menganggap itu adalah int yang mirip dengan expires_in .

Setiap PR untuk memperbaiki penggunaannya dan menambahkan unit test untuk menutupi edge-case ini diterima.

hei, bisakah saya memiliki masalah ini? Saya baru memulai dengan open source, jadi ini akan menjadi awal yang baik ig.

hei, bisakah saya memiliki masalah ini? Saya baru memulai dengan open source, jadi ini akan menjadi awal yang baik ig.

@default-303 lakukanlah!

@ggiill terima kasih, saya melakukan perubahan berikut

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

dan lulus semua tes adalah ketika saya menjalankan pytest

Tapi tes macam apa yang Anda ingin saya tambahkan? seperti typecheck menguji sesuatu seperti ini -
```
impor unittest
impor perbaikan ## contoh skrip yang saya buat untuk demo ini
waktu impor

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

```

atau penuh pada mock test ?

@ggiill hei, bisakah saya mendapatkan ulasan?
lmao sudah sebulan bahkan aku lupa.

@ggiill hei, bisakah saya mendapatkan ulasan?
lmao sudah sebulan bahkan aku lupa.

@default-303 Saya bukan pengelola - ping @JonathanHuot. Anda mungkin ingin memasukkan PR untuk ditinjau juga.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jcampbell05 picture jcampbell05  ·  14Komentar

ib-lundgren picture ib-lundgren  ·  21Komentar

JonathanHuot picture JonathanHuot  ·  26Komentar

JonathanHuot picture JonathanHuot  ·  33Komentar

potiuk picture potiuk  ·  14Komentar