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:
@@ -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}'
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user