From 106c3421e630b8d5b170f1c3d951da2cae1c8ae9 Mon Sep 17 00:00:00 2001 From: lusixing Date: Sat, 31 Jan 2026 17:52:00 -0800 Subject: [PATCH] added_user_serach --- .gitignore | 5 +- app/__pycache__/auth.cpython-311.pyc | Bin 6243 -> 6243 bytes app/__pycache__/database.cpython-311.pyc | Bin 3483 -> 5953 bytes app/__pycache__/main.cpython-311.pyc | Bin 10803 -> 21398 bytes app/__pycache__/models.cpython-311.pyc | Bin 2172 -> 4972 bytes app/__pycache__/schemas.cpython-311.pyc | Bin 4001 -> 6654 bytes app/main.py | 22 +++++++- .../sp_trust_sharding.cpython-310.pyc | Bin 3352 -> 3360 bytes .../__pycache__/sp_vault_aes.cpython-310.pyc | Bin 2910 -> 2918 bytes test/test_user_search.py | 50 ++++++++++++++++++ 10 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 test/test_user_search.py diff --git a/.gitignore b/.gitignore index 16399a6..68e89b3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ gitignore # Python virtual environments venv/ -app/ \ No newline at end of file +# Python cache +__pycache__/ +app/__pycache__/ +*.pyc \ No newline at end of file diff --git a/app/__pycache__/auth.cpython-311.pyc b/app/__pycache__/auth.cpython-311.pyc index cf66f441eeb294fde1a75c7cfa4703ac6ce94295..fd4ec4d92b90ab2facc9a79f3975a361013424ad 100644 GIT binary patch delta 20 acmaEC@YsNRIWI340}xzZSGSQnLIMCp(gr91 delta 20 acmaEC@YsNRIWI340}!Zkmu}>akN^NY5d_Wv diff --git a/app/__pycache__/database.cpython-311.pyc b/app/__pycache__/database.cpython-311.pyc index f745474a00d8113655f42ea92520f0c25f068c8e..8946a9b1e41b9b213fa5261029bb7f7599cdcfa9 100644 GIT binary patch literal 5953 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 GT>dxFB&gZ| delta 2727 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 delta 1010 zcmah{Jx>%t7@pbN+mE~5y;~w59v>#g0BgaSNN6-B7~)w0i9m70T$Y=`TiN?y<`x4D zS6EPT84G(8ETGWJR{aBFLP55XmS};Ag;5J<<{I@b@y)(ZX7W7mJMTO@U&eoBotL(q z0zCGAHiKNU?F_-4_QXU90tAo}8dbAs@^u2KVXB%grXf&30ifhlfHa&wNC0rivlB&2 zaysXXF3v{g1K_33h1AoT3vZ2iFt!K|{bo?F(Mr%bhk}E#de^78+;;nw?|^NX)2wDc z98Ml-2MRxpXD5ob0_0LRMt`b}tSzVlqY(A3{tIHIVI2mzd z@06ioPl>gt7HmeC^zp;)@tJgl*ZnALvQOHL$=F%*%NwOey%F*0G2O9eDaFmH3Jypq zK(Q(o^IjjzCki=3w5|D79A_#%tzcAY_>?}W6U1KY`6LnUvok%%J|{-A4&M*~I#2o* zu$++}TY7crI5YDxGjo!eY27~^7};NczS6EetF;!++(C9?Y-ygXV~gfxsItfAo81HM z<)QFXM$wTjXxMrL5j@g+dZb~Svql%|cK#gc=dH*%hb5Bb=s{`Dj=Ue83Xq(e3<}kR zkZ}XZu-J_V7!@!kK)e^C3b?{n(uG;KL4qxAV`&3#muST&NP0pBgd`_mQh>bTb+M9z z2pHl?-vj1YyX=KE>$c`va~+*v=RJolyZPPNp_`!}mMgfrJyj=F**!Lp-}Kk`LnD^x zDUFwn|32)8al2YaQHbx5X|5BF(hnRi5)i^uuz396&+SsMn|;@!3(baW@B;M4z3H!# Z`SvG&)rPCGq8IMXiHcPyDthtKm)}!M?EU}% diff --git a/app/__pycache__/schemas.cpython-311.pyc b/app/__pycache__/schemas.cpython-311.pyc index ecd12b0e4a782671cfc9fd044d85d1a89440ea33..7c42b8b5cd2f1c18b56ffecf570a69398093585c 100644 GIT binary patch literal 6654 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 vvlz2ak?rG2QB~r diff --git a/test/core/__pycache__/sp_vault_aes.cpython-310.pyc b/test/core/__pycache__/sp_vault_aes.cpython-310.pyc index 11401e986bb77d8a59447186a0f47044f659b834..28a7fae42447fbe838cf821a88c1f42acc052a54 100644 GIT binary patch delta 33 ncmca7_DqaBpO=@50SGRytJ}!EjET{6@+Kw?#-z=cnYuXur`8H7 delta 31 lcmaDRc2A5upO=@50SJUyN;h&ZV`6liyopI;^CPAf4gh??2vYz6 diff --git a/test/test_user_search.py b/test/test_user_search.py new file mode 100644 index 0000000..679d28f --- /dev/null +++ b/test/test_user_search.py @@ -0,0 +1,50 @@ +import httpx +import asyncio + +BASE_URL = "http://localhost:8000" + +async def test_search(): + async with httpx.AsyncClient() as client: + # 1. Login to get token + login_data = { + "username": "testuser", + "password": "testpassword" + } + # First, try to register if user doesn't exist (assuming test env) + try: + await client.post(f"{BASE_URL}/register", json={ + "username": "testuser", + "email": "test@example.com", + "password": "testpassword" + }) + except: + pass + + response = await client.post(f"{BASE_URL}/login", json=login_data) + if response.status_code != 200: + print(f"Login failed: {response.text}") + return + + token = response.json()["access_token"] + headers = {"Authorization": f"Bearer {token}"} + + # 2. Test search by username + print("Testing search by username 'test'...") + response = await client.get(f"{BASE_URL}/users/search?query=test", headers=headers) + print(f"Status: {response.status_code}") + print(f"Body: {response.json()}") + + # 3. Test search by email + print("\nTesting search by email 'example'...") + response = await client.get(f"{BASE_URL}/users/search?query=example", headers=headers) + print(f"Status: {response.status_code}") + print(f"Body: {response.json()}") + + # 4. Test search with no results + print("\nTesting search with no results 'nonexistent'...") + response = await client.get(f"{BASE_URL}/users/search?query=nonexistent", headers=headers) + print(f"Status: {response.status_code}") + print(f"Body: {response.json()}") + +if __name__ == "__main__": + asyncio.run(test_search())