Files
weibo_signin/backend/tests/__pycache__/conftest.cpython-311-pytest-8.3.3.pyc

30 lines
5.4 KiB
Plaintext
Raw Normal View History

2026-03-09 14:05:00 +08:00
<EFBFBD>
}U<>i<EFBFBD>
<00><00><><00>dZddlZddlmcmZddlZddlZddl Z ddl
m Z ddl Z ddl Z ddlmZmZddlmZej<00>de j<00>e j<00>e<17><00>d<06><00><00><00>de jd<d e jd
<d e jd <d e jd<edd<0F><10><00>Zeeed<0F><11><00>ZddlmcmZee_ee_ ddlm!Z!ddl"m#Z#e j$d<14><15><00>d<16><00><00>Z%e j$d<17><18><00>d<19><00><00>Z&e j$de edffd<1B><04><00>Z'Gd<1C>d<1D><00>Z(e j$d<1E><00><00>Z)dS)z<>
Shared test fixtures for Weibo-HotSign backend tests.
Uses SQLite in-memory for database tests and a simple dict-based
fake Redis for refresh-token tests, so no external services are needed.
<EFBFBD>N)<01>AsyncGenerator)<02> AsyncSession<6F>create_async_engine)<01> sessionmakerz..zsqlite+aiosqlite://<2F> DATABASE_URLzredis://localhost:6379/0<> REDIS_URLztest-secret-key<65>JWT_SECRET_KEYztest-cookie-key<65>COOKIE_ENCRYPTION_KEYF)<01>echo)<02>class_<73>expire_on_commit)<01>Base)<01>User<65>session)<01>scopec#<00>`K<00>tj<00><00>}|V<00>|<00><00><00>dS)z6Create a single event loop for the whole test session.N)<03>asyncio<69>new_event_loop<6F>close)<01>loops <20>'D:\code\weibo\backend\tests\conftest.py<70>
event_loopr)s0<00><00><00><00> <13> !<21> #<23> #<23>D<EFBFBD>
<0E>J<EFBFBD>J<EFBFBD>J<EFBFBD><08>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>L<EFBFBD>L<EFBFBD>L<EFBFBD>T)<01>autousec<00><>K<00>t<00><00><00>4<00>d{V<00><03>}|<00>tjj<00><00><00>d{V<00><03>ddd<01><00><00>d{V<00><03>n#1<00>d{V<00><03>swxYwYdWV<00>t<00><00><00>4<00>d{V<00><03>}|<00>tjj<00><00><00>d{V<00><03>ddd<01><00><00>d{V<00><03>dS#1<00>d{V<00><03>swxYwYdS)z/Create all tables before each test, drop after.N)<07> TEST_ENGINE<4E>begin<69>run_syncr<00>metadata<74>
create_all<EFBFBD>drop_all)<01>conns r<00>setup_dbr#1s<><00><00><00><00><1B> <20> <20>"<22>"<22>6<>6<>6<>6<>6<>6<>6<>d<EFBFBD><12>m<EFBFBD>m<EFBFBD>D<EFBFBD>M<EFBFBD>4<>5<>5<>5<>5<>5<>5<>5<>5<>5<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<><36><EFBFBD><EFBFBD>6<>6<>6<>6<> <09>E<EFBFBD>E<EFBFBD>E<EFBFBD>E<EFBFBD><1A> <20> <20>"<22>"<22>4<>4<>4<>4<>4<>4<>4<>d<EFBFBD><12>m<EFBFBD>m<EFBFBD>D<EFBFBD>M<EFBFBD>2<>3<>3<>3<>3<>3<>3<>3<>3<>3<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<>4<><34><EFBFBD><EFBFBD>4<>4<>4<>4<>4<>4s#<00>+A<03>
A)<07>,A)<07>+C<03>
C<07>C<07>returnc<00><>K<00>t<00><00>4<00>d{V<00><03>}|WV<00>ddd<01><00><00>d{V<00><03>dS#1<00>d{V<00><03>swxYwYdS)zYield a fresh async DB session.N)<01>TestSessionLocal)rs r<00>
db_sessionr';s<><00><00><00><00> <20>!<21>!<21><16><16><16><16><16><16><16>W<EFBFBD><15> <0A> <0A> <0A> <0A><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><16><><EFBFBD><EFBFBD><16><16><16><16><16>s <00>0<03>
:<07>:c<00>D<00>eZdZdZd<02>Zdededefd<06>Zdefd<07>Zdefd<08>Z d S)
<EFBFBD> FakeRedisz4Minimal async Redis stand-in backed by a plain dict.c<00><00>i|_dS<00>N<><01>_store)<01>selfs r<00>__init__zFakeRedis.__init__Gs <00><00>&(<28><04> <0B> <0B> r<00>key<65>ttl<74>valuec<00><00>K<00>||j|<dSr+r,)r.r0r1r2s r<00>setexzFakeRedis.setexJs<00><00><00><00> <20><04> <0B>C<EFBFBD><18><18>rc<00><00>:K<00>|j<00>|<01><00>Sr+)r-<00>get<65>r.r0s rr6z FakeRedis.getMs<00><00><00><00><13>{<7B><EFBFBD><EFBFBD>s<EFBFBD>#<23>#<23>#rc<00><00>@K<00>|j<00>|d<00><00>dSr+)r-<00>popr7s r<00>deletezFakeRedis.deletePs"<00><00><00><00> <0C> <0B><0F><0F><03>T<EFBFBD>"<22>"<22>"<22>"<22>"rN)
<EFBFBD>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r/<00>str<74>intr4r6r:<00>rrr)r)Ds<><00><00><00><00><00><00>><3E>><3E>)<29>)<29>)<29>!<21>s<EFBFBD>!<21><13>!<21>S<EFBFBD>!<21>!<21>!<21>!<21>$<24>S<EFBFBD>$<24>$<24>$<24>$<24>#<23><03>#<23>#<23>#<23>#<23>#<23>#rr)c<00><00>t<00><00>Sr+)r)rArr<00>
fake_redisrCTs <00><00> <14>;<3B>;<3B>r)*r><00>builtins<6E> @py_builtins<6E>_pytest.assertion.rewrite<74> assertion<6F>rewrite<74>
@pytest_arr<00>sys<79>os<6F>typingr<00>pytest<73>pytest_asyncio<69>sqlalchemy.ext.asynciorr<00>sqlalchemy.ormr<00>path<74>insert<72>join<69>dirname<6D>__file__<5F>environrr&<00>shared.models.base<73>models<6C>base<73> _base_mod<6F>engine<6E>AsyncSessionLocalr<00> shared.modelsr<00>fixturerr#r'r)rCrArr<00><module>r_s]<00><01><04><04><01><00><00><00><00><00><00><00><00><00><00><00><00><0E><0E><0E><0E>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <09> <09> <09> <09>!<21>!<21>!<21>!<21>!<21>!<21> <0A> <0A> <0A> <0A><15><15><15><15>D<>D<>D<>D<>D<>D<>D<>D<>'<27>'<27>'<27>'<27>'<27>'<27><04><08><0F><0F><01>2<EFBFBD>7<EFBFBD><<3C><<3C><02><07><0F><0F><08> 9<> 9<>4<EFBFBD>@<40>@<40>A<>A<>A<>3<><02>
<EFBFBD>><3E><1A>4<><02>
<EFBFBD>;<3B><17>0<><02>
<EFBFBD> <1B><1C>&7<><02>
<EFBFBD> "<22>#<23>"<22>!<21>"7<>e<EFBFBD>D<>D<>D<> <0B><1F><<3C> <0B>L<EFBFBD>SX<53>Y<>Y<>Y<><10>'<27>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26><1E> <09><10>.<2E> <09><1B>#<23>#<23>#<23>#<23>#<23>#<23><1E><1E><1E><1E><1E><1E><10><16><1E>i<EFBFBD> <20> <20> <20><11><11>!<21> <20><11><18><1E><17><04>%<25>%<25>%<25>4<>4<>&<26>%<25>4<><10><17><16>.<2E><1C>t<EFBFBD>);<3B><<3C><16><16><16><18><17><16> #<23> #<23> #<23> #<23> #<23> #<23> #<23> #<23> <08><1E><17><17><10><1E><17><17>r