fix(check_connectors): Mattermost OK-ветка — bot.caps() вместо bot.role.

MattermostBot не имеет поля .role (есть галки can_* и метод caps()).
При успешном коннекте (users/me → 200) команда падала с AttributeError.
Теперь показывает включённые возможности бота. Тест на OK-ветку добавлен.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-11-02 20:24:41 +02:00
parent f53593966e
commit f52526ea98
2 changed files with 25 additions and 1 deletions
+2 -1
View File
@@ -66,7 +66,8 @@ class Command(BaseCommand):
from apps.mattermost_connector.mattermost_service import MattermostService
svc = MattermostService(role='provisioning')
me = svc.driver.users.get_user('me')
return 'OK', f"бот @{me.get('username', '?')} (роль {svc.bot.role})"
caps = ', '.join(svc.bot.caps()) or '—'
return 'OK', f"бот @{me.get('username', '?')} (возможности: {caps})"
except Exception as e: # noqa: BLE001 — диагностика: любая ошибка = FAIL
return 'FAIL', f'{type(e).__name__}: {e}'
+23
View File
@@ -38,3 +38,26 @@ class CheckConnectorsTests(TestCase):
self.assertIn('nextcloud', text)
self.assertNotIn('mattermost', text)
self.assertNotIn('s3', text)
def test_mattermost_ok_branch_formats(self):
"""OK-ветка Mattermost обращается к реальным атрибутам бота (caps()),
а не к несуществующему .role — регрессия на AttributeError."""
from core.models import ConnectorConfig
ConnectorConfig.objects.create(
connector_type='mattermost', is_enabled=True, host='mm.local',
)
fake_svc = mock.Mock()
fake_svc.driver.users.get_user.return_value = {'username': 'acore-bot', 'id': 'x1'}
fake_svc.bot.caps.return_value = ['Провижининг (сотрудники)']
out = StringIO()
with mock.patch(
'apps.mattermost_connector.mattermost_service.MattermostService',
return_value=fake_svc,
):
call_command('check_connectors', 'mattermost', stdout=out)
text = out.getvalue()
self.assertIn('OK', text)
self.assertIn('@acore-bot', text)
self.assertIn('Провижининг', text)