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
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())
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)