obtasks/archive/bridge_619/tests.dev.md
2019-04-29 14:49:56 +01:00

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"
}