def test_creates_event_for_node_with_bridge_interface(self): event_type = factory.make_EventType() node = factory.make_Node(interface=True) eth0 = node.get_boot_interface() # Create a bridge with the same MAC as the boot interface. factory.make_Interface( INTERFACE_TYPE.BRIDGE, node=node, mac_address=eth0.mac_address, parents=[node.get_boot_interface()], ) description = factory.make_name("description") timestamp = datetime.datetime.utcnow() ip = factory.make_StaticIPAddress() for interface in node.interface_set.all(): ip.interface_set.add(interface) events.send_event_ip_address(ip.ip, event_type.name, description, timestamp) # Doesn't raise a DoesNotExist error. Event.objects.get( node=node, type=event_type, description=description, created=timestamp, )
def test__silent_when_no_node(self): event_type = factory.make_EventType() description = factory.make_name('description') # Exception should not be raised. events.send_event_ip_address(factory.make_ip_address(), event_type.name, description, datetime.datetime.utcnow())
def test_register_event_and_event_type_registers_event(self): # EvenType exists node = factory.make_Node() event_type = factory.make_EventType() Event.objects.register_event_and_event_type(system_id=node.system_id, type_name=event_type.name) self.assertIsNotNone(Event.objects.get(node=node))
def test_silent_when_no_node(self): event_type = factory.make_EventType() description = factory.make_name("description") # Exception should not be raised. events.send_event( factory.make_name("system_id"), event_type.name, description, datetime.datetime.utcnow(), )
def test_register_event_and_event_type_registers_event_with_datetime(self): # EvenType exists node = factory.make_Node() event_type = factory.make_EventType() created = factory.make_date() event = Event.objects.register_event_and_event_type( system_id=node.system_id, type_name=event_type.name, created=created) self.assertEqual(created, event.created)
def test_level_str_returns_level_description(self): events_and_levels = [( level, factory.make_Event(type=factory.make_EventType(level=level)), ) for level in LOGGING_LEVELS] self.assertEqual( [event.type.level_str for level, event in events_and_levels], [LOGGING_LEVELS[level] for level, event in events_and_levels], )
def test_GET_query_with_log_level_AUDIT_returns_only_that_level(self): user = factory.make_User() node = factory.make_Node(owner=user) audit_description = "Testing audit events for '%(username)s'." generic_description = factory.make_name('desc') event1 = factory.make_Event(type=factory.make_EventType(level=AUDIT), user=user, description=audit_description) factory.make_Event(type=factory.make_EventType(level=logging.DEBUG), node=node, user=user, description=generic_description) response = self.client.get(reverse('events_handler'), { 'op': 'query', 'level': 'AUDIT', }) self.assertEqual(http.client.OK, response.status_code) parsed_result = json_load_bytes(response.content) self.assertEqual([event1.id], extract_event_ids(parsed_result))
def test__creates_event_for_node(self): event_type = factory.make_EventType() node = factory.make_Node() description = factory.make_name('description') timestamp = datetime.datetime.utcnow() events.send_event(node.system_id, event_type.name, description, timestamp) # Doesn't raise a DoesNotExist error. Event.objects.get(node=node, type=event_type, description=description, created=timestamp)
def test__creates_event_for_node(self): event_type = factory.make_EventType() node = factory.make_Node(interface=True) description = factory.make_name('description') timestamp = datetime.datetime.utcnow() mac_address = node.interface_set.first().mac_address events.send_event_mac_address(mac_address, event_type.name, description, timestamp) # Doesn't raise a DoesNotExist error. Event.objects.get(node=node, type=event_type, description=description, created=timestamp)
def test_creates_event_for_node(self): event_type = factory.make_EventType() node = factory.make_Node(interface=True) description = factory.make_name("description") timestamp = datetime.datetime.utcnow() ip = factory.make_StaticIPAddress(interface=node.interface_set.first()) events.send_event_ip_address(ip.ip, event_type.name, description, timestamp) # Doesn't raise a DoesNotExist error. Event.objects.get( node=node, type=event_type, description=description, created=timestamp, )
def test_GET_query_with_log_level_returns_that_level_and_greater(self): events = [ make_events(type=factory.make_EventType(level=level)) for level_name, level in self.log_levels ] for idx, (level_name, level) in enumerate(self.log_levels): response = self.client.get(reverse('events_handler'), { 'op': 'query', 'level': level_name, }) self.assertEqual(http.client.OK, response.status_code) parsed_result = json_load_bytes(response.content) # Events of the same or higher level are returned. self.assertItemsEqual( (event.id for event in chain.from_iterable(events[:idx + 1])), extract_event_ids(parsed_result))
def test_GET_query_with_default_log_level_is_info(self): for level_name, level in self.log_levels: make_events(type=factory.make_EventType(level=level)) info_response = self.client.get(reverse("events_handler"), { "op": "query", "level": "INFO" }) self.assertEqual(http.client.OK, info_response.status_code) info_result = json_load_bytes(info_response.content) default_response = self.client.get(reverse("events_handler"), {"op": "query"}) self.assertEqual(http.client.OK, default_response.status_code) default_result = json_load_bytes(default_response.content) self.assertSequenceEqual(default_result["events"], info_result["events"])
def test_GET_query_with_default_log_level_is_info(self): for level_name, level in self.log_levels: make_events(type=factory.make_EventType(level=level)) info_response = self.client.get(reverse('events_handler'), { 'op': 'query', 'level': 'INFO', }) self.assertEqual(http.client.OK, info_response.status_code) info_result = json_load_bytes(info_response.content) default_response = self.client.get(reverse('events_handler'), { 'op': 'query', }) self.assertEqual(http.client.OK, default_response.status_code) default_result = json_load_bytes(default_response.content) self.assertSequenceEqual(default_result['events'], info_result['events'])
def create_event_type(self, params=None): if params is None: params = {} return factory.make_EventType(**params)
def test_displays_event_type_description(self): event_type = factory.make_EventType() self.assertIn(event_type.description, "%s" % event_type)