aim-web2.1.0rc9

This commit is contained in:
admin_rb
2026-09-22 19:23:17 +02:00
parent d095887d2e
commit 3dfc80b782
438 changed files with 31613 additions and 1510 deletions
@@ -0,0 +1,41 @@
import json
from pathlib import Path
import sqlite3
import pytest
from aim_webgui.db.store import Store
from aim_webgui.config import Settings
from aim_webgui.workflows import Workflows
from aim_webgui.errors import WebError
def test_v3_migration_keeps_auth_history_and_duplicate_titles(tmp_path):
state=tmp_path/'state';state.mkdir(mode=0o700)
path=state/'webgui.sqlite3';path.touch(mode=0o600)
db=sqlite3.connect(path)
migrations=Path(__import__('aim_webgui.db.store',fromlist=['x']).__file__).parent/'migrations'
for version in (1,2,3):db.executescript(next(migrations.glob(f'{version:04d}_*.sql')).read_text())
db.execute('PRAGMA user_version=3')
db.execute("INSERT INTO users(username,password_hash,role,enabled,must_change_password,created_at,updated_at) VALUES('old-admin','SYNTHETIC-HASH','admin',1,0,1,1)")
uid=db.execute("SELECT id FROM users").fetchone()[0]
db.execute("INSERT INTO metadata VALUES('initialized','1')")
for name,ident in [('Duplicate','plan-a'),('duplicate','plan-b')]:
db.execute('INSERT INTO plans VALUES(?,?,?,?,?,?,?)',(ident,uid,name,'example','debug_test_connection','{"legacy":true}',1))
for ident,status in [('oldq','queued'),('oldp','pending'),('oldr','running'),('oldf','failed')]:
db.execute('INSERT INTO jobs(id,owner_id,status,plan,created_at,scheduled_at,mode) VALUES(?,?,?,?,?,?,?)',(ident,uid,status,'{"legacy":true}',1,1,'check'))
db.execute('INSERT INTO job_events(job_id,occurred_at,event) VALUES(?,?,?)',(ident,1,'Historical event'))
db.execute("INSERT INTO audit(occurred_at,actor,action,subject) VALUES(1,'old-admin','old-action','old')")
db.commit();db.close()
store=Store(path);store.migrate();store.check()
with store.read()as db:
assert db.execute('PRAGMA user_version').fetchone()[0]==5
assert db.execute('SELECT password_hash FROM users').fetchone()[0]=='SYNTHETIC-HASH'
assert [r[0]for r in db.execute('SELECT name FROM plans ORDER BY id')]==['Duplicate','duplicate']
assert dict(db.execute('SELECT id,status FROM jobs'))=={'oldq':'blocked','oldp':'blocked','oldr':'interrupted','oldf':'failed'}
assert db.execute('SELECT COUNT(*) FROM job_events').fetchone()[0]==4
assert db.execute("SELECT COUNT(*) FROM audit WHERE action='legacy-job-stopped'").fetchone()[0]==3
flow=Workflows(Settings(state_dir=state))
with pytest.raises(WebError)as error:
flow._insert_plan(uid,' DUPLICATE ',{'customer':'example','playbook':'debug_test_connection'})
assert error.value.code=='plan_name_exists'
store.migrate()
with store.read()as db:assert db.execute("SELECT COUNT(*) FROM audit WHERE action='legacy-job-stopped'").fetchone()[0]==3