Example #1
0
def create_app(secret_key, token, tracker_manager, clients_manager, notifier_manager, settings_manager,
               engine_runner, log_manager):
    AuthMiddleware.init(secret_key, token, lambda: settings_manager.get_is_authentication_enabled())
    app = create_api()
    add_static_route(app, 'webapp')
    app.add_route('/api/login', Login(settings_manager))
    app.add_route('/api/logout', Logout())
    app.add_route('/api/topics', TopicCollection(tracker_manager))
    app.add_route('/api/topics/{id}', Topic(tracker_manager))
    app.add_route('/api/topics/{id}/reset_status', TopicResetStatus(tracker_manager))
    app.add_route('/api/topics/parse', TopicParse(tracker_manager))
    app.add_route('/api/trackers', TrackerCollection(tracker_manager))
    app.add_route('/api/trackers/{tracker}', Tracker(tracker_manager))
    app.add_route('/api/trackers/{tracker}/check', TrackerCheck(tracker_manager))
    app.add_route('/api/clients', ClientCollection(clients_manager))
    app.add_route('/api/clients/{client}', Client(clients_manager))
    app.add_route('/api/clients/{client}/check', ClientCheck(clients_manager))
    app.add_route('/api/clients/{client}/default', ClientDefault(clients_manager))
    app.add_route('/api/notifiers', NotifierCollection(notifier_manager))
    app.add_route('/api/notifiers/{notifier}', Notifier(notifier_manager))
    app.add_route('/api/notifiers/{notifier}/check', NotifierCheck(notifier_manager))
    app.add_route('/api/notifiers/{notifier}/enabled', NotifierEnabled(notifier_manager))
    app.add_route('/api/settings/authentication', SettingsAuthentication(settings_manager))
    app.add_route('/api/settings/password', SettingsPassword(settings_manager))
    app.add_route('/api/settings/developer', SettingsDeveloper(settings_manager))
    app.add_route('/api/settings/logs', SettingsLogs(settings_manager))
    app.add_route('/api/settings/execute', SettingsExecute(engine_runner))
    app.add_route('/api/execute/logs', ExecuteLogs(log_manager))
    app.add_route('/api/execute/logs/{execute_id}/details', ExecuteLogsDetails(log_manager))
    app.add_route('/api/execute/logs/current', ExecuteLogCurrent(log_manager))
    app.add_route('/api/execute/call', ExecuteCall(engine_runner))
    return app
Example #2
0
    def test_bad_requests(self):
        entries = [{}, {}, {}]
        count = 3

        log_manager = MagicMock()
        log_manager.get_log_entries = MagicMock(return_value=(entries, count))

        # noinspection PyTypeChecker
        execute_logs = ExecuteLogs(log_manager)

        self.api.add_route('/api/execute/logs', execute_logs)

        self.simulate_request('/api/execute/logs')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'take is required')

        self.simulate_request('/api/execute/logs', query_string='take=abcd')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'take should be int')

        self.simulate_request('/api/execute/logs',
                              query_string='take=10&skip=abcd')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'skip should be int')

        self.simulate_request('/api/execute/logs', query_string='take=101')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'take should be less or equal to 100')

        self.simulate_request('/api/execute/logs', query_string='take=-10')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'take should be greater than 0')

        self.simulate_request('/api/execute/logs', query_string='take=0')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'take should be greater than 0')

        self.simulate_request('/api/execute/logs',
                              query_string='take=10&skip=-1')
        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST,
                         'skip should be greater or equal to 0')
Example #3
0
    def test_get_all(self):
        entries = [{}, {}, {}]
        count = 3

        log_manager = MagicMock()
        log_manager.get_log_entries = MagicMock(return_value=(entries, count))

        # noinspection PyTypeChecker
        execute_logs = ExecuteLogs(log_manager)

        self.api.add_route('/api/execute/logs', execute_logs)

        body = self.simulate_request('/api/execute/logs',
                                     query_string='take=10',
                                     decode='utf-8')

        self.assertEqual(self.srmock.status, falcon.HTTP_OK)
        self.assertTrue(
            'application/json' in self.srmock.headers_dict['Content-Type'])

        result = json.loads(body)

        self.assertEqual(entries, result['data'])
        self.assertEqual(count, result['count'])
Example #4
0
    def test_get_paged(self):
        # count should be less than 30
        count = 23
        entries = [{'i': i} for i in range(count)]

        def get_log_entries(skip, take):
            return entries[skip:skip + take], count

        log_manager = MagicMock()
        log_manager.get_log_entries = MagicMock(side_effect=get_log_entries)

        # noinspection PyTypeChecker
        execute_logs = ExecuteLogs(log_manager)

        self.api.add_route('/api/execute/logs', execute_logs)

        body = self.simulate_request('/api/execute/logs',
                                     query_string='take=10',
                                     decode='utf-8')

        self.assertEqual(self.srmock.status, falcon.HTTP_OK)
        self.assertTrue(
            'application/json' in self.srmock.headers_dict['Content-Type'])

        result = json.loads(body)

        self.assertEqual(entries[0:10], result['data'])
        self.assertEqual(count, result['count'])

        body = self.simulate_request('/api/execute/logs',
                                     query_string='take=10&skip=0',
                                     decode='utf-8')

        self.assertEqual(self.srmock.status, falcon.HTTP_OK)
        self.assertTrue(
            'application/json' in self.srmock.headers_dict['Content-Type'])

        result = json.loads(body)

        self.assertEqual(entries[0:10], result['data'])
        self.assertEqual(count, result['count'])

        body = self.simulate_request('/api/execute/logs',
                                     query_string='take=10&skip=10',
                                     decode='utf-8')

        self.assertEqual(self.srmock.status, falcon.HTTP_OK)
        self.assertTrue(
            'application/json' in self.srmock.headers_dict['Content-Type'])

        result = json.loads(body)

        self.assertEqual(entries[10:20], result['data'])
        self.assertEqual(count, result['count'])

        body = self.simulate_request('/api/execute/logs',
                                     query_string='take=10&skip=20',
                                     decode='utf-8')

        self.assertEqual(self.srmock.status, falcon.HTTP_OK)
        self.assertTrue(
            'application/json' in self.srmock.headers_dict['Content-Type'])

        result = json.loads(body)

        # assume that count is less then 30
        self.assertEqual(entries[20:count], result['data'])
        self.assertEqual(count, result['count'])