48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
import asyncio
|
|
import asyncpg
|
|
import os
|
|
from passlib.context import CryptContext
|
|
from env_config import get_database_url, get_required_env
|
|
|
|
DB_URL = get_database_url()
|
|
|
|
# Vi setter opp passord-sjekkeren AKKURAT slik main.py gjør det
|
|
pwd_context = CryptContext(schemes=["pbkdf2_sha256"], deprecated="auto")
|
|
|
|
async def test_sannheten():
|
|
print("\n" + "="*50)
|
|
print(" 🔍 TEE OFF SANNHETSSERUM")
|
|
print("="*50)
|
|
|
|
username = os.getenv("TEST_ADMIN_USERNAME", "Envide Webutvikling").strip()
|
|
test_password = get_required_env("TEST_ADMIN_PASSWORD")
|
|
|
|
try:
|
|
conn = await asyncpg.connect(DB_URL)
|
|
row = await conn.fetchrow("SELECT password_hash FROM admins WHERE username = $1", username)
|
|
|
|
if not row:
|
|
print("❌ FEIL: Fant ikke brukeren i det hele tatt!")
|
|
return
|
|
|
|
db_hash = row['password_hash']
|
|
print(f"1. Hash funnet i databasen: {db_hash[:30]}...")
|
|
|
|
print(f"2. Tester mot passordet: '{test_password}'")
|
|
|
|
# Den magiske testen
|
|
is_valid = pwd_context.verify(test_password, db_hash)
|
|
|
|
print("-" * 50)
|
|
if is_valid:
|
|
print("✅ SUKSESS! Passordet og hashen stemmer 100% overens.")
|
|
print("➡️ KONKLUSJON: Hashingen fungerer perfekt. Problemet MÅ være at FastAPI (main.py) ikke klarer å lese JSON-dataene fra curl/frontend riktig.")
|
|
else:
|
|
print("❌ FEIL! Passordet stemmer IKKE med hashen i databasen.")
|
|
print("➡️ KONKLUSJON: Scriptet som oppdaterer passordet gjør en feil (f.eks. legger til usynlige tegn), eller lagringen i databasen blir korrupt.")
|
|
|
|
finally:
|
|
await conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_sannheten())
|