def test_api_20_workflows(self): data_payload = { "name": "Graph.noop-example", "options": { "defaults": { "graphOptions": { "target": None } } } } graph_uui = None api_data = test_common.taskgraphapi("/api/2.0/workflows", action="post", payload=data_payload) graph_uui = api_data['json']['context']['graphId'] self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/workflows") self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status'])) for item in api_data['json']: # check required fields for subitem in ["id", "name","injectableName", "instanceId", "tasks", "context"]: self.assertIn(subitem, item, subitem + ' field error') api_data = test_common.taskgraphapi("/api/2.0/workflows/" + graph_uui, action="delete") self.assertEqual(api_data['status'], 403, 'Incorrect HTTP return code, expected 403, got:' + str(api_data['status']))
def test_api_20_tasks_bootstraps(self): node = { "identifiers": ["ff:ff:ff:ff:ff:ff"], "name": "NodeName", "relations": [], "tags": [], "type": "compute" } lookup = { "node": None, "macAddress": "ff:ff:ff:ff:ff:ff", "ipAddress": "127.0.0.1" } client = MongoClient('127.0.0.1', 27017) db = client.pxe insertedNode = db.nodes.insert(node) lookup["node"] = ObjectId(insertedNode) insertedLookup = db.lookups.insert(lookup) computeNode = db.nodes.find_one({"_id": insertedNode}) mac = computeNode["identifiers"][0] #Expecting a valid content api_data = test_common.taskgraphapi("/api/2.0/tasks/bootstrap.js"+"?macAddress=" + mac) self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status'])) self.assertNotEqual(api_data['text'], "Not Found", "Was expecting a valid content") # Expecting an invalid content api_data = test_common.taskgraphapi("/api/2.0/tasks/invalidContent"+"?macAddress=" + mac) self.assertEqual(api_data['status'], 404, "Was expecting code 404. Got " + str(api_data['status'])) db.nodes.remove({"_id": insertedNode}) db.lookups.remove({"_id": insertedLookup})
def test_api_20_workflows_put_ipmi(self): data_payload = \ { "friendlyName": "TestIPMI", "injectableName": 'Graph.Obm.Ipmi.CreateSettings.Test', "options": { "obm-ipmi-task":{ "user": "******", "password": "******" } }, "tasks": [ { "label": "obm-ipmi-task", "taskName": "Task.Obm.Ipmi.CreateSettings" } ] } api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs", action="put", payload=data_payload) self.assertEqual( api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi( "/api/2.0/workflows/graphs/" + 'Graph.Obm.Ipmi.CreateSettings.Test') self.assertEqual( api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
def test_api_20_workflows_put_get_delete_tasks_WithInjectableName(self): api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks/Task.Linux.Commands.Hwtest", action="get") self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks/Task.Linux.Commands.Hwtest", action="delete") self.assertEqual(api_data['status'], 204, 'Incorrect HTTP return code, expected 204, got:' + str(api_data['status']))
def test_api_20_workflows_action(self): data_payload = { "name": "Graph.noop-example", "options": { "defaults": { "graphOptions": { "target": None }, "delay":10000 } } } cancel_payload = { "command":"cancel" } graph_uui = None api_data = test_common.taskgraphapi("/api/2.0/workflows", action="post", payload=data_payload) graph_uui = api_data['json']['context']['graphId'] api_data = test_common.taskgraphapi("/api/2.0/workflows/"+graph_uui+"/action", action="put", payload=cancel_payload) self.assertEqual(api_data['status'], 202, 'Incorrect HTTP return code, expected 202, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/workflows/" + graph_uui , action="get") self.assertEqual(api_data['json']['_status'], "cancelled", 'Incorrect HTTP return code, expected cancelled, got:' + str(api_data['json']['_status']))
def test_api_20_templates_library_ID_put_get_delete(self): # this test creates a dummy template called 'testid', checks it, then deletes it api_data = test_common.taskgraphapi("/api/2.0/templates/library/testid?scope=global", action="text-put", payload="null") self.assertEqual(api_data['status'], 201, "Was expecting code 201. Got " + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/templates/library/testid") self.assertEqual(api_data['text'], "null", "Data 'null' was not returned.") self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/templates/library/testid", action="delete") self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status']))
def test_api_20_templates_metadata_ID(self): api_data = test_common.taskgraphapi("/api/2.0/templates/metadata") self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status'])) for item in api_data['json']: lib_data = test_common.taskgraphapi("/api/2.0/templates/metadata/" + item['name']) self.assertEqual(lib_data['status'], 200, "Was expecting code 200. Got " + str(lib_data['status'])) # check required fields for subitem in ['hash', 'id', 'name', 'scope']: self.assertGreater(len(item[subitem]), 0, subitem + ' field error')
def test_api_20_post_get_notification_progress(self): global task_uui data_payload = { } api_data = test_common.taskgraphapi( '/api/2.0/notification/progress?taskId=' + task_uui + '&maximum=100&value=10&description="Wsman requester"', action="post", payload=data_payload) self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi( '/api/2.0/notification/progress?taskId=' + task_uui + '&maximum=100&value=10&description="Wsman requester"') self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
def test_api_20_profiles_metadata_ID(self): api_data = test_common.taskgraphapi("/api/2.0/profiles/metadata") self.assertEqual( api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status'])) for item in api_data['json']: lib_data = test_common.taskgraphapi("/api/2.0/profiles/metadata/" + item['name']) self.assertEqual( lib_data['status'], 200, "Was expecting code 200. Got " + str(lib_data['status'])) # check required fields for subitem in ['hash', 'id', 'name', 'scope']: self.assertGreater(len(item[subitem]), 0, subitem + ' field error')
def test_api_20_profiles_library_ID_put_get_delete(self): payload = "ddd" # this test creates a dummy template called 'testid', checks it, then deletes it api_data = test_common.taskgraphapi( "/api/2.0/profiles/library/testid?scope=global", action="text-put", payload="null") self.assertEqual( api_data['status'], 200, "Was expecting code 201. Got " + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/profiles/library/testid") self.assertEqual(api_data['text'], "null", "Data 'null' was not returned.") self.assertEqual( api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status']))
def test_api_20_workflows(self): api_data = test_common.taskgraphapi("/api/2.0/workflows") self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status'])) for item in api_data['json']: # check required fields for subitem in ["id", "name","injectableName", "instanceId", "tasks"]: self.assertIn(subitem, item, subitem + ' field error')
def test_api_20_notification(self): global task_uui data_payload = { } api_workflow_data = test_common.taskgraphapi('/api/2.0/workflows') workflows=api_workflow_data['json'] for workflow in workflows: if workflow["injectableName"]==self.workflow_name: tasks = workflow["tasks"] for task in tasks: if tasks[task]["friendlyName"]==self.task_name : task_uui = tasks[task]["instanceId"] api_data = test_common.taskgraphapi('/api/2.0/notification?taskId='+task_uui+'&maximum=100&value=10&description="Wsman requester"', action="post", payload=data_payload) self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
def test_api_20_workflows_graphs_get(self): api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs") self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status'])) for item in api_data['json']: # check required fields for subitem in ["friendlyName", "injectableName", "tasks"]: self.assertIn(subitem, item, subitem + ' field error')
def test_api_20_tasks_bootstraps(self): node = { "identifiers": ["ff:ff:ff:ff:ff:ff"], "name": "NodeName", "relations": [], "tags": [], "type": "compute" } lookup = { "node": None, "macAddress": "ff:ff:ff:ff:ff:ff", "ipAddress": "127.0.0.1" } client = MongoClient('127.0.0.1', 27017) db = client.pxe insertedNode = db.nodes.insert(node) lookup["node"] = ObjectId(insertedNode) insertedLookup = db.lookups.insert(lookup) computeNode = db.nodes.find_one({"_id": insertedNode}) mac = computeNode["identifiers"][0] #Expecting a valid content api_data = test_common.taskgraphapi("/api/2.0/tasks/bootstrap.js" + "?macAddress=" + mac) self.assertEqual( api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status'])) self.assertNotEqual(api_data['text'], "Not Found", "Was expecting a valid content") # Expecting an invalid content api_data = test_common.taskgraphapi("/api/2.0/tasks/invalidContent" + "?macAddress=" + mac) self.assertEqual( api_data['status'], 404, "Was expecting code 404. Got " + str(api_data['status'])) db.nodes.remove({"_id": insertedNode}) db.lookups.remove({"_id": insertedLookup})
def test_api_20_workflows_put_get_delete_tasks(self): data_payload = { "friendlyName": "Shell commands hwtest", "injectableName": "Task.Linux.Commands.Hwtest", "implementsTask": "Task.Base.Linux.Commands", "options": { "commands": [ {"command": "sudo /opt/test/hwtest", "format": "json", "source": "hwtest"} ] }, "properties": {"type": "hwtestRun"} } api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="put", payload=data_payload) self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="get", payload=data_payload) self.assertEqual(api_data['status'], 200,'Incorrect HTTP return code, expected 200, got:' + str(api_data['status'])) for item in api_data['json']: # check required fields for subitem in ["friendlyName", "injectableName", "implementsTask", "options", "properties"]: self.assertIn(subitem, item, subitem + ' field error')
def test_api_20_workflows_put_ipmi(self): data_payload = \ { "friendlyName": "TestIPMI", "injectableName": 'Graph.Obm.Ipmi.CreateSettings.Test', "options": { "obm-ipmi-task":{ "user": "******", "password": "******" } }, "tasks": [ { "label": "obm-ipmi-task", "taskName": "Task.Obm.Ipmi.CreateSettings" } ] } api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs", action="put", payload=data_payload) self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs/" + 'Graph.Obm.Ipmi.CreateSettings.Test') self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
def test_api_20_workflows_tasks(self): data_payload = { "friendlyName": "Shell commands hwtest", "injectableName": "Task.Linux.Commands.Hwtest", "implementsTask": "Task.Base.Linux.Commands", "options": { "commands": [ {"command": "sudo /opt/test/hwtest", "format": "json", "source": "hwtest"} ] }, "properties": {"type": "hwtestRun"} } api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="put", payload=data_payload) self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
def test_api_20_workflows_tasks(self): data_payload = { "friendlyName": "Shell commands hwtest", "injectableName": "Task.Linux.Commands.Hwtest", "implementsTask": "Task.Base.Linux.Commands", "options": { "commands": [{ "command": "sudo /opt/test/hwtest", "format": "json", "source": "hwtest" }] }, "properties": { "type": "hwtestRun" } } api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="put", payload=data_payload) self.assertEqual( api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
def test_api_20_tasks_identifier(self): api_data = test_common.taskgraphapi("/api/2.0/tasks/InvalidTaskID") self.assertEqual(api_data['status'], 404, "Was expecting code 404. Got " + str(api_data['status']))
def setUp(self): # this clears out any existing instance of 'testid' template test_common.taskgraphapi("/api/2.0/profiles/library/testid", action="delete")
def test_api_20_tasks_identifier(self): api_data = test_common.taskgraphapi("/api/2.0/tasks/InvalidTaskID") self.assertEqual( api_data['status'], 404, "Was expecting code 404. Got " + str(api_data['status']))
def setUp(self): # this clears out any existing instance of 'testid' template test_common.taskgraphapi("/api/2.0/templates/library/testid", action="delete")