421 lines
11 KiB
Markdown
421 lines
11 KiB
Markdown
|
# 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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
|
||
|
"ID": "5abcecc0de91bd75beb21a0e"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
|
||
|
Using : `/receivecodes`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
|
||
|
"ID": "5abcecc0de91bd75beb21a0e"
|
||
|
}}
|
||
|
```
|
||
|
|
||
|
Response:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"receivecode": "SCYDG"
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
Database Contains:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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_
|
||
|
|
||
|
```json
|
||
|
"ReceiveCode" : "SCYDG"
|
||
|
```
|
||
|
|
||
|
_Receivecode object contains re-encrypted payment instrument details_
|
||
|
|
||
|
```json
|
||
|
"WorldpayOnlinePaymentsInfo" : {
|
||
|
"ServiceKeyEncrypted" : "3::0a6915f1f98ee7d3b6aa06608c1d6d960e06002be6de2bf067f5337db301ceb52b534a23b233d2d464c8977026f2d9f034a807540076fb42d44f66425eaf390649f9786ca604dda45c93cb65cd6b839f8cbb6c41f43a6a6b566815ebe1d5d410",
|
||
|
"ServiceKey" : "T_S_********-****-****-****-********4bfb"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
_Receivecode object contains an expiry timestamp_
|
||
|
|
||
|
```json
|
||
|
"Expiry" : ISODate("2018-03-29T13:44:09.080Z")
|
||
|
```
|
||
|
|
||
|
### 2. User specifies nonexistent instrument ID ###
|
||
|
|
||
|
Using : `/receivecodes`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "12345678-9012-3456-7890-123456789012",
|
||
|
"ID": "000000000000000000000000"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Response: `400 Error Bad Request`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "2626d3f2-87a9-441a-9e4d-4c6e84ab50d6",
|
||
|
"ID": "5abceedbde91bd75beb21a1b"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Re-authorise with `YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1`
|
||
|
|
||
|
Using : `/receivecodes`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "2626d3f2-87a9-441a-9e4d-4c6e84ab50d6",
|
||
|
"ID": "5abceedbde91bd75beb21a1b"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Response:
|
||
|
|
||
|
`400 Error: Bad Request`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"code": 600,
|
||
|
"info": "The instrument could not be found, has no access or has expired."
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
### 4. User provides incorrect encryption key ###
|
||
|
|
||
|
Using : `/receivecodes`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "badbadba-dbad-badb-adba-dbadbadbadba",
|
||
|
"ID": "5abcecc0de91bd75beb21a0e"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Response:
|
||
|
|
||
|
`401 Error: Unauthroized`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "d995b840-6f0a-4362-b401-da3466e409b3",
|
||
|
"ID": "5abcf18bde91bd75beb21a5f"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Modify record to remove the ability to create receive codes.
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"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`
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
|
||
|
"ID": "5abcecc0de91bd75beb21a0e"
|
||
|
}}
|
||
|
```
|
||
|
|
||
|
Response:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"receivecode": "SCYDG"
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
Database Contains:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"_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:
|
||
|
```json
|
||
|
{
|
||
|
"_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"
|
||
|
}
|
||
|
```
|