11 KiB
Acceptance Criteria
The following acceptance criteria tests were performed on DEV.
1. User generates receivecode
Create a new worldpay merchant account using /payment-instruments/worldpay-merchants
Testing data:
{
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
"ID": "5abcecc0de91bd75beb21a0e"
}
Using : /receivecodes
{
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
"ID": "5abcecc0de91bd75beb21a0e"
}}
Response:
{
"receivecode": "SCYDG"
}
Database Contains:
{
"_id" : ObjectId("5abcecf5de91bd75beb21a11"),
"ReceiveCode" : "SCYDG",
"Creation" : ISODate("2018-03-29T13:41:09.080Z"),
"Expiry" : ISODate("2018-03-29T13:44:09.080Z"),
"PaymentInstrument" : {
"_id" : ObjectId("5abcecc0de91bd75beb21a0e"),
"AccountType" : "Worldpay Online Payments Account",
"ReceivingAccount" : 1,
"PaymentsAccount" : 0,
"WorldpayOnlinePaymentsInfo" : {
"ServiceKeyEncrypted" : "3::0a6915f1f98ee7d3b6aa06608c1d6d960e06002be6de2bf067f5337db301ceb52b534a23b233d2d464c8977026f2d9f034a807540076fb42d44f66425eaf390649f9786ca604dda45c93cb65cd6b839f8cbb6c41f43a6a6b566815ebe1d5d410",
"ServiceKey" : "T_S_********-****-****-****-********4bfb"
},
"UserID" : "79a26d981246978135edadf1",
"VendorID" : "Worldpay",
"VendorAccountName" : "Worldpay Online Payments",
"Description" : "Utah Iron Inc. account.",
"IconLocation" : "worldpay-account.png",
"APIVersion" : "7.6.4-44af11fdc504cff51f7e5fdaff97a7cf1a6b09a4",
"Integrity" : null,
"LastUpdate" : ISODate("2018-03-29T13:40:16.505Z"),
"LastVersion" : 1
},
"Status" : "Pending"
}
Receivecode object contains the receivecode string
"ReceiveCode" : "SCYDG"
Receivecode object contains re-encrypted payment instrument details
"WorldpayOnlinePaymentsInfo" : {
"ServiceKeyEncrypted" : "3::0a6915f1f98ee7d3b6aa06608c1d6d960e06002be6de2bf067f5337db301ceb52b534a23b233d2d464c8977026f2d9f034a807540076fb42d44f66425eaf390649f9786ca604dda45c93cb65cd6b839f8cbb6c41f43a6a6b566815ebe1d5d410",
"ServiceKey" : "T_S_********-****-****-****-********4bfb"
}
Receivecode object contains an expiry timestamp
"Expiry" : ISODate("2018-03-29T13:44:09.080Z")
2. User specifies nonexistent instrument ID
Using : /receivecodes
{
"key": "12345678-9012-3456-7890-123456789012",
"ID": "000000000000000000000000"
}
Response: 400 Error Bad Request
{
"code": 600,
"info": "The instrument could not be found, has no access or has expired."
}
3. User specifies instrument ID belonging to another user
Create a new instrument for user YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU2
Create a new worldpay merchant account using /payment-instruments/worldpay-merchants
Testing data:
{
"key": "2626d3f2-87a9-441a-9e4d-4c6e84ab50d6",
"ID": "5abceedbde91bd75beb21a1b"
}
Re-authorise with YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1
Using : /receivecodes
{
"key": "2626d3f2-87a9-441a-9e4d-4c6e84ab50d6",
"ID": "5abceedbde91bd75beb21a1b"
}
Response:
400 Error: Bad Request
{
"code": 600,
"info": "The instrument could not be found, has no access or has expired."
}
4. User provides incorrect encryption key
Using : /receivecodes
{
"key": "badbadba-dbad-badb-adba-dbadbadbadba",
"ID": "5abcecc0de91bd75beb21a0e"
}
Response:
401 Error: Unauthroized
{
"code": 602,
"info": "The instrument could not be decrypted."
}
5. Payment instrument cannot create receivecodes
Create a new worldpay merchant account using /payment-instruments/worldpay-merchants
Testing data:
{
"key": "d995b840-6f0a-4362-b401-da3466e409b3",
"ID": "5abcf18bde91bd75beb21a5f"
}
Modify record to remove the ability to create receive codes.
{
"_id" : ObjectId("5abcf18bde91bd75beb21a5f"),
"AccountType" : "Worldpay Online Payments Account",
"ReceivingAccount" : 0,
"PaymentsAccount" : 0,
"WorldpayOnlinePaymentsInfo" : {
"ServiceKeyEncrypted" : "3::a8c615cda59f2c75653bd4f26953ca0aae5bd2b095f5e211899b146c7824bb18990f4c6309694a33360b92bf79f03d374350dba679b36e8c1a65ace8c817bd097e7d2d5ccbf0cb9f5d17347e7e1e49ef062074a375de6dc74b6237bb827dce45",
"ServiceKey" : "T_S_********-****-****-****-********4bfb"
},
"UserID" : "79a26d981246978135edadf1",
"VendorID" : "Worldpay",
"VendorAccountName" : "Worldpay Online Payments",
"Description" : "Islington Copper Inc. account.",
"IconLocation" : "worldpay-account.png",
"APIVersion" : "7.6.4-44af11fdc504cff51f7e5fdaff97a7cf1a6b09a4",
"Integrity" : null,
"LastUpdate" : ISODate("2018-03-29T14:00:43.099Z"),
"LastVersion" : 1
}
Response:
400 Error: Bad Request
{
"key": "de851ec5-6b36-453a-870c-14bb63e16ede",
"ID": "5aba46ecb28f2c8e1700c9c8"
}
6. Receivecode should be deleted when it expires
Using the code created in AC 1:
Using : /receivecodes
{
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
"ID": "5abcecc0de91bd75beb21a0e"
}}
Response:
{
"receivecode": "SCYDG"
}
Database Contains:
{
"_id" : ObjectId("5abcecf5de91bd75beb21a11"),
"ReceiveCode" : "SCYDG",
"Creation" : ISODate("2018-03-29T13:41:09.080Z"),
"Expiry" : ISODate("2018-03-29T13:44:09.080Z"),
"PaymentInstrument" : {
"_id" : ObjectId("5abcecc0de91bd75beb21a0e"),
"AccountType" : "Worldpay Online Payments Account",
"ReceivingAccount" : 1,
"PaymentsAccount" : 0,
"WorldpayOnlinePaymentsInfo" : {
"ServiceKeyEncrypted" : "3::0a6915f1f98ee7d3b6aa06608c1d6d960e06002be6de2bf067f5337db301ceb52b534a23b233d2d464c8977026f2d9f034a807540076fb42d44f66425eaf390649f9786ca604dda45c93cb65cd6b839f8cbb6c41f43a6a6b566815ebe1d5d410",
"ServiceKey" : "T_S_********-****-****-****-********4bfb"
},
"UserID" : "79a26d981246978135edadf1",
"VendorID" : "Worldpay",
"VendorAccountName" : "Worldpay Online Payments",
"Description" : "Utah Iron Inc. account.",
"IconLocation" : "worldpay-account.png",
"APIVersion" : "7.6.4-44af11fdc504cff51f7e5fdaff97a7cf1a6b09a4",
"Integrity" : null,
"LastUpdate" : ISODate("2018-03-29T13:40:16.505Z"),
"LastVersion" : 1
},
"Status" : "Pending"
}
Database was checked again at 2018-03-29T13:45.
db.getCollection('ReceiveCode').find({"_id" : ObjectId("5abcecf5de91bd75beb21a11")})
Fetched 0 record(s) in 21ms
7. Request should be logged
Log for AC 1:
{
"_id" : ObjectId("5abcecf5de91bd75beb21a12"),
"timestamp" : ISODate("2018-03-29T13:41:09.084Z"),
"level" : "info",
"message" : "Successfully created a receivecode",
"meta" : {
"logId" : "payments:receivecodes",
"ip" : "62.232.80.210",
"reqId" : "f0c1e13c-3a09-40c1-8e8a-007f52ebf846",
"userId" : "79a26d981246978135edadf1",
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
"_receivecode" : "SCYDG",
"_instrumentID" : "5abcecc0de91bd75beb21a0e"
},
"hostname" : "node01-cl01-cc"
}
Log for AC 2:
{
"_id" : ObjectId("5abcee6ade91bd75beb21a19"),
"timestamp" : ISODate("2018-03-29T13:47:22.098Z"),
"level" : "error",
"message" : "Failed to create a receivecode",
"meta" : {
"logId" : "payments:receivecodes",
"ip" : "62.232.80.210",
"reqId" : "10e1dcee-2330-456b-93e7-41b00f0c2a39",
"userId" : "79a26d981246978135edadf1",
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
"_instrumentID" : "000000000000000000000000",
"_internalError" : "Error: BRIDGE: INVALID INSTRUMENT",
"_httpCode" : 400,
"_info" : "The instrument could not be found, has no access or has expired.",
"_code" : 600
},
"hostname" : "node01-cl01-cc"
}
Log for AC 3:
{
"_id" : ObjectId("5abcefd4de91bd75beb21a1e"),
"timestamp" : ISODate("2018-03-29T13:53:24.686Z"),
"level" : "error",
"message" : "Failed to create a receivecode",
"meta" : {
"logId" : "payments:receivecodes",
"ip" : "62.232.80.210",
"reqId" : "9bf49711-2f43-44db-a990-d695a31f0733",
"userId" : "79a26d981246978135edadf1",
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
"_instrumentID" : "5abceedbde91bd75beb21a1b",
"_internalError" : "Error: BRIDGE: INVALID INSTRUMENT",
"_httpCode" : 400,
"_info" : "The instrument could not be found, has no access or has expired.",
"_code" : 600
},
"hostname" : "node01-cl01-cc"
}
Log for AC 4:
{
"_id" : ObjectId("5abcf00ede91bd75beb21a25"),
"timestamp" : ISODate("2018-03-29T13:54:22.750Z"),
"level" : "error",
"message" : "Failed to create a receivecode",
"meta" : {
"logId" : "payments:receivecodes",
"ip" : "62.232.80.210",
"reqId" : "f4f87109-1a40-440f-88ce-22d33121bd52",
"userId" : "79a26d981246978135edadf1",
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
"_instrumentID" : "5abcecc0de91bd75beb21a0e",
"_internalError" : "Error: BRIDGE: INSTRUMENT DECRYPTION FAILURE",
"_httpCode" : 401,
"_info" : "The instrument could not be decrypted.",
"_code" : 602
},
"hostname" : "node01-cl01-cc"
}
Log for AC 5:
{
"_id" : ObjectId("5abcf4524e484a771f906de3"),
"timestamp" : ISODate("2018-03-29T14:12:34.702Z"),
"level" : "error",
"message" : "Failed to create a receivecode",
"meta" : {
"logId" : "payments:receivecodes",
"ip" : "62.232.80.210",
"reqId" : "e72cca16-e9ee-4ab1-9b74-97a18d9991c2",
"userId" : "79a26d981246978135edadf1",
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
"_instrumentID" : "5abcf18bde91bd75beb21a5f",
"_internalError" : "Error: BRIDGE: INVALID INSTRUMENT",
"_httpCode" : 400,
"_info" : "The instrument could not be found, has no access or has expired.",
"_code" : 600
},
"hostname" : "node01-cl01-cc"
}
Log for AC 6:
{
"_id" : ObjectId("5abcecf5de91bd75beb21a12"),
"timestamp" : ISODate("2018-03-29T13:41:09.084Z"),
"level" : "info",
"message" : "Successfully created a receivecode",
"meta" : {
"logId" : "payments:receivecodes",
"ip" : "62.232.80.210",
"reqId" : "f0c1e13c-3a09-40c1-8e8a-007f52ebf846",
"userId" : "79a26d981246978135edadf1",
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
"_receivecode" : "SCYDG",
"_instrumentID" : "5abcecc0de91bd75beb21a0e"
},
"hostname" : "node01-cl01-cc"
}