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

161 lines
26 KiB
Plaintext
Raw Normal View History

2026-03-09 14:05:00 +08:00
<EFBFBD>
<00>[<5B>i^<00><00><><00>dZddlZddlmcmZddlZddlZddl m
Z
ddl m Z m Z ddlmZddlmZmZmZmZejd<07><00><00>Zdd e d
ed efd <0C>Zd ed efd<0E>ZGd<0F>d<10><00>ZGd<11>d<12><00>ZdS)zL
Tests for api_service account CRUD endpoints.
Validates tasks 4.1 and 4.2.
<EFBFBD>N)<01>patch)<02> AsyncClient<6E> ASGITransport)<01>get_db)<04> TEST_ENGINE<4E>TestSessionLocal<61>Base<73> FakeRedisc<00>F<00>K<00>t<00><00><00>tj<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>swxYwYddlm}ddl m}d<04>}<03>fd<05>}||j
t<||j
t<td|<04><07><00>5tt|<02><03><00>d<08> <09><00>4<00>d{V<00><03> }tt|<01><03><00>d
<EFBFBD> <09><00>4<00>d{V<00><03> }||fWV<00>ddd<01><00><00>d{V<00><03>n#1<00>d{V<00><03>swxYwYddd<01><00><00>d{V<00><03>n#1<00>d{V<00><03>swxYwYddd<01><00>n #1swxYwY|j
<00><00><00>|j
<00><00><00>dS) z<>
Provide an httpx AsyncClient wired to the api_service app,
with DB overridden to test SQLite and a fake Redis for auth tokens.
Nr)<01>appc<00><>K<00>t<00><00>4<00>d{V<00><03>}|WV<00>ddd<00><00><00>d{V<00><03>dS#1<00>d{V<00><03>swxYwYdS<00>N)r)<01>sessions <20>0D:\code\weibo\backend\tests\test_api_accounts.py<70>override_get_dbzclient.<locals>.override_get_dbs<><00><00><00><00>#<23>%<25>%<25> <1A> <1A> <1A> <1A> <1A> <1A> <1A><17><19>M<EFBFBD>M<EFBFBD>M<EFBFBD>M<EFBFBD> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A> <1A><><EFBFBD><EFBFBD> <1A> <1A> <1A> <1A> <1A> s <00>0<03>
:<07>:c<00><00> <00>K<00><00>Sr<00>)<01>
fake_rediss<00>r<00>_fake_get_rediszclient.<locals>._fake_get_redis"s <00><><00><00><00><19><19>z)auth_service.app.utils.security.get_redis)<01>newz http://auth)<02> transport<72>base_urlz
http://api)r
r<00>begin<69>run_syncr <00>metadata<74>
create_all<EFBFBD>api_service.app.mainr <00>auth_service.app.main<69>dependency_overridesrrrr<00>clear)<08>conn<6E>api_app<70>auth_apprr<00> auth_client<6E>
api_clientrs @r<00>clientr's<><00><><00><00><00> <1B><1B><1B>J<EFBFBD><1A> <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<>4<>3<>3<>3<>3<>3<>5<>5<>5<>5<>5<>5<><1A><1A><1A><1A><1A><1A><1A><1A>,;<3B>G<EFBFBD> <20><16>(<28>,;<3B>H<EFBFBD>!<21>&<26>)<29> <0E>3<> <1B>
<06>
<06>
<06>
*<2A>
*<2A>
<1F>#<23><08>1<>1<>1<>M<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> <18>+<2B>#<23><07>0<>0<>0<><<3C>
<EFBFBD>
<EFBFBD>
<EFBFBD> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A><18><1D>z<EFBFBD>)<29> )<29> )<29> )<29> )<29>  *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A><><EFBFBD><EFBFBD> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A> *<2A><><EFBFBD><EFBFBD> *<2A> *<2A> *<2A> *<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A>
*<2A><><EFBFBD><EFBFBD>
*<2A>
*<2A>
*<2A>
*<2A> <0C> <20>&<26>&<26>(<28>(<28>(<28> <0C>!<21>'<27>'<27>)<29>)<29>)<29>)<29>)sk<00>+A(<03>(
A2<07>5A2<07><&E$<03>#&E<05>
D$<07>E<05>$
D. <0B>.E<05>1D. <0B>2E<05>5E$<03>
E <09>E$<03>E <09>E$<03>$E(<07>+E(<07>1r%<00>suffix<69>returnc<00><00><>K<00>|<00>dd|<01><00>d|<01>d<04>dd<06><03><07><00><00>d{V<00><03>}|j}d }||k}|s<>tjd
|fd ||f<02><00>d t j<00><00>vstj|<02><00>rtj|<02><00>nd tj|<03><00>tj|<04><00>d <0A>z}tjd|<02> <00><00><00><00><02><00>dzd|iz}ttj |<07><00><00><00><00>dx}x}}|<00>dd|<01>d<04>dd<12><02><07><00><00>d{V<00><03>}|<08> <00><00>} |j}d}||k}|s<>tjd
|fd ||f<02><00>dt j<00><00>vstj|<08><00>rtj|<08><00>ndtj|<03><00>tj|<04><00>d <0A>z}tjd| <09><00><02><00>dzd|iz}ttj |<07><00><00><00><00>dx}x}}d| vr| ddS| dS)z3Helper: register a user and return an access token.z/auth/register<65>acctuser<65>acctz @example.comz Str0ng!Pass1)<03>username<6D>email<69>password)<01>jsonN<6E><4E><00><01>==<3D>z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)s<>reg<65><03>py0<79>py2<79>py5zRegister failed: z
>assert %(py7)s<>py7z /auth/login)r/r0<00><><00>respzLogin failed: <20>data<74> access_token) <0C>post<73> status_code<64>
@pytest_ar<61>_call_reprcompare<72> @py_builtins<6E>locals<6C>_should_repr_global_name<6D> _saferepr<70>_format_assertmsgr1<00>AssertionError<6F>_format_explanation)
r%r)r6<00> @py_assert1<74> @py_assert4<74> @py_assert3<74> @py_format6<74> @py_format8r=<00>
login_bodys
r<00>_register_and_loginrQ8s<00><00><00><00><1B> <20> <20>!1<>'<27>v<EFBFBD>'<27>'<27>,<2C><06>,<2C>,<2C>,<2C>"<22>9<06>9<06> <20><07><07> <07> <07> <07> <07> <07> <07>C<EFBFBD>
D<01>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<>C<><1C>!<21>!<21>-<2D>,<2C><06>,<2C>,<2C>,<2C>"<22>7<06>7<06>!<21><07><07> <07> <07> <07> <07> <07> <07>D<EFBFBD><16><19><19><1B><1B>J<EFBFBD>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<>A<> <0A><1A><1B><1B><19>&<26>!<21>.<2E>1<>1<> <15>n<EFBFBD> %<25>%r<00>tokenc<00><00>dd|<00><00>iS)N<> AuthorizationzBearer r)rRs r<00> _auth_headerrULs<00><00> <1B>.<2E>u<EFBFBD>.<2E>.<2E> /<2F>/rc<00>b<00>eZdZejjd<01><00><00>Zejjd<02><00><00>ZdS)<04>TestAPIServiceBasec<00><00><>K<00>|\}}|<03>d<01><00><00>d{V<00><03>}|j}d}||k}|s<>tjd|fd||f<02><00>dt j<00><00>vstj|<04><00>rtj|<04><00>ndtj|<05><00>tj|<06><00>d<06>z}dd|iz} ttj | <09><00><00><00><00>dx}x}}|<04>
<00><00>d }
d
}|
|u} | sltjd | fd |
|f<02><00>tj|
<EFBFBD><00>tj|<07><00>d <0A>z} dd| iz} ttj | <0A><00><00><00><00>dx}
x} }dS)Nz/healthr<r3r5r=r7<00>assert %(py7)sr;<00>successT<73><01>is<69>z%(py1)s is %(py4)s<><02>py1<79>py4<79>assert %(py6)s<>py6<79> <0B>getrArBrCrDrErFrGrIrJr1<00><0E>selfr'<00>_<>apir=rKrLrMrNrO<00> @py_assert0<74> @py_assert2<74> @py_format5<74> @py_format7s r<00> test_healthzTestAPIServiceBase.test_healthUs<><00><00><00><00><17><06><01>3<EFBFBD><18>W<EFBFBD>W<EFBFBD>Y<EFBFBD>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-rc<00><00>K<00>|\}}|<03>d<01><00><00>d{V<00><03>}|j}d}||k}|s<>tjd|fd||f<02><00>dt j<00><00>vstj|<04><00>rtj|<04><00>ndtj|<05><00>tj|<06><00>d<06>z}dd|iz} ttj | <09><00><00><00><00>dx}x}}d }
|<04>
<00><00>d
d }|
|v} | sltjd | fd |
|f<02><00>tj|
<EFBFBD><00>tj|<07><00>d<0E>z} dd| iz} ttj | <0A><00><00><00><00>dx}
x} }dS)N<>/r<r3r5r=r7rYr;z API Servicer><00>service<63><01>in)z%(py1)s in %(py4)sr^rarbrcres r<00> test_rootzTestAPIServiceBase.test_root\s<><00><00><00><00><17><06><01>3<EFBFBD><18>W<EFBFBD>W<EFBFBD>S<EFBFBD>\<5C>\<5C>!<21>!<21>!<21>!<21>!<21>!<21><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>>rN)<08>__name__<5F>
__module__<EFBFBD> __qualname__<5F>pytest<73>mark<72>asynciormrsrrrrWrWSsT<00><00><00><00><00><00> <0B>[<5B><18>.<2E>.<2E><19><18>.<2E>  <0C>[<5B><18>?<3F>?<3F><19><18>?<3F>?<3F>?rrWc<00>4<00>eZdZejjd<01><00><00>Zejjd<02><00><00>Zejjd<03><00><00>Zejjd<04><00><00>Z ejjd<05><00><00>Z
ejjd<06><00><00>Z ejjd<07><00><00>Z dS) <09>TestAccountCRUDc<00><00><>K<00>|\}}t|<02><00><00>d{V<00><03>}|<03>ddddd<05>t|<04><00><00><06><00><00>d{V<00><03>}|j}d}||k}|s<>t jd|fd ||f<02><00>d
t j<00><00>vst j|<05><00>rt j |<05><00>nd
t j |<06><00>t j |<07><00>d <0B>z} d d | iz}
tt j |
<EFBFBD><00><00><00><00>dx}x}}|<05> <00><00>} | d} d}| |u} | slt jd| fd| |f<02><00>t j | <0C><00>t j |<08><00>d<12>z}dd|iz}tt j |<0F><00><00><00><00>dx} x} }| dd} d}| |k} | slt jd| fd| |f<02><00>t j | <0C><00>t j |<08><00>d<12>z}dd|iz}tt j |<0F><00><00><00><00>dx} x} }| dd} d}| |k} | slt jd| fd| |f<02><00>t j | <0C><00>t j |<08><00>d<12>z}dd|iz}tt j |<0F><00><00><00><00>dx} x} }| dd} d}| |k} | slt jd| fd| |f<02><00>t j | <0C><00>t j |<08><00>d<12>z}dd|iz}tt j |<0F><00><00><00><00>dx} x} }d} t| <0B><00>}| |v} | s<>t jd| fd| |f<02><00>t j | <0C><00>dt j<00><00>vst jt<00><00>rt j t<00><00>nddt j<00><00>vst j| <0B><00>rt j | <0B><00>ndt j |<10><00>d <20>z}d!d"|iz}tt j |<11><00><00><00><00>dx} x} }dS)#N<>/api/v1/accounts<74>12345zSUB=abc; SUBP=xyz;z test account<6E><03> weibo_user_id<69>cookie<69>remark<72>r1<00>headersr2r3r5r=r7rYr;rZTr[r]r^rarbr>r<><00>z%(py1)s == %(py4)s<>status<75>pendingr<67>zSUB=abc)<01>not in)z4%(py1)s not in %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}<7D>str<74>body)r_<00>py3r`rb<00>assert %(py8)s<>py8)rQr@rUrArBrCrDrErFrGrIrJr1r<>)rfr'<00>authrhrRr=rKrLrMrNrOr<>rirjrkrl<00> @py_assert5<74> @py_format9s r<00>test_create_accountz#TestAccountCRUD.test_create_accountisv<00><00><00><00><1A> <09><04>c<EFBFBD>)<29>$<24>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><05><18>X<EFBFBD>X<EFBFBD>0<>$<24>*<2A>$<24>8
<EFBFBD>8
<EFBFBD> <20><05>&<26>&<26> <1E>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28><04> '<27>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26><13>y<EFBFBD>y<EFBFBD>{<7B>{<7B><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>2<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)rc<00><00><>K<00>|\}}t|d<01><00><00>d{V<00><03>}td<02><00>D]6}|<03>dd|<05><00>d|<05><00>d<06>t|<04><00><00><07><00><00>d{V<00><03><00>7|<03>dt|<04><00><00><08><00><00>d{V<00><03>}|j}d }||k} | s<>t jd
| fd ||f<02><00>d tj <00><00>vst j
|<06><00>rt j |<06><00>nd t j |<07><00>t j |<08><00>d <0A>z}
dd|
iz} tt j | <0B><00><00><00><00>dx}x} }|<06><00><00>d} t| <0C><00>} d}| |k}|s<>t jd
|fd| |f<02><00>dtj <00><00>vst j
t<00><00>rt j t<00><00>nddtj <00><00>vst j
| <0C><00>rt j | <0C><00>ndt j | <0A><00>t j |<0E><00>d<13>z}dd|iz}tt j |<10><00><00><00><00>dx} x}}dS)N<>list<73>r}<00>uidr<64><00>r<>r<>r<><00>r<>r<r3r5r=r7rYr;r>)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)s<>len)r8r_r<>rbr<>r<>)rQ<00>ranger@rUrdrArBrCrDrErFrGrIrJr1r<>)rfr'r<>rhrR<00>ir=rKrLrMrNrOr>rjr<>rlr<>s r<00>test_list_accountsz"TestAccountCRUD.test_list_accounts}s <00><00><00><00><1A> <09><04>c<EFBFBD>)<29>$<24><06>7<>7<>7<>7<>7<>7<>7<>7<><05><17>q<EFBFBD><18><18> ,<2C> ,<2C>A<EFBFBD><15>(<28>(<28>-<2D>!*<2A>q<EFBFBD><19><19>&<26>1<EFBFBD>,<2C>,<2C>5<0E>5<0E>$<24>E<EFBFBD>*<2A>*<2A><1B>,<2C>,<2C> ,<2C> ,<2C> ,<2C> ,<2C> ,<2C> ,<2C> ,<2C> ,<2C>
<19>W<EFBFBD>W<EFBFBD>/<2F><1C>e<EFBFBD>9L<39>9L<39>W<EFBFBD>M<>M<>M<>M<>M<>M<>M<>M<><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26><13>y<EFBFBD>y<EFBFBD>{<7B>{<7B>6<EFBFBD>"<22><04><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D>rc<00><00><>K<00>|\}}t|d<01><00><00>d{V<00><03>}|<03>ddddd<06>t|<04><00><00><07><00><00>d{V<00><03>}|<05><00><00>dd }|<03>d
|<06><00>t|<04><00><00> <0B><00><00>d{V<00><03>}|j}d } || k}
|
s<EFBFBD>t jd |
fd|| f<02><00>dtj <00><00>vst j
|<07><00>rt j |<07><00>ndt j |<08><00>t j | <09><00>d<10>z} dd| iz} tt j | <0C><00><00><00><00>dx}x}
} |<07><00><00>dd} d}
| |
k}|slt jd |fd| |
f<02><00>t j | <0A><00>t j |
<EFBFBD><00>d<15>z}dd|iz}tt j |<10><00><00><00><00>dx} x}}
dS)N<>detailr}<00>99zc=1z my remarkrr<>r><00>id<69>/api/v1/accounts/r<>r<r3r5r=r7rYr;r<>r<>r^rarb<00>rQr@rUr1rdrArBrCrDrErFrGrIrJ<00>rfr'r<>rhrR<00> create_resp<73>
account_idr=rKrLrMrNrOrirjrkrls r<00>test_get_account_detailz'TestAccountCRUD.test_get_account_detail<69>s<><00><00><00><00><1A> <09><04>c<EFBFBD>)<29>$<24><08>9<>9<>9<>9<>9<>9<>9<>9<><05><1F>H<EFBFBD>H<EFBFBD>%7<>!<21><1B>!<21>?
<EFBFBD>?
<EFBFBD> <20><05>&<26>&<26> %<25>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28> <0B>
!<21>%<25>%<25>'<27>'<27><06>/<2F><04>5<>
<EFBFBD><18>W<EFBFBD>W<EFBFBD>=<3D><1A>=<3D>=<3D>|<7C>TY<54>GZ<47>GZ<47>W<EFBFBD>[<5B>[<5B>[<5B>[<5B>[<5B>[<5B>[<5B>[<5B><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;rc<00><00><>K<00>|\}}t|d<01><00><00>d{V<00><03>}|<03>dddd<05>t|<04><00><00><06><00><00>d{V<00><03>}|<05><00><00>dd}|<03>d |<06><00>d
d it|<04><00><00><06><00><00>d{V<00><03>}|j}d } || k}
|
s<EFBFBD>t jd |
fd|| f<02><00>dtj <00><00>vst j
|<07><00>rt j |<07><00>ndt j |<08><00>t j | <09><00>d<10>z} dd| iz} tt j | <0C><00><00><00><00>dx}x}
} |<07><00><00>dd
} d }
| |
k}|slt jd |fd| |
f<02><00>t j | <0A><00>t j |
<EFBFBD><00>d<14>z}dd|iz}tt j |<10><00><00><00><00>dx} x}}
dS)N<>updr}<00>55zc=oldr<64>r<>r>r<>r<>r<>zupdated remarkr<r3r5r=r7rYr;r<>r^rarb)rQr@rUr1<00>putrArBrCrDrErFrGrIrJr<>s r<00>test_update_account_remarkz*TestAccountCRUD.test_update_account_remark<72>s<><00><00><00><00><1A> <09><04>c<EFBFBD>)<29>$<24><05>6<>6<>6<>6<>6<>6<>6<>6<><05><1F>H<EFBFBD>H<EFBFBD>%7<>!<21><1D>?
<EFBFBD>?
<EFBFBD> <20><05>&<26>&<26>%<25>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28> <0B>!<21>%<25>%<25>'<27>'<27><06>/<2F><04>5<>
<EFBFBD><18>W<EFBFBD>W<EFBFBD>=<3D><1A>=<3D>=<3D> <14>&<26>E
<EFBFBD><1F><05>&<26>&<26><1D>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28><04> '<27>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@rc<00><00><>K<00>|\}}t|d<01><00><00>d{V<00><03>}|<03>dddd<05>t|<04><00><00><06><00><00>d{V<00><03>}|<05><00><00>dd}|<03>d |<06><00>t|<04><00><00>
<EFBFBD><00><00>d{V<00><03>}|j}d } || k}
|
s<EFBFBD>t jd |
fd || f<02><00>dtj <00><00>vst j
|<07><00>rt j |<07><00>ndt j |<08><00>t j | <09><00>d<0F>z} dd| iz} tt j | <0C><00><00><00><00>dx}x}
} |<03>d |<06><00>t|<04><00><00>
<EFBFBD><00><00>d{V<00><03>} | j}d} || k}
|
s<EFBFBD>t jd |
fd || f<02><00>dtj <00><00>vst j
| <0A><00>rt j | <0A><00>ndt j |<08><00>t j | <09><00>d<0F>z} dd| iz} tt j | <0C><00><00><00><00>dx}x}
} dS)N<>delr}<00>77zc=delr<6C>r<>r>r<>r<>r<>r<r3r5r=r7rYr;i<><00>resp2)rQr@rUr1<00>deleterArBrCrDrErFrGrIrJrd)rfr'r<>rhrRr<>r<>r=rKrLrMrNrOr<>s r<00>test_delete_accountz#TestAccountCRUD.test_delete_account<6E>s<><00><00><00><00><1A> <09><04>c<EFBFBD>)<29>$<24><05>6<>6<>6<>6<>6<>6<>6<>6<><05><1F>H<EFBFBD>H<EFBFBD>%7<>!<21><1D>?
<EFBFBD>?
<EFBFBD> <20><05>&<26>&<26>%<25>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28> <0B>!<21>%<25>%<25>'<27>'<27><06>/<2F><04>5<>
<EFBFBD><18>Z<EFBFBD>Z<EFBFBD> @<40>J<EFBFBD> @<40> @<40>,<2C>W\<5C>J]<5D>J]<5D>Z<EFBFBD>^<5E>^<5E>^<5E>^<5E>^<5E>^<5E>^<5E>^<5E><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26><1A>g<EFBFBD>g<EFBFBD>><3E>*<2A>><3E>><3E> <0C>UZ<55>H[<5B>H[<5B>g<EFBFBD>\<5C>\<5C>\<5C>\<5C>\<5C>\<5C>\<5C>\<5C><05>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'rc<00><00><>K<00>|\}}t|d<01><00><00>d{V<00><03>}t|d<02><00><00>d{V<00><03>}|<03>dddd<06>t|<04><00><00><07><00><00>d{V<00><03>}|<06><00><00>dd }|<03>d
|<07><00>t|<05><00><00> <0B><00><00>d{V<00><03>}|j} d }
| |
k} | s<>t jd | fd| |
f<02><00>dtj <00><00>vst j
|<08><00>rt j |<08><00>ndt j | <09><00>t j |
<EFBFBD><00>d<10>z} dd| iz} tt j | <0A><00><00><00><00>dx} x} }
dS)N<>ownerA<72>ownerBr}<00>111zc=ar<61>r<>r>r<>r<>r<><00><>r3r5r=r7rYr;r<>)rfr'r<>rh<00>token_a<5F>token_br<62>r<>r=rKrLrMrNrOs r<00>)test_access_other_users_account_forbiddenz9TestAccountCRUD.test_access_other_users_account_forbidden<65>s<><00><00><00><00><1A> <09><04>c<EFBFBD>+<2B>D<EFBFBD>(<28>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B><07>+<2B>D<EFBFBD>(<28>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B><07> <20>H<EFBFBD>H<EFBFBD>%7<>"<22><1B>?
<EFBFBD>?
<EFBFBD> <20><07>(<28>(<28>%<25>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A> <0B>!<21>%<25>%<25>'<27>'<27><06>/<2F><04>5<>
<EFBFBD><19>W<EFBFBD>W<EFBFBD>=<3D><1A>=<3D>=<3D>|<7C>T[<5B>G\<5C>G\<5C>W<EFBFBD>]<5D>]<5D>]<5D>]<5D>]<5D>]<5D>]<5D>]<5D><04>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&rc<00><00><>K<00>|\}}|<03>d<01><00><00>d{V<00><03>}|j}d}||v}|s<>tjd|fd||f<02><00>dt j<00><00>vstj|<04><00>rtj|<04><00>ndtj|<05><00>tj|<06><00>d<06>z}dd|iz} ttj | <09><00><00><00><00>dx}x}}dS) Nr})i<>r<>rq)z3%(py2)s
{%(py2)s = %(py0)s.status_code
} in %(py5)sr=r7rYr;)
rdrArBrCrDrErFrGrIrJ)
rfr'rgrhr=rKrLrMrNrOs
r<00>%test_unauthenticated_request_rejectedz5TestAccountCRUD.test_unauthenticated_request_rejected<65>s <00><00><00><00><17><06><01>3<EFBFBD><18>W<EFBFBD>W<EFBFBD>/<2F>0<>0<>0<>0<>0<>0<>0<>0<><04>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-rN) rtrurvrwrxryr<>r<>r<>r<>r<>r<>r<>rrrr{r{gs<><00><00><00><00><00><00> <0B>[<5B><18>*<2A>*<2A><19><18>*<2A>& <0C>[<5B><18><1E><1E><19><18><1E>  <0C>[<5B><18> <<3C> <<3C><19><18> <<3C> <0C>[<5B><18>A<01>A<01><19><18>A<01>  <0C>[<5B><18>(<28>(<28><19><18>(<28>" <0C>[<5B><18>'<27>'<27><19><18>'<27>  <0C>[<5B><18>.<2E>.<2E><19><18>.<2E>.<2E>.rr{)r()<1D>__doc__<5F>builtinsrD<00>_pytest.assertion.rewrite<74> assertion<6F>rewriterBrw<00>pytest_asyncio<69> unittest.mockr<00>httpxrr<00> shared.modelsr<00>tests.conftestrrr r
<00>fixturer'r<>rQ<00>dictrUrWr{rrr<00><module>r<>st<00><01><04><04>
<01><00><00><00><00><00><00><00><00><00><00><00><00> <0A> <0A> <0A> <0A><15><15><15><15><1F><1F><1F><1F><1F><1F>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C> <20> <20> <20> <20> <20> <20>I<>I<>I<>I<>I<>I<>I<>I<>I<>I<>I<>I<><10><17>%*<2A>%*<2A><18><17>%*<2A>P&<26>&<26>;<3B>&<26><03>&<26>c<EFBFBD>&<26>&<26>&<26>&<26>(0<><03>0<><04>0<>0<>0<>0<>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>(o.<2E>o.<2E>o.<2E>o.<2E>o.<2E>o.<2E>o.<2E>o.<2E>o.<2E>o.r