コード例 #1
0
 def test_get_params(self):
     """
     This test will pass if get returns the correct parameters.
     """
     target = Database.create_target('PARAMS TEST')
     action = Database.create_action(target.name)
     data = APIClient.get_target(self.client, 'PARAMS TEST', False, False,
                                 True)
     self.assertEqual(data['error'], False)
     self.assertIsInstance(data['target'], dict)
     self.assertEqual(data['target']['name'], 'PARAMS TEST')
     self.assertIsInstance(data['target']['uuid'], str)
     self.assertEqual(data['target']['uuid'], target.uuid)
     self.assertIsNotNone(data['target']['actions'])
     self.assertEqual(data['target']['actions'][0]['action_id'],
                      action.action_id)
     with self.assertRaises(KeyError):
         data['target']['sessions']  #pylint: disable=pointless-statement
     with self.assertRaises(KeyError):
         data['target']['facts']  #pylint: disable=pointless-statement
コード例 #2
0
    def test_list(self):
        """
        This test will create a few action objects through the API, and then test listing them.
        """
        target = Database.create_target()
        test_actions = [
            Database.create_action(target.name, 'exec ls -al'),
            Database.create_action(target.name, 'config -i 20'),
            Database.create_action(target.name,
                                   'exec --time 1345.12345 rm -rf tmp/'),
            Database.create_action(target.name, 'exec --spawn /bin/beloved'),
            Database.create_action(target.name,
                                   'upload /some/file /another/file'),
            Database.create_action(target.name, 'download /lol/what /ha/nope'),
            Database.create_action(target.name, 'gather -s min')
        ]
        data = APIClient.list_actions(self.client)
        self.assertEqual(data['error'], False)

        for action in test_actions:
            self.assertIn(action['action_id'], data['actions'].keys())
コード例 #3
0
    def test_create_dup_macs_fail(self):
        """
        This test will attempt to create targets with the same mac_addrs,
        and it will fail as mongo should throw a not unique exception.
        """

        # Single element, same order
        with self.assertRaises(NotUniqueError):
            target1 = Database.create_target(None, ['AA:BB:CC:DD:EE:FF'])
            target2 = Database.create_target(None, ['AA:BB:CC:DD:EE:FF'])
            self.assertEqual(target1.mac_addrs, target2.mac_addrs)

        # Multi element, same order
        with self.assertRaises(NotUniqueError):
            target1 = Database.create_target(
                None, ['AA:BB:CC:DD:EE:FF', 'AA:BB:CC:DD:EE:AA'])
            target2 = Database.create_target(
                None, ['AA:BB:CC:DD:EE:FF', 'AA:BB:CC:DD:EE:AA'])
            self.assertEqual(target1.mac_addrs, target2.mac_addrs)

        # Multi element, different order
        with self.assertRaises(NotUniqueError):
            target1 = Database.create_target(
                None, ['AA:BB:CC:DD:EE:FF', 'AA:BB:CC:DD:EE:AA'])
            target2 = Database.create_target(
                None, ['AA:BB:CC:DD:EE:AA', 'AA:BB:CC:DD:EE:FF'])
            self.assertEqual(target1.mac_addrs, target2.mac_addrs)

        # Multi element, different order, different encoding
        with self.assertRaises(NotUniqueError):
            target1 = Database.create_target(
                None,
                ['AA:BB:CC:DD:EE:FF'.encode('utf-8'), 'AA:BB:CC:DD:EE:AA'])
            target2 = Database.create_target(
                None,
                ['AA:BB:CC:DD:EE:AA', 'AA:BB:CC:DD:EE:FF'.encode('ascii')])
            self.assertEqual(target1.mac_addrs, target2.mac_addrs)