2025-11-20 IntegrationTest

From Izara Wiki
Revision as of 04:31, 25 November 2025 by Mint (talk | contribs) (→‎seed Data)
Jump to navigation Jump to search

File extension

uploadS3: ".json" integrationtestConfig: ".js"

Table test

[
  {
    integrationTestTag: "Integrationtest_xx",
    testStartedTimestamp: 111111111, // start time
    bucketName: "integrationtest-config-us-east-2",
    lastUpdateUniqueRequestId: "sssss", //_izContext.uniqueRequestId protacts race coditionn dynamodb
    testStatus: "passed",//failed,processing,passed
    testCompleteTimestamp: 1111113, // all test finish
    stages: [
      {
        stageConfig: {
          //straight copy of this stage from integration test config
          inputEventTag: "xx",
          inputEventConfig: {//event input
          },
          outputEventTag: "output_xx",
          outputEventConfig: {//event out put
          },
          resourceName: "ComplexfilterTestProcessComplexfilter",// function name
          resourceType: "Lambda", // function name
          serviceTag: "Complexfilter",// (initeate sqs)
          snsServiceName: "Complexfilter",// (initeate sqs)
          snsTopic: "PorcessComplexfilter_In"// (initeate sqs)

        },
        stageStatus: "waiting", //waiting|passed|failed,
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated
        stageResults: {
          //results at the point of entering the resource (eg a Lambda function is invoked)
          inputResult: {
            resultTimestamp: 111111111,//{time result saved},
            resultStatus: "passed",//passed|failed,
            requestParams: {//event input
            }
          },
          //results at the point of returning from the resource (eg a Lambda function returns)
          outputResult: {
            resultTimestamp: 111111111,//{time result saved},
            resultStatus: "passed",//passed|failed,
            requestParams: {//event input
            }
          },
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)
          invokes: {
            "serviceName_resourceType_resourceName_inputEventTag ": {
              invokeTimestamp: 111111111,//{ time result saved },
              resultTimestamp: 111111112,//{ time result saved },
              resultStatus: "passed",//passed | failed,
              invokeParams: {},//{event invoke input config }
              requestParams: {}// event invoke input request
            },
          },
          dynamodbResults: [
            {
              indexOfDynamodbOutput: 0,
              requestParams,
              resultStatus: "passed",//
              resultTimestamp: 22222
            }]

        },
        stageErrors: [
          //misc errors encountered
        ]
      }]

  }
]

seed Data

integrationtest manager seed date 2 process

*MainSeedfData

save file in s3 (in buckname :integrationtest-config-us-east-2, folder:seedData_integrationTest)
-for other dev use service,If a developer wants to add more for other important testing purposes
How to use
  1. Add it from the s3 bucket at this point
  2. Run batch refreshSeedData batch RefreshSeedData

Logic:Process by storage resouse (graph or dynamod)

to clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.

*SeedDataTag

Data use for create environment of test and can be refresh seeddata re-test agian. save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin) Folder

  • dynamoDBSeedDataTags.json
  • graphSeedDataTags.json

resources

syntax is object

{ 
	"Lambda":{
		"{FunctionNameHdrSqs}":{ // FunctionNameHdrSqs is match resourceName in file tests
			"localLacation":"/src/FunctionNameHdrSqs.js",
			"localHandler":"main", 
			"functionName":"FunctionNameHdrSqs"	// FunctionName is function name match key of function.yml of servcie.
		},
		"ProcessComplexFilterHdrSqs":{ 
			"localLacation":"/src/ProcessComplexFilterHdrSqs.js", 
			"localHandler":"main", 
			"functionName":"ProcessComplexFilterHdrSqs" 
		},
		... 
	},
	"Dynamodb": {
		"filterMain":{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)
			"tableName":"filterMain" 
		}, 
		"tableNameBB":{ 
			"tableName":"tableNameBB" 
		},
		... 
	}
}

events

Syntax is object

Syntax Name

FileName

Event_{inputEventTag}

eventTag

  1. inputEventTag
  2. outputEventTag
  3. dynamodbTag
  • file events.js is have eventTag (inputEventTag,outputEventTag,dynamodbTag)
    • How to create name eventTag
      • Example case : "test in service complexFilter functionname ProcessComplexFilter case element type is logical basic".
  • inputEventTag
{serviceName}_{functionName}_{caseTest}

Conplexfilter_ProcessComplexFilter_Typelogical_basic

  • outputEventTag
output_{inputEventTag}

output_Conplexfilter_ProcessComplexFilter_Typelogical_basic

  • dynamodbTag
{inputEventTag}__Dynamodb__{action*}_{tableName}

Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain

{action} is only put or update, and in case of update must only test the last step of update

Syntax event

initiate by handlerServcie

Sqs
// An example input and output event of Sns
{
   "LambdaFunctionHdrSqs_input__pass":{
      "forStageMatching":true,
      "properties":{
         "propertyA":{
            "forStageMatching":true,
            "value":"valueProperty1"
         },
         "propertyB":{
            "forStageMatching":true,
            "properties":{
               "propertyB1":{
                  "forStageMatching":true,
                  "value":"valuePropertyB1"
               }
            }
         },
         "propertyC":{
            "eventValue":[
               "valuePropertyC1",
               "valuePropertyC2",
               "valuePropertyC3"
            ]
         }
      },
      "snsSqsTrigger":true,
      "messageAttributes":{
         "forStageMatching":true,
         "properties":{
            "msgTag":{
               "forStageMatching":true,
               "value":"msgTag"
            },
            "propertyD":{
               "forStageMatching":true,
               "value":"valuePropertyD"
            }
         }
      }
   },
   {
      "output_LambdaFunctionHdrSqs_pass":{
         "forStageMatching":true,
         "properties":{
            "propertyA":{
               "forStageMatching":true,
               "value":"valueProperty1"
            }
         }
      }
   }
}
"snsSqsTrigger":true
Dsq
// An example input and output event of Direct Sqs
{
   "LambdaFunctionHdrDsq_input__pass":{
      "forStageMatching":true,
      "properties":{
         "propertyA":{
            "forStageMatching":true,
            "value":"valueProperty1"
         },
         "propertyB":{
            "forStageMatching":true,
            "properties":{
               "propertyB1":{
                  "forStageMatching":true,
                  "value":"valuePropertyB1"
               }
            }
         },
         "propertyC":{
            "eventValue":[
               "valuePropertyC1",
               "valuePropertyC2",
               "valuePropertyC3"
            ]
         }
      },
      "DirectSqs":true,
      "messageAttributes":{
         "forStageMatching":true,
         "properties":{
            "msgTag":{
               "forStageMatching":true,
               "value":"msgTag"
            },
            "propertyD":{
               "forStageMatching":true,
               "value":"valuePropertyD"
            }
         }
      }
   },
   {
      "output_LambdaFunctionHdrDsq_pass":{
         "forStageMatching":true,
         "properties":{
            "propertyA":{
               "forStageMatching":true,
               "value":"valueProperty1"
            }
         }
      }
   }
}
  • DirectSqs = true
for initialStage of Dsq
  • messageAttributes is optional
Inv
{
  "LambdaFunctionHdrInv_input__pass":{
     "forStageMatching":true,
     "properties":{
        "propertyA":{
           "forStageMatching":true,
           "value":"valueProperty1"
        },
        "propertyB":{
           "forStageMatching":true,
           "properties":{
              "propertyB1":{
                 "forStageMatching":true,
                 "value":"valuePropertyB1"
              }
           }
        }
     }
    },
    {
        "output_LambdaFunctionHdrInv_pass":{
           "forStageMatching":true,
           "properties":{
              "propertyA":{
                 "forStageMatching":true,
                 "value":"valueProperty1"
              }
           }
        }
     }
}
Api
// An example input and output event of API
{
	"LambdaFunctionHdrApi_input__pass_notTestAuthorizer": { 
		"forstageMatvhing": true, 
		"properties": { 
			"body": { 
				"properties": { 
					"propertyA": { 
						"testValueMatches": false, 
						"value": "valueProperty1", 
					}, 
					"propertyB": { 
						"properties": { 
							"propertyB1": { 
								"value": "valuePropertyB1", 
							} 
						} 
					}, 
					"propertyC": { 
						"eventValue": [ 
							"valuePropertyC1", 
							"valuePropertyC2", 
							"valuePropertyC3", 
						] 
					},
					... 
				} 
			} 
		}
	}, 
	"Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer": { 
		"properties": { 
			"body": { 
				"properties": { 
					"propertyA": { 
						"testValueMatches": false, 
						"value": "valueProperty1"
					}, 
					...
				} 
			} 
		}  
	}
}
S3

dynamodb

// An example event of Dynamodb //optional 
{
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. "Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain"
	"forStageMatching": true,
     "properties": {
        "filterMainUniqueRequestId": {
          "testValueMatches": true,
          "value": "bbc4f4a9-2032-4dec-9129-8c7d169fecc5"
         },
        "filterObject": {
        "forStageMatching": true,
        "properties": {
          "logicalType": {
            "value": "partitionKey"
          },
          "comparison": {
            "value": "equals"
          },
          "type": {
            "value": "logical"
          },
          "partitionKey": {
            "forStageMatching": true,
            "value": "mockIntegratioTestCPF"
          }
        }
      },
      "filterMainExpiryTime": {
        "testValueMatches": true,
        "value": 1731980802858
      },
      "filterMainStatus": {
       "forStageMatching": true,
        "value": "processing"
      },
      "createTime": {
        "testValueMatches": true,
        "value": 1731894402678
      },
      "objType": {
        "forStageMatching": true,
        "properties": {
          "serviceTag": {
            "forStageMatching": true,
            "value": "IntTesting"
          },
          "objectType": {
            "forStageMatching": true,
            "value": "TestRecord"
          }
        }
      }
    },
    "keyValues": {
      "filterMainId": "4865d2451a621cb7f71225cfabf2df4f98e20801",
      "objTypeId": "cdb170690571df7522b3850920fce02507c077ee"
    }
	} 
}
  • partition key: filterMainId
  • sort key: objTypeId

2021-01-15 - Integration Testing - Adding DynamoDB result tests

Type paramiter

use for evnet and dyanmodb event

Normal

 object: {
  forStageMatching: true,
  properties: {
    name:{
     forStageMatching: true,
     value:"Tom"
    }
   }
 },
 array: {
  forStageMatching: true,
  useIsEqual: true,
  eventValue: [
   {
     "relTypeAndDirection": {
       "relType": {
         "serviceTag": "maxxCart2",
         "relationshipTag": "hasCartOrder"
        },
        "relationshipDirection": "from"
      },
      "targetObjects": [
        {
          "objType": {
           "serviceTag": "maxxCart2",
           "objectType": "cartOrder"
          }
        }
      ]
    }
  ]
 },
 number: {
  forStageMatching: true,
  value: 1111
 },
 string: {
  forStageMatching: true,
  value: "hi"
 },
 boolean: {
  forStageMatching: true,
  value: true
 }
 forStageMatching: true
set true for check match value,It is not necessary to set every value
use in test importent paramiter
testValueMatches:false
setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid

Empty

 EmptyString:{
  value:""
 },
 EmptyArray:{
   forStageMatching: true,
   useIsEqual: true,
   eventValue: []
 },
 EmptyObject:{
  forStageMatching: true,
  value:{}
 }

Error

can test noRetryError

  "errorMessage": {
    forStageMatching: true,
    "value": "Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}"
   }

Paramiter random

Can not test case random numbber or uuid. But requriOnCreate mush be set

testValueMatches:false

or set

forStageMatching:false

tests

Syntax is array of object

Syntax name

Testtag name

  • {integrationTestTag}
  1. Test Own servcie or not a lot stage
Test_{inputEventTag}
  1. Mix multiple servcie and multiple stage
 
IntegrationTest_{inputEventTag}

File name

 
{integrationTestTag}.json

Setting of test

syntax test

Refresh seed data tag

Refresh seed data use seed data tag.
  • seedDataTag is dynamoDBSeedDataTags or graphSeedDataTags must be unique.
  • canbe share seed data for other test by seed data tag.
{
            integrationTestTag: {integrationTestTag},
            productionSafe: true|false, //default false
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found
            errorIfStageUndefined: true|false, //default false
            errorIfInvokeUndefined: true|false, //default false,
            dynamoDBSeedDataTags:["seedDataDB_test_case_xx"], //[seedDataTag] optional if have seed data for test
            graphSeedDataTags:["seedDataGraph_test_case_xx"]//[seedDataTag] optional if have seed data for test
            stages:[]
}

graphSeedDataTags

If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.

Example

{
  "seedData_testTag_GG": [ // seedDataTag
    {
      "nodes": [
        {
          "nodeLabels": [
            "SellOfferPlan_sellOfferPlanDeliveryMethodLink"
          ],
          "objectDetail": {
            "identifiers": {
              "sellOfferPlanDeliveryMethodLinkId": "minttestrefreshSeedData_01"
            },
            "fields": {
              "productId": "ddddd",
              "price": 9999
            }
          }
        },
        {
          "nodeLabels": [
            "servcieMintTest_shoppingMall"
          ],
          "objectDetail": {
            "identifiers": {
              "shoppingMallId": "minttestrefreshSeedData_shoppingMallId"
            },
            "fields": {
              "name": "hotpot-man",
              "totalPrice": 500
            }
          }
        },
        {
          "nodeLabels": [
            "servcieMintTest_shoppingMallCalculateSetting"
          ],
          "objectDetail": {
            "identifiers": {
              "versionedDataId": "minttestrefreshSeedData_versionedDataId"
            },
            "fields": {
              "addToCalculatedValuePerOrder": 10,
              "addToRateTableValuePerOrder": 77
            }
          }
        }
      ],
      "relationships": [
        {
          "fromObject": {
            "nodeLabel": "SellOfferPlan_sellOfferPlanDeliveryMethodLink",
            "identifiers": {
              "sellOfferPlanDeliveryMethodLinkId": "minttestrefreshSeedData_01"
            }
          },
          "toObject": {
            "nodeLabel": "servcieMintTest_shoppingMall",
            "identifiers": {
              "shoppingMallId": "minttestrefreshSeedData_shoppingMallId"
            }
          },
          "relationships": [
            {
              "relTypeConcat": "SellOfferPlan_hasCCCCCCC",
              "relId": "uuid-4s56df74s9df79w-w6de4f5w689ef"
            }
          ]
        },
        {
          "fromObject": {
            "nodeLabel": "servcieMintTest_shoppingMall",
            "identifiers": {
              "shoppingMallId": "minttestrefreshSeedData_shoppingMallId"
            }
          },
          "toObject": {
            "nodeLabel": "servcieMintTest_shoppingMallCalculateSetting",
            "identifiers": {
              "versionedDataId": "minttestrefreshSeedData_versionedDataId"
            }
          },
          "relationships": [
            {
              "relTypeConcat": "servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting",
              "relId": "uuid-s122df5-s21df",
              "relationshipProperty": {
                "timeStamp": 1234567879,
                "statusName": true
              }
            },
            {
              "relTypeConcat": "servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting",
              "relId": "uuid-77777-99999",
              "relationshipProperty": {
                "statusName": true
              }
            }
          ]
        }
      ]
    }
  ],
  "seedData_testTag_ABC": [
    {
      "objType": {
        "objectType": "productAttributeLink",
        "serviceTag": "ProductAttribute"
      },
      "objInstanceFull": {
        "identifiers": {
          "productAttributeLinkId": "f90b57ca8b2fe1a83459d57da038cf50fb6d40e6"
        },
        "fields": {}
      },
      "relationships": [
        {
          "relType": {
            "serviceTag": "ProductAttribute",
            "relationshipTag": "hasProductAttributeLink"
          },
          "relationshipDirection": "to",
          "targetObjType": {
            "serviceTag": "ProductStandard",
            "objectType": "productStandard"
          },
          "targetIdentifiers": {
            "productId": "f526a367a2b66cb0f37ca61b6c43f419929f521d"
          },
          "relationshipProperties": {}
        },
        {
          "relType": {
            "serviceTag": "ProductAttribute",
            "relationshipTag": "isProductAttribute"
          },
          "relationshipDirection": "from",
          "targetObjType": {
            "serviceTag": "ProductAttribute",
            "objectType": "productAttribute"
          },
          "targetIdentifiers": {
            "productAttributeId": "f4bf7a078071d54036656df544197ba638bc3a68"
          },
          "relationshipProperties": {}
        }
      ]
    },
    {
      "objType": {
        "objectType": "productAttributeLink",
        "serviceTag": "ProductAttribute"
      },
      "objInstanceFull": {
        "identifiers": {
          "productAttributeLinkId": "f90b57ca8b2fe1a83459d57da038cf50fb6d40e6"
        },
        "fields": {}
      },
      "relationships": []
    }
  ],
  "seedData_testTag_LL": []
}

dynamoDBSeedDataTags

If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.

Example

{
  "seedDynamodb_abc_ver2": [ // seedDataTag
    {
      "tableName": "DelivMethodSTDTestLogicalResultsData",  // servcieTag+stage+tablename
      "partitionKey": "logicalResultId",
      "sortKey": "identifiersId",
      "datas": [
        {
          "logicalResultId": "eeeeeeeeee4",
          "identifiersId": "lllll123456"
        },
        {
          "logicalResultId": "eeeeeeeeee4",
          "identifiersId": "lllll777777"
        }
      ]
    },
    {
      "tableName": "MLocationsTestFloatingRelationships",// servcieTag+stage+tablename
      "partitionKey": "importBatchId",
      "sortKey": "identifierRelationshipsId",
      "datas": [
        {
          "importBatchId": "2-uuuuuuuuuuuuuu",
          "identifierRelationshipsId": "lllll123456"
        },
        {
          "importBatchId": "2-uuuuuuuuuuuuuu",
          "identifierRelationshipsId": "lllll777777"
        },
        {
          "importBatchId": "2-uuuuuuuuuuuuuu",
          "identifierRelationshipsId": "lllll99999999"
        }
      ]
    },
    {
      "tableName": "MLocationsTestFindDataMain",
      "partitionKey": "findDataId",
      "datas": [
        {
          "findDataId": "111111"
        },
        {
          "findDataId": "22222"
        },
        {
          "findDataId": "333333"
        }
      ]
    }
  ]
}

Stages

Initiate stage

"initialStage":true

detail property of test

HandlerService
Sqs
"stages":[
         {
            "initialStage":true,
            "inputEventTag":"Locations_ProcessLocationNodeSomting_casenotHaveData",
            "serviceName":"Locations",
            "resourceType":"Lambda",
            "resourceName":"ProcessLocationNodeSomtingHdrDsq",
            "outputEventTag":"Output_Locations_ProcessLocationNodeSomting_casenotHaveData"
         }
      ]
Dsq
stages: [
        {
          initialStage: true,
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',
          serviceName: 'ServiceTemplate',
          resourceType: 'Lambda',
          resourceName: 'LambdaFunctionHdrDsq',
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',
          // **** not set snsServiceName and snsTopic
          // can be test dynamodbOutput
        }
      ]
Api
"stages":[
    {
       "initialStage":true,
       "inputEventTag":"LambdaFunctionHdrApi_input__pass",
       "serviceName":"ServiceTemplate",
       "resourceType":"Lambda",
       "resourceName":"LambdaFunctionHdrApi",
       "outputEventTag":"LambdaFunctionHdrApi_output__pass"
    }
]
Inv
  • single stage
[{
   "integrationTestTag":"LambdaFunctionHdrInv__pass",
   "productionSafe":false,
   "errorIfStageUndefined":false,
   "errorIfInvokeUndefined":false,
   "stages":[
      {
         "initialStage":true,
         "inputEventTag":"LambdaFunctionHdrInv_input__pass",
         "serviceName":"ServiceTemplate",
         "resourceType":"Lambda",
         "resourceName":"LambdaFunctionHdrInv",
         "outputEventTag":"LambdaFunctionHdrInv_output__pass"
      }
   ]
}]
  • invoke multiple stage
  • Each stage test can invoke multiple lambda by use "eventStage Tag" point to stage for test integration test.
[{
   "integrationTestTag":"LambdaFunctionHdrInv_invokes__pass",
   "productionSafe":false,
   "errorIfStageUndefined":false,
   "errorIfInvokeUndefined":false,
   "stages":[
      {
         "initialStage":true,
         "inputEventTag":"LambdaFunctionHdrInv_input__pass",
         "serviceName":"ServiceTemplate",
         "resourceType":"Lambda",
         "resourceName":"LambdaFunctionHdrInv",
         "outputEventTag":"LambdaFunctionHdrInv_output__pass",
         "invokes":[
            {
               "eventStageTag":"service_invokesB__pass"
            },
            {
               "eventStageTag":"service_invokesD__pass"
            }
         ]
      },
      {
         "eventStageTag":"service_invokesB__pass",
         "inputEventTag":"input_service_invokes__pass",
         "serviceName":"ServiceTemplate_B",
         "resourceType":"Lambda",
         "resourceName":"LambdaFunction_B_HdrInv",
         "outputEventTag":"output_service_invokes__pass"
      },
      {
         "eventStageTag":"service_invokesD__pass",
         "inputEventTag":"input_service_invokesD__pass",
         "serviceName":"ServiceTemplate_D",
         "resourceType":"Lambda",
         "resourceName":"LambdaFunction_D_HdrInv",
         "outputEventTag":"output_service_invokesD__pass"
      }
   ]
}]
S3
Batch

GeneratedSeedData

  • Integrationtest must be delete identifier every time before test.
  • Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].
  • How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData "randomOnCreateIdentifier"
  1. randomOnCreateIdentifier
  2. notRandomOnIdentifier
  3. relationships
randomOnCreateIdentifier
"stages": [
      {
        "initialStage": true,
        "inputEventTag": "MLocation_CreateHdrSqs__case_NodeVersionData_Jaya",
        "serviceTag": "MLocations",
        "resourceType": "Lambda",
        "resourceName": "CreateHdrSqs",
        "snsServiceName": "MLocations",
        "snsTopic": "Create_In",
        "generatedSeedData": {
          "randomOnCreateIdentifier": [
            {
              "objType": {
                "serviceTag": "MLocations",
                "objectType": "Member"
              },
              "identifierValue": "Jaya-member-001"
            }
          ]
        }
      }
]
notRandomOnIdentifier
 "stages": [
      {
        "initialStage": true,
        "inputEventTag": "MLocation_CreateHdrSqs__case_NodeVersionData_Jaya",
        "serviceTag": "MLocations",
        "resourceType": "Lambda",
        "resourceName": "CreateHdrSqs",
        "snsServiceName": "MLocations",
        "snsTopic": "Create_In",
        "generatedSeedData": {
          "notRandomOnIdentifier": [
            {
              "objType": {
                "serviceTag": "gggg",
                "objectType": "ssssss"
              },
              "identifiers": {
                "topId": "123456"
              }
            }
          ]
        }
      }
    ]
relationships
 "stages": [
      {
        "initialStage": true,
        "inputEventTag": "MLocation_CreateHdrSqs__case_NodeVersionData_Jaya",
        "serviceTag": "MLocations",
        "resourceType": "Lambda",
        "resourceName": "CreateHdrSqs",
        "snsServiceName": "MLocations",
        "snsTopic": "Create_In",
        "generatedSeedData": {
         "relationships": [
            {
              "relType": {
                "serviceTag": "PaymentMethodGeneric",
                "relationshipTag": "disabledPaymentMethodGenericPropertyValue"
              },
              "relId": "f4f73de7-647c-4b3b-8043-87cc002f361a"
            }
          ]
        }
      }
    ]

Dynamodb

stages: [
        {
          initialStage: true,
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',
          serviceName: 'ServiceTemplate',
          resourceType: 'Lambda',
          resourceName: 'LambdaFunctionHdrDsq',
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',
          dynamodbOutputEventIdentifiers: [
			{
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name
              resourceName: {resourceName}, //DynamoDB resourceName
              eventTag: {eventTagDynamoDB}
		    }
          ],
        }
      ]

How to test integrationtest s3

Developer guide for making Integration Tests