fix in-app SearXNG provider save
CI / compose (push) Successful in 12m28s

This commit is contained in:
Marco0300
2026-09-03 22:11:24 +02:00
parent 89133a76de
commit 7e9f39c16e
2 changed files with 7 additions and 2 deletions
+5 -1
View File
@@ -27,11 +27,15 @@ class ProviderConfigTests(unittest.TestCase):
self.assertNotIn(b'nous-secret',raw); self.assertNotIn(b'fire-secret',raw)
mode=stat.S_IMODE(os.stat(os.environ['PROVIDER_CONFIG_KEY_FILE']).st_mode); self.assertEqual(mode,0o600)
status,out=self.req('GET','/api/v1/admin/ai-provider-config'); self.assertNotIn('credentials',out); self.assertEqual(out['status'],'ready')
def test_patch_ui_contract_accepts_nous_and_internal_searxng_without_firecrawl(self):
status,out=self.req('PATCH','/api/v1/ai/provider-config',{'provider':'nous_portal','model':'Hermes-4-405B','nous_base_url':'https://inference-api.nousresearch.com/v1','searxng_base_url':'http://searxng:8080','enabled':True,'credentials':{'nous_api_key':'nous-only'}})
self.assertEqual(status,200); self.assertTrue(out['configured']); self.assertEqual(out['provider'],'nous_portal')
def test_viewer_cannot_mutate_but_can_read_safe_status(self):
ph,s=hash_password('viewer'); db=sqlite3.connect(self.db); db.execute("INSERT INTO users(organization_id,email,password_hash,password_salt,role) VALUES(?,?,?,?,?)",('demo-tenant','pc-viewer@test',ph,s,'viewer')); db.commit(); db.close(); self.cookie=None; self.req('POST','/api/v1/auth/login',{'email':'pc-viewer@test','password':'viewer'})
self.assertEqual(self.req('GET','/api/v1/admin/ai-provider-config')[0],200); self.assertEqual(self.req('POST','/api/v1/admin/ai-provider-config',{'provider':'nous_portal'})[0],403)
def test_invalid_config_and_connectivity_never_sends_outreach(self):
self.assertEqual(self.req('POST','/api/v1/admin/ai-provider-config',{'provider':'nous_portal','enabled':True,'credentials':{'nous_api_key':'x'}})[0],400)
self.assertEqual(self.req('POST','/api/v1/admin/ai-provider-config',{'provider':'nous_portal','enabled':True,'credentials':{'firecrawl_api_key':'y'}})[0],400)
self.req('POST','/api/v1/admin/ai-provider-config',{'provider':'nous_portal','enabled':True,'credentials':{'nous_api_key':'x','firecrawl_api_key':'y'}})
with patch('app.provider_config.urlopen') as opened:
status,out=self.req('POST','/api/v1/admin/ai-provider-config/test',{}); self.assertEqual(status,200); self.assertFalse(out['outbound_calls']); self.assertEqual(out['network_calls'],2); self.assertEqual(opened.call_count,2)