Files
kefu/deploy/knowledge-v4-review/add_scope_test.py
T
2026-09-21 10:34:06 +08:00

54 lines
3.4 KiB
Python

from pathlib import Path
p=Path('C:/kefu/wechat_rpa/test_knowledge_review.py');s=p.read_text(encoding='utf-8')
s=s.replace('from archive_store import new_id','from archive_store import ArchiveStore, new_id')
s=s.replace('class FullReviewApiTest(TestCase):\n', '''class FullReviewApiTest(TestCase):
payload = FullReviewTest.payload
start_job = FullReviewTest.start_job
process = FullReviewTest.process
first = FullReviewTest.first
seed = FullReviewTest.seed
''')
s+='''
def test_restricted_all_accounts_and_revocation_during_background_execution(self):
self.actor = self.db.authenticate('admin', 'ChangedAdmin@2026')['id']
self.store = self.client.app.state.knowledge_store
self.archive = ArchiveStore(self.db)
accounts = []
for index in range(3):
_, account = self.db.create_desktop_session(
{'user_id': f'full-review-{index}', 'sn': f'REV{index}', 'nickname': f'测试账号{index}'},
f'review-device-{index}', 'Review QA', '1.0', '')
accounts.append(account)
self.seed(10 + index, account['tenant_id'])
self.db.create_user('limited-reviewer', 'InitialReader123', 'viewer', self.actor, '')
reviewer = self.db.authenticate('limited-reviewer', 'InitialReader123')['id']
self.db.change_password(reviewer, 'InitialReader123', 'ChangedReader@2026', '')
with self.db.connect() as db:
db.executemany("INSERT OR IGNORE INTO role_permissions VALUES ('viewer',?)",
[(p,) for p in ('knowledge:read','knowledge:review','im:content:read')])
for account in accounts[:2]:
self.db.set_desktop_account_admins(account['id'], [reviewer], self.actor, '')
login = self.client.post('/api/v2/auth/login', json={'username': 'limited-reviewer', 'password': 'ChangedReader@2026'})
headers = {'Authorization': 'Bearer ' + login.json()['access_token']}
url = '/api/v2/knowledge/review-tasks'
self.assertEqual(self.client.post(url + '/preview?account_id=' + str(accounts[2]['id']), headers=headers).status_code, 403)
single = self.client.post(url + '/preview?account_id=' + str(accounts[0]['id']), headers=headers)
self.assertEqual(single.json()['total'], 10)
snapshot = self.client.post(url + '/preview?account_id=-1', headers=headers)
self.assertEqual(snapshot.status_code, 200, snapshot.text)
job = snapshot.json(); self.assertEqual(job['total'], 21)
self.assertEqual(len(job['preview']['accounts']), 2)
self.db.set_desktop_account_admins(accounts[1]['id'], [], self.actor, '')
response = self.client.post(url + '/' + job['id'] + '/start', headers=headers, json={'confirmed': True})
self.assertEqual(response.status_code, 200, response.text)
KnowledgeReviewWorker(self.store).step()
final = self.client.get(url + '/' + job['id'], headers=headers).json()
self.assertEqual((final['approved'], final['skipped']), (10, 11))
self.assertEqual(self.store.stats(accounts[2]['tenant_id']), {'draft': 12})
self.assertEqual(self.store.stats(accounts[1]['tenant_id']), {'draft': 11})
results = self.client.get(url + '/' + job['id'] + '/results', headers=headers).json()
self.assertEqual(results['total'], 0, 'Do not expose titles from revoked accounts')
'''
p.write_text(s,encoding='utf-8',newline='\n')