def test_find_no_name_fail(self): """ This target tests to ensure mongoengine throws an error if the target is not found by name. """ with self.assertRaises(DoesNotExist): Database.get_target('HI. I DONT EXIST.')
def test_target_rename_association(self): """ Tests the RenameTarget API function, check to make sure Sessions, Targets, and Groups. """ target = Database.create_target() target_name = target.name session_id = Database.create_session(target_name).session_id orig_group = Database.create_group('some_group') orig_group.whitelist_member(target.name) action_id = Database.create_action(target_name).action_id data = APIClient.rename_target(self.client, target_name, 'TEST') self.assertEqual(data['error'], False) target = Database.get_target('TEST') self.assertIsNotNone(target) with self.assertRaises(DoesNotExist): Database.get_target(target_name) self.assertEqual(target.name, 'TEST') session = Database.get_session(session_id) self.assertEqual(session.target_name, 'TEST') action = Database.get_action(action_id) self.assertEqual(action.target_name, 'TEST') group = Database.get_group(orig_group.name) self.assertIn(target.name, group.member_names)
def test_target_set_facts(self): """ This test will pass if the facts are correctly set. """ initial_facts = { 'some fact': 54, 'some other fact': 'Pi', 'A list fact': ['sdasd', 'asdasd'] } fact_update = { 'new fact': 'Wow. I am new!', 'A list fact': ['asdasd', 'sdasd'], 'some fact': 55 } final_facts = { 'new fact': 'Wow. I am new!', 'some other fact': 'Pi', 'A list fact': ['asdasd', 'sdasd'], 'some fact': 55 } target = Database.create_target('FACT TEST', ['AA:BB:CC:DD:EE:FF'], initial_facts) data = APIClient.set_target_facts(self.client, 'FACT TEST', fact_update) self.assertEqual(data['error'], False) target = Database.get_target('FACT TEST') self.assertIsNotNone(target) self.assertDictEqual(final_facts, target.facts)
def test_target_status_pass(self): """ This tests to ensure a target's status is being set properly based on it's session statuses. """ session1 = Database.create_session(None, 0) target = Database.get_target(session1.target_name) self.assertEqual(target.status, SESSION_STATUSES.get('inactive')) missing_timer = 2401 + SESSION_CHECK_THRESHOLD session2 = Database.create_session(target.name, time.time() - missing_timer, 1800, 600) self.assertEqual(target.status, SESSION_STATUSES.get('missing')) session3 = Database.create_session(target.name) self.assertEqual(target.status, SESSION_STATUSES.get('active')) session3.timestamp = 0 session3.save() self.assertEqual(target.status, SESSION_STATUSES.get('missing')) session2.timestamp = 0 session2.save() self.assertEqual(target.status, SESSION_STATUSES.get('inactive'))
def test_find_pass(self): """ This test will attempt to create a target model object, save it to the database, and then find it. """ target1 = Database.create_target(self.TEST_NAME) target2 = Database.get_target(self.TEST_NAME) self.assertEqual(target1, target2)
def test_target_rename(self): """ Tests the RenameTarget API function. """ target = Database.create_target('NOTTHIS') data = APIClient.rename_target(self.client, target.name, 'TEST') self.assertEqual(data['error'], False) target = Database.get_target('TEST') self.assertIsNotNone(target) self.assertEqual(target.name, 'TEST') with self.assertRaises(DoesNotExist): Database.get_target('NOTTHIS') target2 = Database.create_target() data = APIClient.rename_target(self.client, target2.name, 'TEST') self.assertEqual(data['error'], True) self.assertEqual(data['error_type'], 'cannot-rename-target') self.assertIsNotNone(Database.get_target(target2.name))
def test_create(self): """ This test will pass if the target is created. """ with self.assertRaises(DoesNotExist): Database.get_target('TEST Target') data = APIClient.create_target(self.client, 'TEST Target', ['AA:BB:CC:DD:EE:FF'], {'test_fact': 'hello'}) self.assertEqual(False, data['error']) target = Database.get_target('TEST Target') self.assertIsNotNone(target) self.assertEqual(target.name, 'TEST Target') self.assertListEqual(['AA:BB:CC:DD:EE:FF'], target.mac_addrs) self.assertDictEqual({'test_fact': 'hello'}, target.facts)
def test_migrate_target(self): """ Tests the MigrateTarget API function. """ old_target = Database.create_target() old_sessions = [ Database.create_session(old_target.name), Database.create_session(old_target.name), Database.create_session(old_target.name), Database.create_session(old_target.name), Database.create_session(old_target.name), ] new_target = Database.create_target(None, None, {'updated': True}) new_sessions = [ Database.create_session(new_target.name), Database.create_session(new_target.name), Database.create_session(new_target.name), Database.create_session(new_target.name), Database.create_session(new_target.name), ] data = APIClient.migrate_target(self.client, old_target.name, new_target.name) self.assertEqual(data['error'], False) # Ensure new_target has old name, and still has facts target = Database.get_target(old_target.name) self.assertIsNotNone(target) self.assertEqual(target.facts['updated'], True) # Ensure new target name is gone with self.assertRaises(DoesNotExist): Database.get_target(new_target.name) # Ensure all sessions exist on new_target self.assertListEqual( sorted([ session.session_id for session in old_sessions + new_sessions ]), sorted([session.session_id for session in target.sessions]))
def test_find_pass(self): """ This test creates a session and attempts to find it, it's target, and it's history document. """ session1 = Database.create_session() session2 = Database.get_session(session1.session_id) self.assertEqual(session1, session2) self.assertIsNotNone(Database.get_target(session2.target_name)) self.assertIsNotNone(session1.history) self.assertIsNotNone(session2.history)