Ejemplo n.º 1
0
 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.')
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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'))
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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))
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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]))
Ejemplo n.º 9
0
    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)