get logging test endpoint to work again

The handler and formatter classes are expecting an object
and the previous method passed a dict, so this change converts
the data into a mock settings object.
This commit is contained in:
AlanCoding 2017-06-28 14:17:46 -04:00
parent 7d283f1dfd
commit c1ff41fa45
3 changed files with 14 additions and 18 deletions

View File

@ -152,7 +152,12 @@ class SettingLoggingTest(GenericAPIView):
serializer = self.get_serializer(obj, data=request.data)
serializer.is_valid(raise_exception=True)
try:
BaseHTTPSHandler.perform_test(serializer.validated_data)
class MockSettings:
pass
mock_settings = MockSettings()
for k, v in serializer.validated_data.items():
setattr(mock_settings, k, v)
BaseHTTPSHandler.perform_test(mock_settings)
except LoggingConnectivityException as e:
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
return Response(status=status.HTTP_200_OK)

View File

@ -2,7 +2,6 @@
# All Rights Reserved.
# Python
from collections import OrderedDict
import pytest
import os
@ -209,26 +208,18 @@ def test_logging_aggregrator_connection_test_bad_request(get, post, admin, key):
def test_logging_aggregrator_connection_test_valid(mocker, get, post, admin):
with mock.patch.object(BaseHTTPSHandler, 'perform_test') as perform_test:
url = reverse('api:setting_logging_test')
post(url, {
user_data = {
'LOG_AGGREGATOR_TYPE': 'logstash',
'LOG_AGGREGATOR_HOST': 'localhost',
'LOG_AGGREGATOR_PORT': 8080,
'LOG_AGGREGATOR_USERNAME': 'logger',
'LOG_AGGREGATOR_PASSWORD': 'mcstash'
}, user=admin, expect=200)
perform_test.assert_called_with(OrderedDict([
('LOG_AGGREGATOR_HOST', u'localhost'),
('LOG_AGGREGATOR_PORT', 8080),
('LOG_AGGREGATOR_TYPE', 'logstash'),
('LOG_AGGREGATOR_USERNAME', 'logger'),
('LOG_AGGREGATOR_PASSWORD', 'mcstash'),
('LOG_AGGREGATOR_LOGGERS', ['awx', 'activity_stream', 'job_events', 'system_tracking']),
('LOG_AGGREGATOR_INDIVIDUAL_FACTS', False),
('LOG_AGGREGATOR_ENABLED', False),
('LOG_AGGREGATOR_TOWER_UUID', ''),
('LOG_AGGREGATOR_PROTOCOL', 'https'),
('LOG_AGGREGATOR_TCP_TIMEOUT', 5),
]))
}
post(url, user_data, user=admin, expect=200)
create_settings = perform_test.call_args[0][0]
for k, v in user_data.items():
assert hasattr(create_settings, k)
assert getattr(create_settings, k) == v
@pytest.mark.django_db

View File

@ -22,7 +22,7 @@ class LogstashFormatter(LogstashFormatterVersion1):
settings_module = kwargs.pop('settings_module', None)
ret = super(LogstashFormatter, self).__init__(**kwargs)
if settings_module:
self.host_id = settings_module.CLUSTER_HOST_ID
self.host_id = getattr(settings_module, 'CLUSTER_HOST_ID', None)
if hasattr(settings_module, 'LOG_AGGREGATOR_TOWER_UUID'):
self.tower_uuid = settings_module.LOG_AGGREGATOR_TOWER_UUID
self.message_type = getattr(settings_module, 'LOG_AGGREGATOR_TYPE', 'other')