@apica-io/url-xi
Version:
URL Check for integrations and API monitoring
323 lines (310 loc) • 11.2 kB
JSON
{
"$schema": "https://files-apicasystem-com.s3-eu-west-1.amazonaws.com/schemas/url-xi-schema-v1-0.json",
"name": "Ticket Monster Order Tickets",
"description": "Order tickets in Ticket Monster. Setup AppDynamics integration headers",
"message": "Ticket booking {{bookingId}} done.",
"variables": [
{
"key": "email",
"type": "string",
"usage": "inResponse",
"value": "{{$faker.internet.email}}",
"description": "A random generated email"
},
{
"key": "bookingId",
"type": "number",
"usage": "inResponse"
},
{
"key": "ticketPrice",
"type": "number",
"usage": "inResponse"
},
{
"key": "ticketCategory",
"type": "string",
"usage": "inResponse"
},
{
"key": "ticketSection",
"type": "string",
"usage": "inResponse"
},
{
"key": "eventName",
"type": "string",
"usage": "inResponse"
},
{
"key": "venueName",
"type": "string",
"usage": "inResponse"
}
],
"includes": [
{
"name": "testdata",
"scope": "project",
"type": "data",
"src": "my_test_data.json"
},
{
"name": "defaultVariables",
"scope": "project",
"type": "vars",
"src": "default_test_vars.json"
}
],
"baseURL": "http://ticketmonster.apicasystem.com",
"config": {
"headers": {
"ApicaScenario": "{{$testName}}",
"ApicaCheckId": "92e02d76-63cf-4a54-a4d6-29b9488fdc1a ",
"AppDynamicsSnapshotEnabled": "true"
}
},
"steps": [
{
"name": "Home page",
"requests": [
{
"name":"Start page html",
"config": {
"method": "get",
"url": "/ticket-monster",
"headers": {
"ApicaStep": "{{$stepName}}"
}
},
"extractors": [
{
"type": "regexp",
"expression": "<script type=\"text\/javascript\".*src=\"(.*.js)\".*",
"variable": "javaScripts",
"array": true
},
{
"type": "regexp",
"expression": "<title>(.+)<\/title>",
"variable": "title"
}
],
"assertions": [
{
"description": "Home page must contain javascript references",
"failStep": true,
"reportFailOnly": false,
"value": "{{javaScripts}}",
"expression": "value.length > 1",
"type": "javaScript"
},
{
"description": "Page title must be Ticket Monster",
"type": "value",
"value": "{{title}}",
"expression": "Ticket Monster",
"failStep": true
}
]
}
]
},
{
"name": "Get JavaScripts",
"ignoreDuration": true,
"iterator": {
"varName": "javaScript",
"value": "{{javaScripts}}"
},
"requests": [
{
"name": "Javascript {{$lapIdx1}}",
"config": {
"method": "get",
"url": "/ticket-monster/{{javaScript}}"
},
"extractors": [],
"notSaveData": true
}
]
},
{
"name": "Get Events",
"requests": [
{
"name": "Get all events",
"config": {
"method": "get",
"url": "/ticket-monster/rest/events",
"headers": {
"ApicaStep": "{{$stepName}}"
},
"params": {
"_": "{{$timestamp}}"
}
},
"scripts": [
{
"scope": "after",
"name":"Get random event id",
"script": "getRandomEvent.js"
}
],
"assertions": [
{
"description": "A numeric event id must be extracted",
"failStep": true,
"reportFailOnly": false,
"type": "javaScript",
"value": "{{eventId}}",
"expression": "!isNaN(value) && Number(value) >0"
}
]
},
{
"name": "Get event details",
"config": {
"method": "get",
"url": "/ticket-monster/rest/events/{{eventId}}",
"headers": {
"ApicaStep": "{{$stepName}}"
},
"params": {
"_": "{{$timestamp}}"
}
}
}
]
},
{
"name": "Get Tickets",
"requests": [
{
"name": "Get shows",
"config": {
"method": "get",
"url": "/ticket-monster/rest/shows",
"params": {
"_": "{{$timestamp}}",
"event": "{{eventId}}"
},
"headers": {
"ApicaStep": "{{$stepName}}"
}
},
"extractors": [
{
"type": "jsonpath",
"expression": "$[*].id",
"variable": "showId"
}
]
},
{
"name": "Select Tickets",
"config": {
"method": "get",
"url": "/ticket-monster/rest/shows/{{showId}}",
"params": {
"_": "{{$timestamp}}"
},
"headers": {
"ApicaStep": "{{$stepName}}"
}
},
"extractors": [
{
"type": "jsonpath",
"expression": "$.performances[*].id",
"variable": "performanceId"
},
{
"type": "jsonpath",
"expression": "$.event.name",
"variable": "eventName"
},
{
"type": "jsonpath",
"expression": "$.venue.name",
"variable": "venueName"
},
{
"type": "jsonpath",
"expression": "$.ticketPrices[*]",
"variable": "ticketPrices",
"index": true
},
{
"type": "jsonpath",
"expression": "$.ticketPrices[{{ticketPrices}}].id",
"variable": "ticketPriceId"
},
{
"type": "jsonpath",
"expression": "$.ticketPrices[{{ticketPrices}}].section.name",
"variable": "ticketSection"
},
{
"type": "jsonpath",
"expression": "$.ticketPrices[{{ticketPrices}}].ticketCategory.description",
"variable": "ticketCategory"
},
{
"type": "jsonpath",
"expression": "$.ticketPrices[{{ticketPrices}}].price",
"variable": "ticketPrice"
}
]
}
]
},
{
"name": "Checkout",
"requests": [
{
"name":"Create booking",
"config": {
"method": "post",
"url": "/ticket-monster/rest/bookings",
"data": {
"ticketRequests": [
{
"ticketPrice": "{{ticketPriceId}}",
"quantity": 1
}
],
"email": "{{email}}",
"performance": "{{performanceId}}"
},
"headers": {
"ApicaStep": "{{$stepName}}"
}
},
"extractors": [
{
"type": "jsonpath",
"expression": "$.id",
"variable": "bookingId"
}
]
}
]
},
{
"name": "Undo the ticket booking",
"requests": [
{
"name":"Delete booking",
"config": {
"method": "delete",
"url": "/ticket-monster/rest/bookings/{{bookingId}}",
"headers": {
"ApicaStep": "{{$stepName}}"
}
}
}
]
}
]
}