Initial commit
This commit is contained in:
commit
1b61684cba
77
Blocked ips.md
Normal file
77
Blocked ips.md
Normal file
@ -0,0 +1,77 @@
|
||||
blocked ips
|
||||
========================
|
||||
|
||||
45.125.65.88
|
||||
141.98.10.37
|
||||
193.169.254.67
|
||||
185.234.217.188
|
||||
45.125.65.65
|
||||
|
||||
141.98.80.15
|
||||
|
||||
45.125.65.63
|
||||
|
||||
185.234.217.188
|
||||
|
||||
45.125.66.183
|
||||
|
||||
185.53.91.24
|
||||
185.53.91.24
|
||||
|
||||
|
||||
sudo iptables -A INPUT -s 45.125.65.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 141.98.10.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 193.169.254.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 185.234.217.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 185.36.81.0/24 -j DROP
|
||||
|
||||
|
||||
|
||||
sudo iptables -A INPUT -s 141.98.80.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 45.125.65.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 185.234.217.188 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 45.125.66.0/24 -j DROP
|
||||
|
||||
sudo iptables -A INPUT -s 185.53.91.24 -j DROP
|
||||
|
||||
https://help.ubuntu.com/community/PortKnocking
|
||||
|
||||
```
|
||||
|
||||
To block 116.10.191.* addresses:
|
||||
|
||||
$ sudo iptables -A INPUT -s 116.10.191.0/24 -j DROP
|
||||
|
||||
To block 116.10.*.* addresses:
|
||||
|
||||
$ sudo iptables -A INPUT -s 116.10.0.0/16 -j DROP
|
||||
|
||||
To block 116.*.*.* addresses:
|
||||
|
||||
$ sudo iptables -A INPUT -s 116.0.0.0/8 -j DROP
|
||||
|
||||
But be careful what you block using this method. You don't want to prevent legitmate traffic from reaching the host.
|
||||
|
||||
edit: as pointed out, iptables evaluates rules in sequential order. Rules higher in the ruleset are applied before rules lower in the ruleset. So if there's a rule higher in your ruleset that allows said traffic, then appending (iptables -A) the DROP rule will not produce the intended blocking result. In this case, insert (iptables -I) the rule either:
|
||||
|
||||
as the first rule
|
||||
sudo iptables -I ...
|
||||
|
||||
or before the allow rule
|
||||
sudo iptables --line-numbers -vnL
|
||||
|
||||
say that shows rule number 3 allows ssh traffic and you want to block ssh for an ip range. -I takes an argument of an integer that's the location in your ruleset you want the new rule to be inserted
|
||||
|
||||
iptables -I 2 ...
|
||||
|
||||
|
||||
|
||||
ckiGO99l
|
||||
```
|
9
DIR-3059/DIR-3059 2018-11-06T16_16_17.md
Normal file
9
DIR-3059/DIR-3059 2018-11-06T16_16_17.md
Normal file
@ -0,0 +1,9 @@
|
||||
DIR-3059
|
||||
========================
|
||||
|
||||
Extend OBDFCASCRAPE to be able to download Cypriot NCA Credit Institute data
|
||||
|
||||
https://www.centralbank.cy/en/licensing-supervision/banks/register-of-credit-institutions-operating-in-cyprus
|
||||
|
||||
|
||||
|
45
DIR-3059/commit.md
Normal file
45
DIR-3059/commit.md
Normal file
@ -0,0 +1,45 @@
|
||||
DIR-3059 Extend OBDFCASCRAPE to be able to download Cypriot NCA Credit Institute data
|
||||
|
||||
# Summary
|
||||
|
||||
* Implement Credit Institute scraping
|
||||
* Extended test to test Credit Institute scraping
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
||||
|
||||
```
|
||||
# CYPRUS:: Scrape a Credit Service
|
||||
# CYPRUS::Extract Local Credit Institutions from Page
|
||||
ok 1 Extracted Local Credit Institutions from Page
|
||||
# CYPRUS::Extract Foreign Credit Institutions from Page
|
||||
ok 2 Extracted Foreign Credit Institutions from Page
|
||||
# CYPRUS::Extract ALL Credit Institutions from Page
|
||||
[2018-11-06T16:25:36.859] [INFO] CY - Credit institutes
|
||||
[2018-11-06T16:25:36.867] [INFO] Scraper - fullPath tests/sink/201811061625
|
||||
[2018-11-06T16:25:36.871] [DEBUG] Scraper - Snapshot tests/sink/201811061625/creditInstitutes.png
|
||||
ok 3 Extracted ALL Credit Institutions from Page
|
||||
|
||||
1..3
|
||||
# tests 3
|
||||
# pass 3
|
||||
|
||||
# ok
|
||||
|
||||
# CYPRUS::WHOIS Test
|
||||
CMD dig www.centralbank.cy +time=3 +retry=1
|
||||
ok 1 Get Raw CY WhoIS
|
||||
ok 2 No JSON for Cyprus
|
||||
ok 3 Get JSON WhoIS for IP Address
|
||||
# CYPRUS::SSL Test
|
||||
[2018-11-06T16:19:50.502] [DEBUG] Scraper - Cert for: www.centralbank.cy
|
||||
ok 4 Get SSL Certificate
|
||||
|
||||
1..4
|
||||
# tests 4
|
||||
# pass 4
|
||||
|
||||
# ok
|
||||
|
||||
```
|
10
DIR-3089/DIR-3089.md
Normal file
10
DIR-3089/DIR-3089.md
Normal file
@ -0,0 +1,10 @@
|
||||
DIR-3089
|
||||
========================
|
||||
Extend OBDFCASCRAPE to be able to upload Irish NCA data
|
||||
|
||||
* Added archiving
|
||||
|
||||
* Added uploading to S3
|
||||
|
||||
* Removed timestamping of folders within the archive to make it easier for Ben to process
|
||||
|
10
DIR-3089/commit.md
Normal file
10
DIR-3089/commit.md
Normal file
@ -0,0 +1,10 @@
|
||||
DIR-3089 Extend OBDFCASCRAPE to be able to upload Irish NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Added archiving - The contents of the artefact folder is compressed
|
||||
|
||||
* Added uploading to S3
|
||||
|
||||
* Removed timestamping of folders within the archive to make it easier for Ben to process
|
||||
|
18
DIR-3096/Note 2018-11-08T11.05.01.md
Normal file
18
DIR-3096/Note 2018-11-08T11.05.01.md
Normal file
@ -0,0 +1,18 @@
|
||||
DIR-3096
|
||||
========================
|
||||
|
||||
Extend OBDFCASCRAPE to be able to upload Cyprus NCA data
|
||||
|
||||
|
||||
|
||||
OBDFCASCRAPE extended to enable archiving of the data scraped from http://www.mof.gov.cy/mof/mof.nsf/index_en/index_en?OpenDocument , https://www.cysec.gov.cy/en-GB/home/ , http://www.centralbank.gov.cy/nqcontent.cfm?a_id=1&lang=en
|
||||
non-repudiation data for each downloaded file stored in the Artefact Store using path */artefacts/IE/CBOI/YYYYMMDDHHMM/filename-nr.zip* (see https://openbanking.atlassian.net/wiki/spaces/DEV/pages/465634191/DRAFT+NCA+Data+Acquisition+and+Access+Design+Document)
|
||||
Archived data uploaded to the correct S3 store
|
||||
unit tests included with the source code of the agent
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
As a user interested in the Cypriot NCA PSD2 data, I would like to data including non-repudiation data which has been retrieved from Cyprus to be uploaded to the artefact Store.
|
9
DIR-3096/commit.md
Normal file
9
DIR-3096/commit.md
Normal file
@ -0,0 +1,9 @@
|
||||
DIR-3096 Extend OBDFCASCRAPE to be able to upload Cyprus NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Added archiving - The contents of the artefact folder is compressed
|
||||
|
||||
* Added uploading to S3
|
||||
|
||||
* Flattened folder struture, removed timestamping of folders within the archive to make it easier for the Ingestion process to handle
|
21
DIR-3098/Note 2018-11-08T14.27.59.md
Normal file
21
DIR-3098/Note 2018-11-08T14.27.59.md
Normal file
@ -0,0 +1,21 @@
|
||||
DIR-3098
|
||||
========================
|
||||
|
||||
DIR-3098 Extend OBDFCASCRAPE to be able to upload German NCA data
|
||||
|
||||
|
||||
|
||||
OBDFCASCRAPE extended to enable archiving of the data scraped from https://portal.mvp.bafin.de/database/ZahlInstInfo/?locale=en_GB
|
||||
non-repudiation data for each downloaded file stored in the Artefact Store using path */artefacts/DE/BAFIN/YYYYMMDDHHMM/filename-nr.zip* (see https://openbanking.atlassian.net/wiki/spaces/DEV/pages/465634191/DRAFT+NCA+Data+Acquisition+and+Access+Design+Document)
|
||||
Archived data uploaded to the correct S3 store
|
||||
unit tests included with the source code of the agent
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
As a user interested in the Cypriot NCA PSD2 data, I would like to data including non-repudiation data which has been retrieved from Cyprus to be uploaded to the artefact Store.
|
||||
|
||||
|
||||
|
17
DIR-3098/commit.md
Normal file
17
DIR-3098/commit.md
Normal file
@ -0,0 +1,17 @@
|
||||
DIR-3098 Extend OBDFCASCRAPE to be able to upload German NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Added archiving - The contents of the artefact folder is compressed
|
||||
|
||||
* Exteded archiving to France.
|
||||
|
||||
* Added uploading to S3
|
||||
|
||||
* Flattened folder structure, removed timestamping of folders within the archive to make it easier for the Ingestion process to handle
|
||||
|
||||
* Added an index of the pages scraped to aid ingestion
|
||||
|
||||
* Changed filenames to ensure there are no collisions, items are prefixed with either ps_, em or ci_.
|
||||
|
||||
* Implemented Amazon SQS message service so that an announcement can be made when a new file is avilable for ingestion
|
76
DIR-3111/Sweden Notes.md
Normal file
76
DIR-3111/Sweden Notes.md
Normal file
@ -0,0 +1,76 @@
|
||||
Sweden Notes
|
||||
========================
|
||||
|
||||
|
||||
PI
|
||||
===
|
||||
|
||||
```
|
||||
How to access the Swedish information on Payment Institutions The link in the NCA Regulatory Permissions.xls (tab 1), contains the URLs to the NCA for Sweden. Information on individual PIs can be accessed by searching for them, as described here. Main business = Payment Service Companies THEN
|
||||
|
||||
|
||||
1) Category = Payment Institution
|
||||
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Betaltj%C3%A4nstf%C3%B6retag&cat=BET&area=#results
|
||||
|
||||
|
||||
2) Category = Registered Payment Firm
|
||||
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Betaltj%C3%A4nstf%C3%B6retag&cat=BETREG&area=#results
|
||||
|
||||
|
||||
|
||||
Note - If you select both categories using the CTRL as specified on the page, it performs an AND condition and will give you an incorrect result. Run the categories individually. List item(s) reviewed by Mitch. From the Advanced Search box select from the Main business drop down "Payment Service Companies" The categories will be displayed in the category box - select (highlight) one from this list or leave as the default selection. Then select the [Search] button. The results will be appended to the page. Note - Selecting values from the categories list creates an AND condition on the values. Not selecting any values will return all values grouped by category heading.
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
EMONEY
|
||||
===
|
||||
|
||||
```
|
||||
How to access the Swedish information on Electronic Money Institutions
|
||||
The link in the NCA Regulatory Permissions.xls (tab 1), contains two URLs. This is because you have two list values to select and you must run the searches individually, else the query performs an "and" on the values and returns an incorrect result.
|
||||
|
||||
Main business = Electronic Money Issuers
|
||||
THEN
|
||||
1) Category = Swedish E-Money Institution
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Utgivare+av+elektroniska+pengar&cat=EINST&area=#results
|
||||
2) Category = Swedish Registered E-Money Issuer
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Utgivare+av+elektroniska+pengar&cat=REGUTG&area=#results
|
||||
|
||||
Note - If you select both categories using the CTRL as specified on the page, it performs an AND condition and will give you an incorrect result. Run the categories individually.
|
||||
|
||||
List item(s) to be selected - reviewed by Mitch.
|
||||
|
||||
From the Advanced Search box select from the Main business drop down "Electronic Money Issuers" The categories of EMI will be displayed in the category box - only select one item (as shown above), then select the [Search] button.
|
||||
The results will be appended to the page.
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
CREDIT INSTITUTES
|
||||
===
|
||||
```
|
||||
|
||||
MHow to access the Swedish information on Credit Institutions
|
||||
The link in the NCA Regulatory Permissions.xls (tab 1), contains the URLs to the NCA for Sweden. Information on individual Credit Institutions can be accessed by searching for them, as described here.
|
||||
|
||||
From the Advanced Search box selct from the Main business drop down "Banks" and then “Searching the registers” drop down select the following three values (you'll need to do them individually):
|
||||
|
||||
From the "Main Business" drop down select " Bank
|
||||
THEN
|
||||
1) Category = Banking Companies (Linited Liability Company)
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Bank&cat=BANK&area=#results
|
||||
2) Category = Members-Bank
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Bank&cat=MBANK&area=#results
|
||||
3) Category = Savings Bank
|
||||
https://www.fi.se/en/our-registers/company-register/?huvudkategori=Bank&cat=SPAR&area=#results
|
||||
|
||||
Note - If you select both categories using the CTRL as specified on the page, it performs an AND condition and will give you an incorrect result. Run the categories individually. If you put no categories (leave as default) then you will get all categories shown sequentially with headings.
|
||||
|
||||
List item(s) reviewed by Mitch.
|
||||
|
||||
```
|
11
DIR-3111/commit.md
Normal file
11
DIR-3111/commit.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3111 Extend OBDFCASCRAPE to be able to upload Swedish NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Added archiving - The contents of the artefact folder is compressed
|
||||
|
||||
* Added an index of the pages scraped to aid ingestion
|
||||
|
||||
* Changed filenames to ensure there are no collisions, items are prefixed with either ps_, em or ci_.
|
||||
|
||||
* Implemented Amazon SQS message service so that an announcement can be made when a new file is avilable for ingestion
|
32
DIR-3119/Note 2018-12-04T14.53.30.md
Normal file
32
DIR-3119/Note 2018-12-04T14.53.30.md
Normal file
@ -0,0 +1,32 @@
|
||||
Note 2018-12-04T14.53.30
|
||||
========================
|
||||
|
||||
**Payment Institute**
|
||||
|
||||
How to access the Irish information on Payment Institutions
|
||||
https://www.bancaditalia.it/compiti/vigilanza/albi-elenchi/index.html?com.dotmarketing.htmlpage.language=1
|
||||
|
||||
https://infostat.bancaditalia.it/GIAVAInquiry-public/ng/int-albi/search
|
||||
|
||||
Select the following URL ~~https://infostat.bancaditalia.it/giava-inquiry-public/flex/Giava/GIAVAFEInquiry.html#~~
|
||||
|
||||
When the page opens you will need to select the English Version hyperlink at the top of the page and confirm the popup message box [Si].
|
||||
|
||||
The screen will change to the "Intermediary search terms" screen. The screen (form) displayed has three sections:
|
||||
|
||||
1) Historical Search - Do not use.
|
||||
|
||||
2) Advanced search in the registers at a given time - use this for CIs in Italy (step 2)
|
||||
---- In Registers / Lists drop down select - Albo IP ART.114-Septies Tub = Register of PI (Payment Institutions)
|
||||
---- The Reference Date - will default to today
|
||||
---- Country - you can't enter directly into this field - I have selected Italia, to do this you need to open the search popup, enter the country (you have to enter more than two characters) and select from the window, then click the [Chosen] button to return the value to the form.
|
||||
|
||||
If you do not select you get all countries.
|
||||
Need to check, if I dont use this country select I also get foreign registered banks, what is the correct search?
|
||||
|
||||
Register / Lists = Albo IP ART.114-Septies Tub = Register of PI (Payment Institutions)
|
||||
Reference Date = defaults to today's date
|
||||
Country = Italia
|
||||
|
||||
3) Search Advanced cross-border operation to a date (step 6) You also need to run this query.
|
||||
This allows you to see the passporting out.
|
3
DIR-3119/Note 2018-12-06T09.36.48.md
Normal file
3
DIR-3119/Note 2018-12-06T09.36.48.md
Normal file
@ -0,0 +1,3 @@
|
||||
Note 2018-12-06T09.36.48
|
||||
========================
|
||||
|
12
DIR-3124/Note 2018-12-13T13.56.18.md
Normal file
12
DIR-3124/Note 2018-12-13T13.56.18.md
Normal file
@ -0,0 +1,12 @@
|
||||
Note 2018-12-13T13.56.18
|
||||
========================
|
||||
|
||||
```
|
||||
|
||||
|
||||
How to access the Czech information on Credit Institutions
|
||||
|
||||
This URL https://apl.cnb.cz/apljerrsdad/JERRS.WEB07.INTRO_PAGE?p_lang=en takes you to the register page for the Czech NCA. Select the "Predefined List
|
||||
|
||||
|
||||
```
|
31
DIR-3124/commit.md
Normal file
31
DIR-3124/commit.md
Normal file
@ -0,0 +1,31 @@
|
||||
DIR-3124 Extend OBDFCASCRAPE to download Czech NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Captcha breaker created
|
||||
|
||||
* Czech data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
```
|
||||
# CZECH:: Scrape a Payment Service
|
||||
# CZECH::Extract Basic Payment Services from Page
|
||||
ok 1 Extracted Details from Page
|
||||
# CZECH::Extract More advanced details Payment Services from Page
|
||||
ok 2 Extracted Details from Page
|
||||
# CZECH::Extract More Authorized activities for Payment Services from Page
|
||||
ok 3 Extracted Authorized activities from Page
|
||||
# CZECH:: Scrape creditServices Authorised activitites
|
||||
# CZECH::Extract Authorized activities ( No 7 section, wih Matrix )
|
||||
ok 4 Extracted Details from Page
|
||||
# CZECH::Extract Authorized activities ( 7 Section no active, no Matrix )
|
||||
ok 5 Extracted Details from Page
|
||||
# CZECH::Extract Authorized activities ( With 7 Section and Matrix )
|
||||
ok 6 Extracted Details from Page
|
||||
# CZECH::Extract Authorized activities ( 4 tables including Matrix )
|
||||
ok 7 Extracted Details from Page
|
||||
|
||||
```
|
39
DIR-3128 EE/Note 2019-03-19T12.01.52.md
Normal file
39
DIR-3128 EE/Note 2019-03-19T12.01.52.md
Normal file
@ -0,0 +1,39 @@
|
||||
Note 2019-03-19T12.01.52
|
||||
========================
|
||||
|
||||
Showing the first value selected … From here rather than scrape this value use the left hand menu commands to filter and select. Under the Payment institutions menu on the left hand side, the following items need to be run:
|
||||
|
||||
https://www.fi.ee/en/payment-services/e-money-institutions/e-money-institutions
|
||||
1) Estonian e-money institutions -- Yes -- -No records returned - cannot define template as a result
|
||||
https://www.fi.ee/en/payment-services/payment-services/e-money-institutions/estonian-e-money-institutions
|
||||
2) Estonian e-money institutions with an exemption -- Yes --- No records returned - cannot define template as a result
|
||||
https://www.fi.ee/en/payment-services/payment-services/e-money-institutions/estonian-e-money-institutions-exemption
|
||||
3) Disributors of E-money -- Yes --- No records returned - cannot define template as a result
|
||||
https://www.fi.ee/en/payment-services/payment-services/e-money-institutions/distributors-e-money
|
||||
4) Providers of cross-border e-money services -- Yes --- screen shot below (step 2 and step 3)
|
||||
https://www.fi.ee/en/payment-services/e-money-institutions/providers-cross-border-e-money-services
|
||||
5) Distributors for providers of cross-border e-money services -- Yes --- screen shots (step 4 & step 5)
|
||||
https://www.fi.ee/en/distributors-providers-cross-border-e-money-services
|
||||
6) Branches of foreign e-money institutions -- Yes --- No records returned - cannot define template as a result
|
||||
https://www.fi.ee/en/payment-services/payment-services/e-money-institutions/branches-foreign-e-money-institutions
|
||||
|
||||
The following screen shot is produced on running:
|
||||
4) Providers of cross-border e-money services
|
||||
|
||||
Note on the following list - The first two entries have " " displayed on the corporate names. However, when opening the detail of the record, these do not persist.
|
||||
|
||||
|
||||
|
||||
After running the following URL, select open "Credit institutions" in the left hand menu to reveal it sub-menu, we need to run each of these.
|
||||
https://www.fi.ee/en/banking-and-credit
|
||||
|
||||
1) Licensed credit institutions in Estonia --- Yes, we need to run
|
||||
https://www.fi.ee/en/banking-and-credit/banking-and-credit/credit-institutions/licensed-credit-institutions-estonia
|
||||
2) Affiliated branches of foreign credit institutions --- Yes, we need to run
|
||||
https://www.fi.ee/en/banking-and-credit/credit-institutions/affiliated-branches-foreign-credit-institutions
|
||||
3) Representative offices of foreign credit institutions --- Yes - no records returned can't evaluate
|
||||
https://www.fi.ee/en/banking-and-credit/banking-and-credit/credit-institutions/representative-offices-foreign-credit-institutions
|
||||
4) Providers of cross-border banking services --- Yes, we need to run
|
||||
https://www.fi.ee/en/banking-and-credit/banking-and-credit/credit-institutions/providers-cross-border-banking-services
|
||||
|
||||
made a modiication
|
22
DIR-3157 BG/Note 2019-04-15T16.18.59.md
Normal file
22
DIR-3157 BG/Note 2019-04-15T16.18.59.md
Normal file
@ -0,0 +1,22 @@
|
||||
Note 2019-04-15T16.18.59
|
||||
========================
|
||||
|
||||
How to access the Bulgarian information on Payment Institutions
|
||||
There are two access points to the Bulgarian registers. The first, shown below, allows you to download Excel Files to your local drive and is the quickest riute
|
||||
|
||||
1) This URL http://www.bnb.bg/PaymentSystem/PSPaymentOversight/PSPaymentOversightRegisters/index.htm?toLang=_EN&toLang=_EN&toLang=_EN&toLang=_EN takes you to register page where you may run a query on PIs for Croatia. In the "Documents" section, you have the values for; payment institutions and electronic money institutions.
|
||||
|
||||
2) This URL http://www.bnb.bg/RegistersAndServices/index.htm takes you to the Registers page (see STEP 2). Shown for information only.
|
||||
|
||||
Note - The registers are provided in Bulgarian (default) you can switch this to English. I have selected the English variant (en), see url above.
|
||||
|
||||
From the screen below perform the following:
|
||||
Select the EXCEL option, this will download a file to your local repository.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Note - the last modified date is shown on the page.
|
||||
Note - there is no option to display PI information directly to screen.
|
75
DIR-3159/Note 2018-11-19T10.35.14.md
Normal file
75
DIR-3159/Note 2018-11-19T10.35.14.md
Normal file
@ -0,0 +1,75 @@
|
||||
Note 2018-11-19T10.35.14
|
||||
========================
|
||||
|
||||
|
||||
|
||||
## Payment Institute
|
||||
|
||||
```
|
||||
How to access the Maltese information on Payment Institutions
|
||||
The link in the NCA Regulatory Permissions.xls (tab 1), contains the URL (https://www.mfsa.com.mt/pages/licenceholders.aspx) to the NCA for Malta. Information on individual PIs can be accessed by clicking on them in the URL, as described here.
|
||||
|
||||
Open the following General register URL - https://www.mfsa.com.mt/pages/licenceholders.aspx
|
||||
In the alternative search frop down fields select:
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Financial isntitutions licensed to undertake payment services under the 2nd Schedule to the Financial Institutions Act (Payment Institutions)
|
||||
|
||||
The page will refresh with the query results.
|
||||
|
||||
Note - this search will only give you the details of the PIs licensed in Malta. - See Step 3 for Companies licensed in Malta that can passport out.
|
||||
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
Identifying those Maltese Pis that can passport out
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Local Financial Institutions licensed to undertake activities under the 2nd Schedule to the Financial Institutions Act (Payment Institutions) exercising the freedom to provide services outside Malta
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Local Financial Institutions licensed to undertake activities under the 2nd Schedule to the Financial Institutions Act (Payment Institutions) exercising the freedom to establish a branch outside Malta
|
||||
|
||||
The following screen dump show point 1 run and also the opening of a detail row to show the passporting information.
|
||||
Screen shot 1 - below - I have picked Mistral, this is also shown in Step 3a as the item returned by the query.
|
||||
Screen shot 2 - below - I have picked Entercash as its agent Pluspay is shown in Step 3b.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
How to access the Maltese information on Electronic Money Institutions
|
||||
The link in the NCA Regulatory Permissions.xls (tab 1), contains the URL (https://www.mfsa.com.mt/pages/licenceholders.aspx) to the NCA for Malta. Information on individual PIs can be accessed by clicking on them in the URL, as described here.
|
||||
|
||||
Open the following General register URL - https://www.mfsa.com.mt/pages/licenceholders.aspx
|
||||
In the alternative search frop down fields select:
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Financial institutions licenced to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions)
|
||||
|
||||
|
||||
|
||||
The page will refresh with the query results.
|
||||
|
||||
Note - this search will only give you the details of the EMIs licensed in Malta. - See Step 3 for Companies licensed in Malta that can passport out.
|
||||
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
Field 1 = Credit Institutions
|
||||
Field 2 = Credit Institutions > Freedom of Services and Establishments - Exercise of the freedom to provide services outside Malta
|
||||
- there are 19 insititutions with the ability to provide services outside of Malta.
|
||||
Field 3 = Freedom of Services and Establishments - Exercise of the freedom to set up an establishment outside Malta
|
||||
|
||||
|
||||
```
|
19
DIR-3159/commit.md
Normal file
19
DIR-3159/commit.md
Normal file
@ -0,0 +1,19 @@
|
||||
DIR-3159 Extend OBDFCASCRAPE to download Malta NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Added archiving - The contents of the artefact folder is compressed
|
||||
|
||||
* Added an index of the pages scraped to aid ingestion
|
||||
|
||||
* Changed filenames to ensure there are no collisions, items are prefixed with either ps_, em or ci_.
|
||||
|
||||
* Implemented Amazon SQS message service so that an announcement can be made when a new file is avilable for ingestion
|
||||
|
||||
* Added dictioary loader and auto saver to the main Scraper object.
|
||||
|
||||
* Tests for the scraper
|
||||
|
||||
* Added the correct whois service for Malta
|
||||
|
||||
* Implemented auto mated translate
|
37
DIR-3164 Slovakia/commit.md
Normal file
37
DIR-3164 Slovakia/commit.md
Normal file
@ -0,0 +1,37 @@
|
||||
DIR-3164 Extend OBDFCASCRAPE to download Slovakia NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Slovakia data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
```
|
||||
# SLOVAKIA:: Scrape a Payment Service 001
|
||||
# SLOVAKIA::Extract Payment Services Basic Details from Page
|
||||
ok 1 Extracted Basic Details from Page
|
||||
# SLOVAKIA::Extract Payment Services Table from Page
|
||||
ok 2 Extracted Table Details from Page
|
||||
# SLOVAKIA:: Scrape a Payment Service 002
|
||||
# SLOVAKIA::Extract Payment Services Basic Details from Page
|
||||
ok 3 Extracted Basic Details from Page
|
||||
# SLOVAKIA::Extract Payment Services Table from Page
|
||||
ok 4 Extracted Table Details from Page
|
||||
# SLOVAKIA:: Scrape a Payment Service 003
|
||||
# SLOVAKIA::Extract Payment Services Basic Details from Page
|
||||
ok 5 Extracted Basic Details from Page
|
||||
# SLOVAKIA::Extract Payment Services Table from Page
|
||||
ok 6 Extracted Table Details from Page
|
||||
# SLOVAKIA:: Scrape a CI
|
||||
# SLOVAKIA::Complex CI Data
|
||||
ok 7 Extracted Table Details from Page
|
||||
|
||||
1..7
|
||||
# tests 7
|
||||
# pass 7
|
||||
|
||||
# ok
|
||||
|
||||
```
|
11
DIR-3178 LT/commit.md
Normal file
11
DIR-3178 LT/commit.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3178 Extend OBDFCASCRAPE to download Lithuania NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Lithuania data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
* Docker container updated to include Lithuania runner
|
11
DIR-3182 LV/commit.md
Normal file
11
DIR-3182 LV/commit.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3182 Extend OBDFCASCRAPE to download Latvia NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Latvia data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
* Docker container updated to include Latvia runner
|
11
DIR-3200 NO/commit.md
Normal file
11
DIR-3200 NO/commit.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3200 Extend OBDFCASCRAPE to download Norway NCA data
|
||||
|
||||
* Norway data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
* Docker container updated to include Norway runner
|
||||
|
||||
* Turned off dictionary saving
|
27
DIR-3232/Note 2018-11-21T14.20.16.md
Normal file
27
DIR-3232/Note 2018-11-21T14.20.16.md
Normal file
@ -0,0 +1,27 @@
|
||||
Note 2018-11-21T14.20.16
|
||||
========================
|
||||
|
||||
DIR-3232 DEV2- Build an Amazon Linux bootstrapper
|
||||
|
||||
* Scraper now works inside docker container
|
||||
|
||||
* Scraper uploads to S3 correctly
|
||||
|
||||
* Scraper now set up to use an internal cron job, so starts at predetermined time.
|
||||
|
||||
* Now utilising PM2 to ensure the process restart correctly when the Docke image is rebuilt
|
||||
|
||||
* If the image is restarted during a scrape process that process will restart
|
||||
|
||||
* Dictionary files are now stored in S3
|
||||
|
||||
|
||||
|
||||
**** 2018-11-28 ****
|
||||
|
||||
* If there is poor network connectevitiy then some pages time out. Trying to make the scraper more resillient.
|
||||
|
||||
* Jenkins file created
|
||||
|
||||
* Makefile created tested
|
||||
|
21
DIR-3232/commit.md
Normal file
21
DIR-3232/commit.md
Normal file
@ -0,0 +1,21 @@
|
||||
DIR-3232 DEV2- Build an Amazon Linux bootstrapper
|
||||
|
||||
# Summary
|
||||
|
||||
* Scraper now works inside docker container
|
||||
|
||||
* Scraper uploads to S3 correctly
|
||||
|
||||
* Scraper now set up to use an internal cron job, so starts at predetermined time.
|
||||
|
||||
* Now utilising PM2 to ensure the process restart correctly when the Docke image is rebuilt
|
||||
|
||||
* If the image is restarted during a scrape process that process will restart
|
||||
|
||||
* Dictionary files are now stored in S3
|
||||
|
||||
* If there is poor network connectevitiy then some pages time out. Trying to make the scraper more resillient.
|
||||
|
||||
* Jenkins file created
|
||||
|
||||
* Makefile created tested
|
11
DIR-3370/commit 2.md
Normal file
11
DIR-3370/commit 2.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3370 OBDFCASCRAPE Chore - Updated functionality trickle down
|
||||
|
||||
# Summary
|
||||
|
||||
* All page changes wrapped with an error handler
|
||||
|
||||
* Czech - extractEntityAuthority now adding data via an array as was intended. Tests updated
|
||||
|
||||
* Italy - mode index set back to 0
|
||||
|
||||
* Added a handler for unhandled Promise rejections
|
23
DIR-3370/commit.md
Normal file
23
DIR-3370/commit.md
Normal file
@ -0,0 +1,23 @@
|
||||
DIR-3370 OBDFCASCRAPE Chore - Updated functionality trickle down
|
||||
|
||||
# Summary
|
||||
|
||||
* Added uncaughtException capture to CY, DE, DK, FR, IE, IT, MT, NL, SE
|
||||
|
||||
* All processes using process.env.NODE_ENV instead of process.env.PROD
|
||||
|
||||
* All index files ( paymentServices.json, emoneyServices.json, creditServices.json ) consistently named and streamlined
|
||||
|
||||
* Czech : Fixed output of debug log
|
||||
|
||||
* Germany : Added parameters from the url of each page to the index
|
||||
|
||||
* France : Changed one debug to an info to show that the scraper is running
|
||||
|
||||
* Italy : Info logging tidied
|
||||
|
||||
* Italt : A page transition was failing inconsitently
|
||||
|
||||
* Malta : Now including the id from the url parameters and the metaStep in the index.
|
||||
|
||||
* Malta : ID is appended to the end of the file name to prevent collisions.
|
12
DIR-3376 Lux/Note 2019-01-16T15.29.30.md
Normal file
12
DIR-3376 Lux/Note 2019-01-16T15.29.30.md
Normal file
@ -0,0 +1,12 @@
|
||||
Note 2019-01-16T15.29.30
|
||||
========================
|
||||
|
||||
How to access the Greek information on Payment Institutions
|
||||
|
||||
This URL https://supervisedentities.apps.cssf.lu/index.html?language=en#AdvancedSearch takes you to Advances Search page where you may run a query on PIs for Luxembourg. In the drop down list selection, you have the values for; payment institutions, electronic money institutions and credit institutions (banks).
|
||||
|
||||
Note - The registers are provided in French (default) you can switch this to English or German. I have selected the English variant (en), see url above.
|
||||
|
||||
From the screen below perform the following:
|
||||
Type = Payment Institutions
|
||||
Select the check box "Register of payment institutions authorised in accordance with the Law of 10 November 2009 relating to payment services". The section of this check box will display the section "Payment services carried out" check all of the rows returned, they are the activities of the companies. Now select the [Search] button.
|
53
DIR-3376 Lux/Note 2019-01-21T14.03.41.md
Normal file
53
DIR-3376 Lux/Note 2019-01-21T14.03.41.md
Normal file
@ -0,0 +1,53 @@
|
||||
Note 2019-01-21T14.03.41
|
||||
========================
|
||||
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Financial isntitutions licensed to undertake payment services under the 2nd Schedule to the Financial Institutions Act (Payment Institutions)
|
||||
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Local Financial Institutions licensed to undertake activities under the 2nd Schedule to the Financial Institutions Act (Payment Institutions) exercising the freedom to provide services outside Malta
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Local Financial Institutions licensed to undertake activities under the 2nd Schedule to the Financial Institutions Act (Payment Institutions) exercising the freedom to establish a branch outside Malta
|
||||
|
||||
##
|
||||
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Financial institutions licenced to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions)
|
||||
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Local Financial Institutions licensed to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions) exercising the freedom to establish a branch outside Malta
|
||||
|
||||
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 3 = Local Financial Institutions licensed to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions) exercising the freedom to provide services outside Malta.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
How to access the Maltese information on Electronic Money Institutions
|
||||
The link in the NCA Regulatory Permissions.xls (tab 1), contains the URL (https://www.mfsa.com.mt/pages/licenceholders.aspx) to the NCA for Malta. Information on individual PIs can be accessed by clicking on them in the URL, as described here.
|
||||
|
||||
Open the following General register URL - https://www.mfsa.com.mt/pages/licenceholders.aspx
|
||||
In the alternative search frop down fields select:
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Financial institutions licenced to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions)
|
||||
|
||||
|
||||
|
||||
The page will refresh with the query results.
|
||||
|
||||
Note - this search will only give you the details of the EMIs licensed in Malta. - See Step 3 for Companies licensed in Malta that can passport out.
|
||||
|
||||
|
||||
Field 1= Financial Institutions
|
||||
Field 2 = Local Financial Institutions licensed to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions) exercising the freedom to establish a branch outside Malta
|
||||
Field 3 = Local Financial Institutions licensed to issue electronic money under the 3rd Schedule to the Financial Institutions Act (Electronic Money Institutions) exercising the freedom to provide services outside Malta.
|
||||
|
13
DIR-3376 Lux/comit.md
Normal file
13
DIR-3376 Lux/comit.md
Normal file
@ -0,0 +1,13 @@
|
||||
DIR-3376 Extend OBDFCASCRAPE to download Luxembourg NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Luxembourg data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
* Docker container updated to include Luxembourg runner
|
||||
|
||||
* Additional: small update to Malta to extend pages scraped
|
13
DIR-3380 Poland/commit.md
Normal file
13
DIR-3380 Poland/commit.md
Normal file
@ -0,0 +1,13 @@
|
||||
DIR-3380 Extend OBDFCASCRAPE to download Poland NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Poland data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
* Docker container updated to include Poland runner
|
||||
|
||||
* Node includes updated, unused items discarded
|
31
DIR-3380 Poland/email.md
Normal file
31
DIR-3380 Poland/email.md
Normal file
@ -0,0 +1,31 @@
|
||||
email
|
||||
========================
|
||||
|
||||
Having reviewed the missing data:
|
||||
|
||||
|
||||
Some of the firm details are missing in the dataset as follows
|
||||
|
||||
Local services provided in Poland
|
||||
|
||||
1. Co-op Banks (Missing in dataset)
|
||||
2. Commerce Banks (Art 70) (found in ci_creditServices_article70.json)
|
||||
3. Joint Stock Companies (Missing in dataset)
|
||||
4. Register of Loan Institution (xls) (Missing in dataset)
|
||||
|
||||
|
||||
Cross Border Activities provided in EEA
|
||||
- found in creditServices.json and associated firm files
|
||||
|
||||
Can you confirm whether you would be covering these missing items ?
|
||||
|
||||
|
||||
|
||||
|
||||
The data I made available at that point was an incomplete subset of the data to allow you to get started with the importer.
|
||||
|
||||
Co-op banks data and Joint Sock companies, these data sets appear to be just contact data.
|
||||
|
||||
The register of Loan Institution xls downloader was completed after I made the data available.
|
||||
|
||||
|
11
DIR-3384 Portugal/commit.md
Normal file
11
DIR-3384 Portugal/commit.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3384 Extend OBDFCASCRAPE to download Portugal NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Portugal data scraped
|
||||
|
||||
* Data uploaded to S3
|
||||
|
||||
* Tests created
|
||||
|
||||
* Docker container updated to include Portugal runner
|
29
DIR-3527 Malta V2/commit.md
Normal file
29
DIR-3527 Malta V2/commit.md
Normal file
@ -0,0 +1,29 @@
|
||||
DIR-3527 Rework OBDFCASCRAPE Malta NCA data
|
||||
|
||||
# Summary
|
||||
|
||||
* Test data updated with latest versions of the html
|
||||
|
||||
* Page indexer updated
|
||||
|
||||
* Entity processors updated
|
||||
|
||||
* Some of the new source data is potentially broken, had to put in measures to handle the broken data.
|
||||
|
||||
* Tests passing
|
||||
|
||||
|
||||
```
|
||||
# MALTA:: Scrape a Credit Instititute
|
||||
# Malta::Extract Details from Page 1
|
||||
ok 1 Extracted Details from Page
|
||||
# Malta::Extract Details from Page 2
|
||||
ok 2 Extracted Details from Page
|
||||
# Malta::Extract Details from Page 3
|
||||
ok 3 Extracted Details from Page
|
||||
# Malta::Extract Details with bullet points
|
||||
ok 4 Extracted Details with bullet points Page
|
||||
# Malta::Extract Details fom a posibly broken page
|
||||
ok 5 Extracted Details with bullet points Page
|
||||
|
||||
```
|
51
DIR-3698 DKV2/Note 2019-04-09T10.39.10.md
Normal file
51
DIR-3698 DKV2/Note 2019-04-09T10.39.10.md
Normal file
@ -0,0 +1,51 @@
|
||||
Note 2019-04-09T10.39.10
|
||||
========================
|
||||
|
||||
How to access the Danish information on PI
|
||||
|
||||
This url - https://virksomhedsregister.finanstilsynet.dk/index-en.html takes you to the main company register page. From this select the [Export] button / area under the section "Other Options".
|
||||
|
||||
Note - I have already selected the English variant of the page (top of page Dansk to English toggle).
|
||||
|
||||
Note - the furthest I can preload the query to, is to the to get the export selection page, next page, thereb y cutting out this first step. However, I can not presload the search attributes.
|
||||
|
||||
Note - In the old table, I identified two PI values to run. I have only found one in the new list
|
||||
|
||||
|
||||
Use the URL https://virksomhedsregister.finanstilsynet.dk/listeudtr%C3%A6k-en.html to open the export page and make the following selections.
|
||||
Note - You can perform a multiple select within fields
|
||||
|
||||
Select:
|
||||
List 1 - betalingstjeneste området = Payment Service Area
|
||||
List 2 - Betalingsinstitutter = Payment Institutions
|
||||
List 2 - Udbyder af betalingstjenester med begraenset tilladelse = Provider of limited payment services
|
||||
|
||||
The searches are dynamic linked lists, in that as you select each higher level list the lower level list will refine, until you perform the search (select the magnifying glass at the bottom of the search window).
|
||||
|
||||
|
||||
Emoney
|
||||
---
|
||||
|
||||
use the URL https://virksomhedsregister.finanstilsynet.dk/listeudtr%C3%A6k-en.html to open the export page and make the following selections.
|
||||
Note - You can perform a multiple select within fields
|
||||
|
||||
Select:
|
||||
|
||||
List 1 - betalingstjeneste området = Payment Service Area
|
||||
List 2 - E-penge-institutter = E money Institutions
|
||||
List 2 - Udbyder af elektroniske penge med begraenset tilladelse = Provider of electronic money with limited permission
|
||||
|
||||
The searches are dynamic linked lists, in that as you select each higher level list the lower level list will refine, until you perform the search (select the magnifying glass at the bottom of the search window).
|
||||
|
||||
|
||||
CS
|
||||
---
|
||||
|
||||
use the URL https://virksomhedsregister.finanstilsynet.dk/listeudtr%C3%A6k-en.html to open the export page and make the following selections.
|
||||
Note - You can perform a multiple select within fields
|
||||
|
||||
Select:
|
||||
List 1 - Kreditinsti Området = Credit Institution
|
||||
List 2 - pengeinstitutter = Banks
|
||||
|
||||
The searches are dynamic linked lists, in that as you select each higher level list the lower level list will refine, until you perform the search (select the magnifying glass at the bottom of the search window).
|
9
DIR-3698 DKV2/commit.md
Normal file
9
DIR-3698 DKV2/commit.md
Normal file
@ -0,0 +1,9 @@
|
||||
DIR-3698 Extend OBDFCASCRAPE to be able to download Danish NCA data V2
|
||||
|
||||
# Summary
|
||||
|
||||
* Scraper re-written to work with Danish graphical website
|
||||
|
||||
* Danish XSLS files downloaded
|
||||
|
||||
* Data uploaded to S3
|
61
DIR-3709 Cron Fix/Note 2019-04-12T10.59.52.md
Normal file
61
DIR-3709 Cron Fix/Note 2019-04-12T10.59.52.md
Normal file
@ -0,0 +1,61 @@
|
||||
DIR-3709 FIX - Fixing CRON Restart issues
|
||||
========================
|
||||
|
||||
* ireland **Not neded **
|
||||
* netherlands ** DONE **
|
||||
* france **DONE**
|
||||
* cyprus ** DONE**
|
||||
* sweden **DONE**
|
||||
* germany **DONE**
|
||||
* italy **DONE**
|
||||
|
||||
* cz **DONE**
|
||||
* dk ** NOT NEEDED**
|
||||
* ee **DONE**
|
||||
* es **DONE**
|
||||
* gi **DONE**
|
||||
* gr ** NOT NEEDED***
|
||||
* lt **DONE**
|
||||
* lu **DONE**
|
||||
* lv **DONE**
|
||||
* mt **DONE**
|
||||
* no **DONE**
|
||||
* pl **DONE**
|
||||
* sk **DONE**
|
||||
|
||||
Blocked 5 additional trackers on Lithuania
|
||||
Lux is broken because the source page ext app is broken
|
||||
|
||||
|
||||
|
||||
| 5 | Cyprus | CY | Done | 00:01:07.651 |
|
||||
|
||||
```
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async attachEvents() {
|
||||
|
||||
/*
|
||||
|
||||
await this._initBrowser();
|
||||
await this._createBrowserPage();
|
||||
|
||||
this.page.on('domcontentloaded', this._throttle(async () => {
|
||||
this.processNewPage().catch((err) => {
|
||||
logger.error('processNewPage fail', err);
|
||||
});
|
||||
}, 2500));
|
||||
|
||||
if (this.eventNames().length === 1)
|
||||
await this.attachEvents();
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
```
|
11
DIR-3709 Cron Fix/commit.md
Normal file
11
DIR-3709 Cron Fix/commit.md
Normal file
@ -0,0 +1,11 @@
|
||||
DIR-3709 FIX - Fixing CRON Restart issues
|
||||
|
||||
# Summary
|
||||
|
||||
* ALL - Scraper object attachment has been moved out of the start function into attachEvents. Events now only attached once
|
||||
|
||||
* LT - Blocked 5 additional trackers on Lithuania
|
||||
|
||||
* LU - Lux is broken because the source page ext app is broken
|
||||
|
||||
* MT - Form modified to prevent entity pages opening in separate tab
|
12
DIR-3711 SK Fix/commit.md
Normal file
12
DIR-3711 SK Fix/commit.md
Normal file
@ -0,0 +1,12 @@
|
||||
DIR-3711 Error Scaping Solvakia website
|
||||
|
||||
# Summary
|
||||
|
||||
* Fixed section picker to not use text matching to select, avoids language issues
|
||||
|
||||
* Added watches for content to be loaded before proceeding
|
||||
|
||||
* Added new method of exanding accordians
|
||||
|
||||
* Added new main expandible selector
|
||||
|
28
DIR-3716 /Note 2019-04-25T11.24.38.md
Normal file
28
DIR-3716 /Note 2019-04-25T11.24.38.md
Normal file
@ -0,0 +1,28 @@
|
||||
Note 2019-04-25T11.24.38
|
||||
========================
|
||||
|
||||
```
|
||||
|
||||
const pageUrl = url.parse(await this.page.url());
|
||||
|
||||
|
||||
if (pageUrl.href === 'chrome-error://chromewebdata/') {
|
||||
logger.warn('Directed to: chrome-error://chromewebdata/');
|
||||
this.emit('recover');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// clear out stock recover handler
|
||||
|
||||
this.removeAllListeners('recover');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
9
Index.md
Normal file
9
Index.md
Normal file
@ -0,0 +1,9 @@
|
||||
Task Index
|
||||
========================
|
||||
|
||||
DIR-3370 OBDFCASCRAPE Chore - Updated functionality trickle down
|
||||
|
||||
Euan Wilson <euan.wilson@plexusrs.com>
|
||||
Aaron Cox <A.Cox@roc-search.com>
|
||||
Johnny Grill <johnny.grill@damiagroup.com>
|
||||
Gavin Marriott <gavin.marriott@gcsrecruitment.com>
|
167
NCA Scraper TimeLine.md
Normal file
167
NCA Scraper TimeLine.md
Normal file
@ -0,0 +1,167 @@
|
||||
NCA Scraper TimeLine
|
||||
========================
|
||||
|
||||
Done
|
||||
---
|
||||
* Ireland
|
||||
* Netherlands
|
||||
* France
|
||||
* Cyprus
|
||||
* Sweden
|
||||
* Germany
|
||||
* Malta (started, so will finish)
|
||||
* Czech Republic (started, so will finish)
|
||||
* Italy
|
||||
* Luxemburg
|
||||
* Slovakia
|
||||
* Portugal
|
||||
|
||||
* Poland
|
||||
|
||||
|
||||
New List
|
||||
===
|
||||
| ↕️ | Country | ISO | Status | Scrape Duration |
|
||||
|--- |---|---|---| --- |
|
||||
| 1 | UK | UK | ? | |
|
||||
| 2 | IRELAND | IE | Done | 00:01:46.208 |
|
||||
| 3 | Netherlands | NL | Done | 7.5 hours |
|
||||
| 4 | France | FR | Done | 1.5 hours |
|
||||
| 5 | Cyprus | CY | Done | 00:01:07.651 |
|
||||
| 6 | Sweden | SE | Done | 45m |
|
||||
| 7 | Germany | DE | Fixed DIR-3651 | 4 hours |
|
||||
| 8 | Italy | IT | Done | 5 hours |
|
||||
| 9 | EBA REgister | | ? | |
|
||||
| 10 | Luxembourg | LU | Done DIR-3376 | |
|
||||
| 11 | Poland | PL | Done DIR-3380 | 24h-ish |
|
||||
| 12 | Portugal | PT | Done DIR-3384 | |
|
||||
| 13 | Slovakia | SK | Done DIR-3164 | |
|
||||
| **14** | **Denmark** | **DK** | **IN PROGRESS** | |
|
||||
| 15 | *Hungary* | *HU* | *BLOCKED* | |
|
||||
| 16 | Finland | | *Waiting on JA* | |
|
||||
| 17 | Norway | NO | Done DIR-3200 | |
|
||||
| 18 | Lithunia | LT | Done DIR-3178 | 00:26:46.050 |
|
||||
| 19 | Latvia | LV | DIR-3182 | 00:12:04.342 |
|
||||
| 20 | Estonia | EE | DIR-3128 | 7 Hours |
|
||||
| 21 | Gibraltar | | PATRICK | |
|
||||
| 22 | Belgium | | PATRICK | |
|
||||
| 23 | Greece | | PATRICK | |
|
||||
| 24 | Malta | MT | RE-Done DIR-3527 | |
|
||||
| 25 | Czech Republic | CZ | Done | |
|
||||
| 26 | Bulgaria | | Patrick | |
|
||||
| 27 | Slovenia | | ? | |
|
||||
| 28 | Austria | | ? | |
|
||||
| 29 | Romania | | ? | |
|
||||
| 30 | Croatia | | ? | |
|
||||
| 31 | Spain | ES | Patrick | |
|
||||
| 32 | Iceland | | Not yet | ? |
|
||||
| 33 | Liechtenstein | | Not yet | ? |
|
||||
| 34 | Isle Of Man | | Not yet | ? |
|
||||
| 35 | Jersey | | Not yet | ? |
|
||||
| 36 | Guernsey | | Not yet | ? |
|
||||
|
||||
First release:
|
||||
===
|
||||
* ireland
|
||||
* netherlands
|
||||
* france
|
||||
* cyprus
|
||||
* sweden
|
||||
* germany
|
||||
* italy
|
||||
|
||||
|
||||
"IE_CRON",
|
||||
"NL_CRON",
|
||||
"FR_CRON",
|
||||
"CY_CRON",
|
||||
"SE_CRON",
|
||||
"DE_CRON",
|
||||
"IT_CRON",
|
||||
|
||||
IE_CRON = ["00 00 * * *"]
|
||||
NL_CRON = ["00 00 * * *"]
|
||||
FR_CRON = ["00 1 * * *"]
|
||||
CY_CRON = ["00 00 * * *"]
|
||||
SE_CRON = ["5 0 * * *"]
|
||||
DE_CRON = ["00 00 * * *"]
|
||||
IT_CRON = ["10 1 * * *"]
|
||||
|
||||
|
||||
|
||||
⚠️ ℹ️
|
||||
|
||||
|
||||
|
||||
|
||||
16th January release (Pre-Production)
|
||||
---
|
||||
Note: delayed by 2 weeks due to new infrastructure build
|
||||
|
||||
PPE R4-FCA Data
|
||||
|
||||
NCA data available in Pre-Production
|
||||
|
||||
* FCA
|
||||
* Ireland
|
||||
* Netherlands
|
||||
* France
|
||||
* Cyprus
|
||||
* Sweden
|
||||
* FCA Data Viewer
|
||||
* FCA passporting out data entry enabled via Data Viewer
|
||||
|
||||
29th January NCA releases (Pre-Production)
|
||||
---
|
||||
(Need to schedule a release for Sandbox for whats available)
|
||||
Prod R5-NCA Data
|
||||
|
||||
NCA data will become available in Pre-Production as they are delivered:
|
||||
|
||||
* Germany
|
||||
* Malta (started, so will finish)
|
||||
* Czech Republic (started, so will finish)
|
||||
* Italy
|
||||
* EBA Register
|
||||
* Luxemburg
|
||||
* Poland
|
||||
* Portugal
|
||||
* Slovakia
|
||||
|
||||
|
||||
26th February NCA releases (Pre-Production)
|
||||
---
|
||||
PPE R6-NCA Data
|
||||
|
||||
NCA data will become available in Pre-Production as they are delivered:
|
||||
|
||||
Denmark
|
||||
Estonia
|
||||
Finland
|
||||
Hungary
|
||||
Belgium
|
||||
Greece
|
||||
NCA ingestion for P19
|
||||
|
||||
|
||||
NCA countries that have not transposed:
|
||||
|
||||
Spain
|
||||
Norway
|
||||
Iceland
|
||||
Liechtenstein
|
||||
Gibraltar
|
||||
|
||||
added extra:
|
||||
|
||||
* Bulgaria
|
||||
* Austria
|
||||
* Sloveina
|
||||
* Romania
|
||||
|
||||
Office
|
||||
31.221.31.169
|
||||
|
||||
Dev2A 34.252.229.121
|
||||
Dev2B 52.19.175.233
|
||||
Dev2C 52.19.175.233
|
216
Note 2019-01-28T11.14.10.md
Normal file
216
Note 2019-01-28T11.14.10.md
Normal file
@ -0,0 +1,216 @@
|
||||
```
|
||||
|
||||
const cheerio = require('cheerio');
|
||||
const path = require('path');
|
||||
const jsonfile = require('jsonfile');
|
||||
const removeAccents = require('remove-accents-diacritics');
|
||||
const logger = require('log4js').getLogger('SK');
|
||||
const url = require('url');
|
||||
|
||||
logger.level = process.env.LOGGER_LEVEL || 'warn';
|
||||
|
||||
class SKScrape extends Scraper {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.id = 'SK';
|
||||
|
||||
this.on('done', () => {
|
||||
this._done();
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV === 'production')
|
||||
this._checkLock().then((l) => {
|
||||
if(l)
|
||||
this.run();
|
||||
});
|
||||
}
|
||||
|
||||
async processNewPage() {
|
||||
// give the page a few seconds to settle
|
||||
await this._randomWait(this.page, 3, 5);
|
||||
|
||||
const pageUrl = url.parse(await this.page.url());
|
||||
|
||||
switch (pageUrl.pathname) {
|
||||
|
||||
case '/en/our-registers/company-register/':
|
||||
await this.indexRedirector();
|
||||
break;
|
||||
|
||||
case '/en/our-registers/company-register/details':
|
||||
await this.processRedirector();
|
||||
break;
|
||||
case '/en/our-registers/company-register/gransoverskridandehandel/':
|
||||
await this.crossBorderRedirector();
|
||||
break;
|
||||
|
||||
default:
|
||||
if (process.env.NODE_ENV) {
|
||||
await this._uploadError();
|
||||
throw new Error(`Unknown page: ${pageUrl}`);
|
||||
}
|
||||
else {
|
||||
logger.warn('processNewPage Fell through');
|
||||
logger.warn('currentPage.location', pageUrl);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async start() {
|
||||
super._start();
|
||||
try {
|
||||
this.mode = 0;
|
||||
|
||||
this.paymentServices = {
|
||||
'items': 0,
|
||||
'links': [],
|
||||
'step': 0,
|
||||
'indexStep': 0,
|
||||
'visited': false,
|
||||
'done' : false,
|
||||
'urls': ['https://www.mfsa.com.mt/pages/licenceholders.aspx'],
|
||||
'sections' : [],
|
||||
'sectionLinks' : []
|
||||
};
|
||||
|
||||
this.emoneyServices = {
|
||||
'items': 0,
|
||||
'links': [],
|
||||
'step': 0,
|
||||
'indexStep': 0,
|
||||
'visited': false,
|
||||
'done' : false,
|
||||
'urls': [],
|
||||
'sections' : [],
|
||||
'sectionLinks' : []
|
||||
};
|
||||
|
||||
this.creditServices = {
|
||||
'items': 0,
|
||||
'links': [],
|
||||
'step': 0,
|
||||
'indexStep': 0,
|
||||
'visited': false,
|
||||
'done' : false,
|
||||
'searchDone' : false,
|
||||
'started': false,
|
||||
'urls': [],
|
||||
'sections' : [],
|
||||
'sectionLinks' : []
|
||||
};
|
||||
|
||||
this.startPage = this.paymentServices.urls[0];
|
||||
this.emoneyUrl = this.emoneyServices.urls[0];
|
||||
this.credit = this.creditServices.urls[0];
|
||||
|
||||
this.setPath(path.resolve(`${__dirname }/../artefacts/MT/MFSA`));
|
||||
|
||||
// await this._doNonRepudiation();
|
||||
|
||||
await this._initBrowser(false);
|
||||
this.page = await this.browser.newPage();
|
||||
|
||||
this.page.on('domcontentloaded', () => {
|
||||
this.processNewPage();
|
||||
});
|
||||
|
||||
this.on('entityComplete', () => {
|
||||
this.handleEntityComplete();
|
||||
});
|
||||
|
||||
this.on('serviceDone', async function() {
|
||||
switch (this.mode) {
|
||||
|
||||
case 0:
|
||||
this.emit('paymentServicesDone');
|
||||
break;
|
||||
|
||||
case 1:
|
||||
this.emit('emoneyServicesDone');
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this.emit('creditServicesDone');
|
||||
break;
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
this.on('paymentServicesDone', async function() {
|
||||
logger.warn('paymentServicesDone');
|
||||
try{
|
||||
this.paymentServices.done = true;
|
||||
jsonfile.writeFileSync(`${this.path}/paymentServices.json`, { 'links': this.paymentServices.links });
|
||||
jsonfile.writeFileSync(`${this.debugPath}/paymentServices.json`, this.paymentServices);
|
||||
|
||||
this.mode++;
|
||||
this.inProgress = false;
|
||||
|
||||
await this._goto(this.emoneyServices.urls[0]);
|
||||
}
|
||||
catch (e) {
|
||||
logger.error(e);
|
||||
}
|
||||
});
|
||||
|
||||
this.on('emoneyServicesDone', async function() {
|
||||
logger.warn('emoneyServicesDone');
|
||||
try{
|
||||
this.emoneyServices.done = true;
|
||||
jsonfile.writeFileSync(`${this.path}/emoneyServices.json`, { 'links':this.emoneyServices.links });
|
||||
jsonfile.writeFileSync(`${this.debugPath}/emoneyServices.json`, this.emoneyServices);
|
||||
this.mode++;
|
||||
this.inProgress = false;
|
||||
|
||||
await this._goto(this.creditServices.urls[0]);
|
||||
}
|
||||
catch (e) {
|
||||
logger.error(e);
|
||||
}
|
||||
});
|
||||
|
||||
this.on('creditServicesDone', async function() {
|
||||
logger.warn('creditServicesDone');
|
||||
try{
|
||||
this.creditServices.done = true;
|
||||
jsonfile.writeFileSync(`${this.path}/creditServices.json`, { 'links':this.creditServices.links });
|
||||
jsonfile.writeFileSync(`${this.debugPath}/creditServices.json`, this.creditServices);
|
||||
this.mode++;
|
||||
this.inProgress = false;
|
||||
|
||||
this.emit('done');
|
||||
}
|
||||
catch (e) {
|
||||
logger.error(e);
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
|
||||
await this.page.setViewport({ 'width': 1200, 'height': 800 });
|
||||
await this._goto(this.startPage, { 'waitUntil':'networkidle0' });
|
||||
|
||||
await this._randomWait(this.page, 3, 5);
|
||||
}
|
||||
catch(e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
}
|
||||
|
||||
async run() {
|
||||
await this.start();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = SKScrape;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
25
Note 2019-01-31T12.25.17.md
Normal file
25
Note 2019-01-31T12.25.17.md
Normal file
@ -0,0 +1,25 @@
|
||||
Note 2019-01-31T12.25.17
|
||||
========================
|
||||
|
||||
1. Tjänster kontantinsättning på betalkonto
|
||||
|
||||
|
||||
2. Tjänster kontantuttag från betalkonto
|
||||
|
||||
3. Genomförande av betaltransaktioner
|
||||
a) Inlåning
|
||||
b) Genomföra betaltransaktioner
|
||||
c) Insättning/uttag betalkonto
|
||||
|
||||
4. Genomförande av betaltransaktioner gm kreditutrymme
|
||||
a) Inlösa transaktionsbelopp
|
||||
b) Ge ut betalningsinstrument/lösa in transaktionsbelopp
|
||||
c) Genomföra betalningstransaktioner genom kreditutrymme
|
||||
|
||||
5. Utfärdande och/eller förvärvande av betalningsinstrument
|
||||
|
||||
6. Penningöverföring
|
||||
|
||||
7. Betalningsinitieringstjänster
|
||||
|
||||
8. Kontoinformationstjänster
|
3
Note 2019-03-19T12.00.59.md
Normal file
3
Note 2019-03-19T12.00.59.md
Normal file
@ -0,0 +1,3 @@
|
||||
Note 2019-03-19T12.00.59
|
||||
========================
|
||||
|
3
Note 2019-04-15T14.30.06.md
Normal file
3
Note 2019-04-15T14.30.06.md
Normal file
@ -0,0 +1,3 @@
|
||||
Note 2019-04-15T14.30.06
|
||||
========================
|
||||
|
63
OB AWS.md
Normal file
63
OB AWS.md
Normal file
@ -0,0 +1,63 @@
|
||||
OB AWS
|
||||
========================
|
||||
|
||||
```
|
||||
|
||||
Hi Martin
|
||||
|
||||
OB AWS account
|
||||
|
||||
https://rax-e4bacea2ff104e308293609ef5cbcb9d.signin.aws.amazon.com/console
|
||||
|
||||
username: martin.donnelly
|
||||
password: tE2MKv\D9A4fRo$K
|
||||
|
||||
group: arn:aws:iam::608578871059:group/DevReadOnly
|
||||
|
||||
Please enable MFA when logged in.
|
||||
|
||||
Thanks
|
||||
|
||||
Seán
|
||||
|
||||
|
||||
```
|
||||
|
||||
Switch role
|
||||
|
||||
```
|
||||
account: 482681734622
|
||||
|
||||
role: OB_ReadOnly_Role
|
||||
|
||||
|
||||
|
||||
RS Development
|
||||
rsdev
|
||||
openbankng.cc
|
||||
openbanking.xyz
|
||||
|
||||
https://rax-b7a6c98d9ab74eecaae6d4d92b5cd3cb.signin.aws.amazon.com/console
|
||||
|
||||
```
|
||||
|
||||
OB_Developer_Role @ 4957-6850-3152
|
||||
|
||||
```
|
||||
PreProduction 495768503152 OB_Developer_Role
|
||||
Development 482681734622 OB_Developer_Role
|
||||
Production 024762423152 OB_Developer_Role
|
||||
|
||||
|
||||
if $( echo $ENVNAME | grep -q "mgmt" ); then
|
||||
ROLE_ARN=arn:aws:iam::608578871059:role/OB_DevOps_Role
|
||||
SESSION_NAME=MGMT
|
||||
elif $( echo $ENVNAME | grep -q "dev" ); then
|
||||
ROLE_ARN=arn:aws:iam::482681734622:role/OB_DevOps_Role
|
||||
SESSION_NAME=DEV
|
||||
elif $( echo $ENVNAME | grep -q "preprod" ); then
|
||||
ROLE_ARN=arn:aws:iam::495768503152:role/OB_DevOps_Role
|
||||
SESSION_NAME=PREPROD
|
||||
elif $( echo $ENVNAME |
|
||||
|
||||
```
|
31
Worklog.md
Normal file
31
Worklog.md
Normal file
@ -0,0 +1,31 @@
|
||||
Worklog
|
||||
========================
|
||||
|
||||
|
||||
##### 2018-11-05 // Monday #####
|
||||
|
||||
Started DIR-3059 Extend OBDFCASCRAPE to be able to download Cypriot NCA Credit Institute data
|
||||
|
||||
##### 2018-11-06 // Tuesday #####
|
||||
|
||||
Continuing with DIR-3059
|
||||
|
||||
**DONE** DIR-3059
|
||||
|
||||
##### 2018-11-06 // Tuesday #####
|
||||
|
||||
Started DIR-3089 Extend OBDFCASCRAPE to be able to upload Irish NCA data
|
||||
|
||||
|
||||
##### 2018-11-13 // Tuesday #####
|
||||
|
||||
Started DIR-3111 Extend OBDFCASCRAPE to download Swedish NCA data
|
||||
|
||||
|
||||
|
||||
|
||||
##### 2018-11-19 // Monday #####
|
||||
|
||||
**DONE** DIR-3111 Extend OBDFCASCRAPE to download Swedish NCA data
|
||||
|
||||
Started DIR-3159 Extend OBDFCASCRAPE to download Malta NCA data
|
160
archive/BRIDGE-588_update_paytostored_e2e_test.md
Normal file
160
archive/BRIDGE-588_update_paytostored_e2e_test.md
Normal file
@ -0,0 +1,160 @@
|
||||
BRIDGE-588_update_paytostored_e2e_test
|
||||
|
||||
# Summary
|
||||
|
||||
Update the pay-to-stored-worldpay-account.e2e.spec.js file with the new method of testing which uses e2e-helper.js
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Unit tests run and pass
|
||||
|
||||
```bash
|
||||
E2E: dev api Worldpay payment for saved merchant request
|
||||
tests with missing required parameters
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument parameters (60ms)
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no receiveInstrument parameters
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no amount parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no transactionDetails parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.payer parameters
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.payer.email parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.payer.firstName parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.payer.lastName parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card parameters
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.nameOnCard parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.PAN parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.expiryDate parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.address parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.address.address1 parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:25 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.address.town parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no paymentInstrument.card.address.postcode parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no transactionDetails.worldpay parameters
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with no receiving account encryption key
|
||||
bad data format tests
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with an invalid paymentInstrument email parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with an invalid payer first name parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with an invalid payer last name parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a bad card PAN parameter containing a letter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a bad card PAN parameter with a trailing space
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a bad character in the payment card expiry date parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a bad month number in the payment card expiry date parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted payment card start date parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a bad month number in the payment card start date parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted payment card issue number parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted payment card CV2 parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a card address line 1 too long
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a card address line 1 too short
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted card address line 2 parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted card address line 3 parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted card address town name parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted card address county name parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted card address postcode parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted card address phone number parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted order description parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted receiving account encryption key parameter
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a badly formatted amount value parameter
|
||||
- with a badly formatted instrument ID
|
||||
invalid card ID
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/aaaaaa/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a short card ID
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/zzzzzzzzzzzzzzzzzzzzzzzz/payments HTTP/1.1" 400 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ card ID with an invalid pattern
|
||||
Good parameter data tests
|
||||
[2018-03-23T10:42:26.532Z undefined (VIP undefined)] CRITICAL (mainDB.findOneObject) from System at 127.0.0.1: Database offline; cannot find object. TRIED TO FIND: {"_id":"deadbeefdeadbeefdeadbeef","UserID":"79a26d981246978135edadf1","AccountType":"Worldpay Online Payments Account"}
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 502 33 "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with the minimum set of correct parameters
|
||||
[2018-03-23T10:42:26.548Z undefined (VIP undefined)] CRITICAL (mainDB.findOneObject) from System at 127.0.0.1: Database offline; cannot find object. TRIED TO FIND: {"_id":"deadbeefdeadbeefdeadbeef","UserID":"79a26d981246978135edadf1","AccountType":"Worldpay Online Payments Account"}
|
||||
::ffff:127.0.0.1 - 79a26d981246978135edadf1 [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 502 33 "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ with a full set of correct parameters
|
||||
authorization
|
||||
::ffff:127.0.0.1 - - [23/Mar/2018:10:42:26 +0000] "POST /dev/v0/payment-instruments/worldpay-merchants/deadbeefdeadbeefdeadbeef/payments HTTP/1.1" 401 - "-" "node-superagent/3.8.2"
|
||||
|
||||
✓ is required to access the path
|
||||
|
||||
|
||||
45 passing (1s)
|
||||
1 pending
|
||||
```
|
41
archive/bridge-1001/atps.json
Normal file
41
archive/bridge-1001/atps.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"atpID": "5ae0593212b84e5d871e941e",
|
||||
"rtpID": "5ae0593212b84e5d871e941b",
|
||||
"payerID": "dc870f553840a414962875b3",
|
||||
"amount": {
|
||||
"value": 101,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"lastUpdate": "2018-04-25T10:32:19.049Z",
|
||||
"status": "Paid",
|
||||
"payerDetails": {
|
||||
"payer": {
|
||||
"email": "servertest1@comcarde.com",
|
||||
"firstName": "Server",
|
||||
"lastName": "Test"
|
||||
},
|
||||
"card": {
|
||||
"cardPAN": "4*** **** **** *111",
|
||||
"nameOnAccount": "Server Test"
|
||||
}
|
||||
},
|
||||
"payeeID": "79a26d981246978135edadf1",
|
||||
"payeeInstrument": {
|
||||
"ID": "5ae0593112b84e5d871e9418",
|
||||
"accountType": "Worldpay Online Payments Account",
|
||||
"description": "List ATPs for RTP test"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "create RTP for the user 79a26d981246978135edadf1 for List receivable Test"
|
||||
},
|
||||
"resultDetails": {
|
||||
"processorResponse": {
|
||||
"transactionID": "ea595e1d-869a-4d98-83b2-080d21a87087"
|
||||
}
|
||||
},
|
||||
"lastVersion": 4
|
||||
}
|
||||
]
|
||||
}
|
53
archive/bridge-1001/comment.md
Normal file
53
archive/bridge-1001/comment.md
Normal file
@ -0,0 +1,53 @@
|
||||
So I've been looking into this and I updated get-all-atps-for-rtp.spec.js with a new response test.
|
||||
|
||||
I pushed the following 'bad' data through as the response:
|
||||
|
||||
```
|
||||
{
|
||||
data: [
|
||||
{
|
||||
atpID: '5aeadbff0139b01a9ac983ea',
|
||||
rtpID: '5aeadbff0139b01a9ac983e7',
|
||||
payerID: '79a26d981246978135edadf1',
|
||||
amount: {
|
||||
value: 101,
|
||||
currency: 'GBP'
|
||||
},
|
||||
lastUpdate: '2018-05-03T09:53:03.746Z',
|
||||
status: 'Failed',
|
||||
payerDetails: {
|
||||
payer: {
|
||||
email: 'servertest1@comcarde.com',
|
||||
firstName: 'Server',
|
||||
lastName: 'Test'
|
||||
},
|
||||
card: {
|
||||
cardPAN: '4*** **** **** *111',
|
||||
nameOnAccount: 'Server Test'
|
||||
}
|
||||
},
|
||||
payeeID: 'dc870f553840a414962875b3',
|
||||
payeeInstrument: {
|
||||
accountType: 'Worldpay Online Payments Account'
|
||||
},
|
||||
transactionDetails: {
|
||||
orderDescription: 'create RTP for the user 79a26d981246978135edadf1 for List Test'
|
||||
},
|
||||
resultDetails: {
|
||||
errorDetails: {
|
||||
statusCode: 400,
|
||||
code: 538,
|
||||
info: 'Error processing payment',
|
||||
processorResponse: {
|
||||
customCode: 'BAD_REQUEST',
|
||||
message: 'Expiry date [1/2000] is in past'
|
||||
}
|
||||
}
|
||||
},
|
||||
lastVersion: 4
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Swagger was happy to accept this and didn't give me an error.
|
35
archive/bridge-1001/commit-message.md
Normal file
35
archive/bridge-1001/commit-message.md
Normal file
@ -0,0 +1,35 @@
|
||||
BRIDGE-1001 processorResponse inconsistent location
|
||||
|
||||
# Summary
|
||||
|
||||
If there was a WorldPay error when an ATP was being created, the ResultDetails were being included inside ErrorDetails.
|
||||
|
||||
* Swagger definition for ErrorDetails was updated to prevent anything other than the specified details being included.
|
||||
* get-all-atps-for-rtp.spec.js was updated to test that swagger prevents ResultDetails from appearing in ErrorDetails
|
||||
* controllers/atps/payables/create.js updated to move ProcessorResponse out of ErrorDetails and is now a child of ResultDetails
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
||||
* Run E2E: get All ATPs
|
||||
|
||||
Test Results
|
||||
|
||||
```
|
||||
E2E: get All ATPs PASSED
|
||||
ObjectID tests PASSED
|
||||
✓ Test with a valid objectID PASSED
|
||||
✓ Test objectID with an invalid pattern PASSED
|
||||
✓ Test objectID is too short PASSED
|
||||
✓ Test objectID is too long PASSED
|
||||
Invalid path PASSED
|
||||
✓ Test responds with 404 PASSED
|
||||
✓ Test responds with error PASSED
|
||||
Unauthorised access PASSED
|
||||
✓ Test responds with error PASSED
|
||||
Tests the response PASSED
|
||||
Response validation for 200 Get response PASSED
|
||||
✓ Test rejects a response with processorResponse in errorDetails PASSED
|
||||
✓ Test rejects an empty response PASSED
|
||||
9 Of 9 Passing
|
||||
```
|
37
archive/bridge-1001/failed.json
Normal file
37
archive/bridge-1001/failed.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"atpID": "5ae0599512b84e5d871e9498",
|
||||
"rtpID": "5ae0599412b84e5d871e9493",
|
||||
"payerID": "dc870f553840a414962875b3",
|
||||
"amount": {
|
||||
"value": 101,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"lastUpdate": "2018-04-25T10:33:57.083Z",
|
||||
"status": "Failed",
|
||||
"payerDetails": {
|
||||
"payer": {
|
||||
"email": "servertest1@comcarde.com",
|
||||
"firstName": "Server",
|
||||
"lastName": "Test"
|
||||
},
|
||||
"card": {
|
||||
"cardPAN": "4*** **** **** *111",
|
||||
"nameOnAccount": "Server Test"
|
||||
}
|
||||
},
|
||||
"payeeInstrument": {
|
||||
"accountType": "Unspecified"
|
||||
},
|
||||
"resultDetails": {
|
||||
"errorDetails": {
|
||||
"statusCode": 400,
|
||||
"code": 625,
|
||||
"info": "The RTP ID doesn't exist, is in the wrong state for the operation, the amount value is incorrect or you don't have permission to access it."
|
||||
}
|
||||
},
|
||||
"lastVersion": 3
|
||||
}
|
||||
]
|
||||
}
|
11144
archive/bridge-1001/rtps.json
Normal file
11144
archive/bridge-1001/rtps.json
Normal file
File diff suppressed because it is too large
Load Diff
17
archive/bridge-1001/temp.md
Normal file
17
archive/bridge-1001/temp.md
Normal file
@ -0,0 +1,17 @@
|
||||
"not": { "allOff": [ { "$ref" : "#/definitions/processor-response" } ] },
|
||||
|
||||
|
||||
|
||||
,
|
||||
"processorResponse" : "#/definitions/processor-response"
|
||||
|
||||
|
||||
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"x": { "type": "integer" }
|
||||
},
|
||||
"required": [ "x" ],
|
||||
"not": { "required": [ "z" ] }
|
||||
}
|
33
archive/bridge-1001/what.md
Normal file
33
archive/bridge-1001/what.md
Normal file
@ -0,0 +1,33 @@
|
||||
the processorResponse object is located in the ErrorDetails or in ResultDetails if there is no error.
|
||||
|
||||
should it just be in ResultsDetails if it exists?
|
||||
|
||||
example responses
|
||||
|
||||
"resultDetails": {
|
||||
"errorDetails": {
|
||||
"statusCode": 400,
|
||||
"code": 538,
|
||||
"info": "Error processing payment",
|
||||
"processorResponse": {
|
||||
"customCode": "BAD_REQUEST",
|
||||
"message": "Expiry date [1/2000] is in past"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"resultDetails": {
|
||||
"processorResponse": {
|
||||
"transactionID": "ca7dbb41-6c2c-4d00-a52a-126a4374248b"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
actually i think this is just a bug as the swagger model has processorResponse under resultsDetails.
|
||||
|
||||
resultDetails {
|
||||
errorDetails ErrorDetails{...}
|
||||
processorResponse processor-response{...}
|
||||
}
|
76
archive/bridge-1027/check-in-2.md
Normal file
76
archive/bridge-1027/check-in-2.md
Normal file
@ -0,0 +1,76 @@
|
||||
BRIDGE-1027 processorResponse not being populated on error
|
||||
|
||||
# Summary
|
||||
|
||||
Updating `list-atps-testcases.js` to allow a test of processorResponse
|
||||
|
||||
Added to `get-all-atps-for-rtp.spec.js` and it is also called in `list-atps-testcases.js`, and in a number of other tests.
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
||||
* Run E2E: get All ATPs
|
||||
* E2E: list ATPs for receivable RTP PASSED
|
||||
|
||||
Test Results
|
||||
|
||||
```
|
||||
E2E: get All ATPs PASSED
|
||||
ObjectID tests PASSED
|
||||
✓ Test with a valid objectID PASSED
|
||||
✓ Test objectID with an invalid pattern PASSED
|
||||
✓ Test objectID is too short PASSED
|
||||
✓ Test objectID is too long PASSED
|
||||
|
||||
Invalid path PASSED
|
||||
✓ Test responds with 404 PASSED
|
||||
✓ Test responds with error PASSED
|
||||
|
||||
Unauthorised access PASSED
|
||||
✓ Test responds with error PASSED
|
||||
|
||||
Tests the response PASSED
|
||||
Response validation for 200 Get response PASSED
|
||||
Accepts a `data` array with an ATP that PASSED
|
||||
✓ Test maps CARD payment which SUCCEEDS PASSED
|
||||
✓ Test maps CARD payment which FAILS_PAYMENT_PROCESSOR PASSED
|
||||
✓ Test maps CARD payment which FAILS_NO_RTP PASSED
|
||||
✓ Test maps CARD payment which FAILS_PAYMENT_BAD_REQUEST PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_FOUND payment which SUCCEEDS PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_FOUND payment which FAILS_PAYMENT_PROCESSOR PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_FOUND payment which FAILS_PAYMENT_BAD_REQUEST PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_NOT_FOUND payment which SUCCEEDS PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_NOT_FOUND payment which FAILS_NO_INSTRUMENT PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_NOT_FOUND payment which FAILS_NO_RTP PASSED
|
||||
|
||||
✓ Test rejects a response with processorResponse in errorDetails PASSED
|
||||
✓ Test rejects an empty response PASSED
|
||||
|
||||
19 Of 19 Passing
|
||||
|
||||
|
||||
E2E: list ATPs for receivable RTP PASSED
|
||||
Response validation for 200 OK responses PASSED
|
||||
Accepts a `data` array with an ATP that PASSED
|
||||
✓ Test maps CARD payment which SUCCEEDS PASSED
|
||||
✓ Test maps CARD payment which FAILS_PAYMENT_PROCESSOR PASSED
|
||||
✓ Test maps CARD payment which FAILS_NO_RTP PASSED
|
||||
✓ Test maps CARD payment which FAILS_PAYMENT_BAD_REQUEST PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_FOUND payment which SUCCEEDS PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_FOUND payment which FAILS_PAYMENT_PROCESSOR PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_FOUND payment which FAILS_PAYMENT_BAD_REQUEST PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_NOT_FOUND payment which SUCCEEDS PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_NOT_FOUND payment which FAILS_NO_INSTRUMENT PASSED
|
||||
✓ Test maps STORED_INSTRUMENT_NOT_FOUND payment which FAILS_NO_RTP PASSED
|
||||
|
||||
✓ Test accepts a response with an empty `data` array PASSED
|
||||
✓ Test rejects a response missing the `data` property PASSED
|
||||
✓ Test rejects a response with any extra properties PASSED
|
||||
|
||||
✓ Test rejects objectID with an invalid pattern PASSED
|
||||
✓ Test rejects objectID if too short PASSED
|
||||
✓ Test rejects objectID if too long PASSED
|
||||
|
||||
16 Of 16 Passing
|
||||
|
||||
```
|
0
archive/bridge-1027/check-in.md
Normal file
0
archive/bridge-1027/check-in.md
Normal file
0
archive/bridge-1027/recreate.md
Normal file
0
archive/bridge-1027/recreate.md
Normal file
0
archive/bridge-1027/what.md
Normal file
0
archive/bridge-1027/what.md
Normal file
11
archive/bridge-1138/checkin.md
Normal file
11
archive/bridge-1138/checkin.md
Normal file
@ -0,0 +1,11 @@
|
||||
BRIDGE-1138 Rule can be confirmed with different user / different payee instrument
|
||||
|
||||
# Summary
|
||||
|
||||
controllers/rules/activate.js Update was modified to search for {_id: ruleID, 'Rule.PayeeID': userID}, as the update was allowing anyone to confirm and activate any rule.
|
||||
|
||||
Updated controllers/rules/activate.spec.js
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
74
archive/bridge-1138/do.md
Normal file
74
archive/bridge-1138/do.md
Normal file
@ -0,0 +1,74 @@
|
||||
```
|
||||
Bearer YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1
|
||||
|
||||
```
|
||||
|
||||
Payee Account
|
||||
```
|
||||
|
||||
{
|
||||
"description": "Silver Carpenter Inc. account.",
|
||||
"receivingAccountServiceKey": "T_S_7c8551db-2aa0-489d-b80e-d1a8d42e4bfb"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
response:
|
||||
|
||||
{
|
||||
"key": "96ecc2d0-750d-452d-980b-2518cd5a34e0",
|
||||
"ID": "5afd9e0d9043d33a97cbbf95"
|
||||
}
|
||||
|
||||
|
||||
|
||||
credit card;
|
||||
|
||||
{
|
||||
"cardUsageKey": "69de2ccb-8e8d-421f-972d-86209d4862cc",
|
||||
"cardID": "5afd9e329043d33a97cbbf99"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Test oit works:
|
||||
|
||||
{
|
||||
"trigger": {
|
||||
"stage": "paymentComplete",
|
||||
"type": "ruleIdInRtp"
|
||||
},
|
||||
"rule": {
|
||||
"payerInstrument": {
|
||||
"ID": "5afd9e329043d33a97cbbf99",
|
||||
"key": "69de2ccb-8e8d-421f-972d-86209d4862cc"
|
||||
},
|
||||
"payeeID": "79a26d981246978135edadf1",
|
||||
"percentageShare": 2
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
1: do a proper one
|
||||
|
||||
{
|
||||
"ID": "5afda4269677c63b78a810a7"
|
||||
}
|
||||
|
||||
|
||||
Imporper one:
|
||||
|
||||
{
|
||||
"ID": "5afda59799d1553c66d41eae"
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
"cardUsageKey": "f7bdd4c3-65f2-4fe9-8d1b-0d5068c3d5b8",
|
||||
"cardID": "5afda5ce99d1553c66d41eb1"
|
||||
}
|
||||
|
||||
{
|
||||
"key": "f7bdd4c3-65f2-4fe9-8d1b-0d5068c3d5b8",
|
||||
"ID": "5afda5ce99d1553c66d41eb1"
|
||||
}
|
31
archive/bridge-1162/byhand.md
Normal file
31
archive/bridge-1162/byhand.md
Normal file
@ -0,0 +1,31 @@
|
||||
```
|
||||
Bearer YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1
|
||||
|
||||
```
|
||||
|
||||
Payee Account
|
||||
```
|
||||
|
||||
{
|
||||
"description": "Silver Carpenter Inc. account.",
|
||||
"receivingAccountServiceKey": "T_S_7c8551db-2aa0-489d-b80e-d1a8d42e4bfb"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
response:
|
||||
|
||||
{
|
||||
"key": "96ecc2d0-750d-452d-980b-2518cd5a34e0",
|
||||
"ID": "5afd9e0d9043d33a97cbbf95"
|
||||
}
|
||||
|
||||
|
||||
|
||||
credit card;
|
||||
|
||||
{
|
||||
"cardUsageKey": "69de2ccb-8e8d-421f-972d-86209d4862cc",
|
||||
"cardID": "5afd9e329043d33a97cbbf99"
|
||||
}
|
||||
|
10
archive/bridge-1162/commit.md
Normal file
10
archive/bridge-1162/commit.md
Normal file
@ -0,0 +1,10 @@
|
||||
BRIDGE-1163 - Rename rulesTriggerData to metaData
|
||||
|
||||
# Summary
|
||||
|
||||
* Replace all instances of metaData with metadata
|
||||
* Replace all instances of MetaData with Metadata
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
58
archive/bridge-1163/commit.md
Normal file
58
archive/bridge-1163/commit.md
Normal file
@ -0,0 +1,58 @@
|
||||
BRIDGE-1163 - Add description to rule
|
||||
|
||||
# Summary
|
||||
|
||||
* An orderDescription field was added to single-rule-create in Swagger.
|
||||
* Marked payerInstrument and payeeID as required fields in single-rule-create
|
||||
* Updated /specs/create-rule.e2e.spec.js to test for orderDescription & missing payerInstrument and payeeID
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
||||
* Run E2E: Create a rule
|
||||
|
||||
```
|
||||
E2E: Create a rule PASSED
|
||||
Tests the body PASSED
|
||||
Tests with missing required parameters PASSED
|
||||
|
||||
Missing paymentInstrument contents PASSED
|
||||
✓ Test with no payer instrument ID parameter PASSED
|
||||
✓ Test with no payer instrument key parameter PASSED
|
||||
|
||||
Missing Trigger PASSED
|
||||
✓ Test with no Trigger parameter PASSED
|
||||
|
||||
Missing Payment rules PASSED
|
||||
✓ Test with no Payment rules parameter PASSED
|
||||
|
||||
Missing Rule parameters PASSED
|
||||
✓ Test with no rule payerInstrument parameter PASSED
|
||||
✓ Test with no rule payeeID parameter PASSED
|
||||
|
||||
Bad data tests PASSED
|
||||
✓ Test with a badly formatted rule payer instrument ID parameter PASSED
|
||||
✓ Test with a badly formatted rule payer key parameter PASSED
|
||||
✓ Test with a badly formatted rule payeeID parameter PASSED
|
||||
✓ Test with a short rule payeeID parameter PASSED
|
||||
✓ Test with a long rule payeeID parameter PASSED
|
||||
✓ Test with a badly formatted rule percentageShare parameter PASSED
|
||||
✓ Test with a out of range rule percentageShare parameter PASSED
|
||||
✓ Test with a badly formatted Trigger Stage parameter PASSED
|
||||
✓ Test with a badly formatted Trigger Type parameter PASSED
|
||||
✓ Test with a long rule description parameter PASSED
|
||||
|
||||
Good parameter data tests PASSED
|
||||
✓ Test with a full set of correct parameters PASSED
|
||||
|
||||
Authorization PASSED
|
||||
✓ Test rejects invalid bearer token PASSED
|
||||
|
||||
Tests the response PASSED
|
||||
Response validation for 201 Created responses PASSED
|
||||
✓ Test returns a response with `valid` ID PASSED
|
||||
✓ Test rejects a response with `invalid` ID PASSED
|
||||
✓ Test rejects an empty response PASSED
|
||||
|
||||
21 Of 21 Passing
|
||||
```
|
1
archive/bridge-1163/wiki
Normal file
1
archive/bridge-1163/wiki
Normal file
@ -0,0 +1 @@
|
||||
┗ OrderDescription STRING Freeform description of the order, as will appear on receipts etc. Create Update 7.2
|
90
archive/bridge-646/acceptance.md
Normal file
90
archive/bridge-646/acceptance.md
Normal file
@ -0,0 +1,90 @@
|
||||
## Summary ##
|
||||
|
||||
As a user, I want to be able to redeem a receivecode, so that I can pay given credit or debit card (in the body of the request)
|
||||
|
||||
### Acceptance Criteria ###
|
||||
|
||||
1. User redeems receivecode with given credit or debit card (in the body of the request)
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I make a request to POST /payments/receivecode
|
||||
|
||||
And I have specified other details as per DONE (apart from payee details) in the request body
|
||||
|
||||
And I specify a receivecode string in the request body
|
||||
|
||||
And the receivecode exists
|
||||
|
||||
And the receivecode has not been redeemed
|
||||
|
||||
And the receivecode has not expired
|
||||
|
||||
And I specify a valid amount
|
||||
|
||||
And I specify a valid order description
|
||||
|
||||
Then the payment is processed as per BRIDGE-325
|
||||
|
||||
2. Receivecode does not exist
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I make a request to POST /payments/receivecode
|
||||
|
||||
And I have specified other details as per (apart from payee details) in the request body
|
||||
|
||||
And I specify a receivecode string in the request body
|
||||
|
||||
And the receivecode does not exist
|
||||
|
||||
Then the request fails with status 400
|
||||
|
||||
And the response body contains information about the failure
|
||||
|
||||
3. Receivecode has expired
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I make a request to POST /payments/receivecode
|
||||
|
||||
And I have specified other details as per DONE (apart from payee details) in the request body
|
||||
|
||||
And I specify a receivecode string in the request body
|
||||
|
||||
And the receivecode exists
|
||||
|
||||
And the receivecode has not been redeemed
|
||||
|
||||
And the receivecode has expired
|
||||
|
||||
Then the request fails with status 400
|
||||
|
||||
And the response body contains information about the failure
|
||||
|
||||
4. Receivecode has already been redeemed
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I make a request to POST /payments/receivecode
|
||||
|
||||
And I have specified other details as per DONE (apart from payee details) in the request body
|
||||
|
||||
And I specify a receivecode string in the request body
|
||||
|
||||
And the receivecode exists
|
||||
|
||||
And the receivecode has been redeemed
|
||||
|
||||
Then the request fails with status 400
|
||||
|
||||
5. Request should be logged
|
||||
|
||||
Given that I have made a request as per the other scenarios on this story
|
||||
|
||||
When the request is processed
|
||||
|
||||
Then compliance information about the request and response is logged to the database
|
||||
|
||||
6. Wiki should be updated
|
||||
|
53
archive/bridge-646/checkin_summary.md
Normal file
53
archive/bridge-646/checkin_summary.md
Normal file
@ -0,0 +1,53 @@
|
||||
# Summary
|
||||
|
||||
When redeeming a receiveCode, if PaymentDetails are passed through instead of a PaymentInstrument, then it should be processed as a new Credit / Credit card.
|
||||
|
||||
This revision connects the `receivecode_controller` to `pay-with-saved-details/redeem-receivecode/redeem.js`
|
||||
|
||||
# Details
|
||||
|
||||
`pay-with-saved-details/redeem-receivecode/redeem.js` was created to process using a receiveCode with new Payment Details instead of an exising Payment Instrument.
|
||||
|
||||
Unit tests were create to test this new functionality.
|
||||
|
||||
|
||||
# Test Plan:
|
||||
|
||||
* All unit tests run and pass
|
||||
* Test results for blah are:
|
||||
|
||||
```
|
||||
aquirers.worldpay.pay-directly.redeem-receivecode.redeem
|
||||
User redeems receivecode with given credit or debit card
|
||||
✓ it finds the receivecode and updates it from Pending to Payment Started
|
||||
✓ it decrypts the worldpay data
|
||||
✓ calls makePayment correctly
|
||||
✓ it deletes the receivecode
|
||||
✓ returns a success
|
||||
can't find the receivecode to update the Status to Paid
|
||||
✓ it finds the receivecode and updates it from Pending to Payment Started
|
||||
✓ it updates receivecode Status from Payment Started to Paid
|
||||
✓ it decrypts worldpay the data
|
||||
✓ it fails to make the payment
|
||||
✓ returns a success
|
||||
Worldpay rejects the payment
|
||||
✓ it finds the receivecode and updates it from Pending to Payment Started
|
||||
✓ it updates receivecode Status from Payment Started to Pending
|
||||
✓ it decrypts worldpay the data
|
||||
✓ it fails to make the payment
|
||||
✓ throws an error
|
||||
fails to update the receivecode Status to Paid
|
||||
✓ it finds the receivecode and updates it from Pending to Payment Started
|
||||
✓ it updates receivecode Status from Payment Started to Paid
|
||||
✓ it decrypts worldpay the data
|
||||
✓ it fails to make the payment
|
||||
✓ returns a success
|
||||
Failures
|
||||
can't find the receivecode instrument on DB
|
||||
✓ returns error
|
||||
|
||||
|
||||
21 passing (85ms)
|
||||
|
||||
|
||||
```
|
109
archive/bridge-646/dev.md
Normal file
109
archive/bridge-646/dev.md
Normal file
@ -0,0 +1,109 @@
|
||||
Re-authorise with :
|
||||
|
||||
```
|
||||
Bearer YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1
|
||||
|
||||
```
|
||||
|
||||
Red Taurus Details
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "080a89f1-1fde-4a24-ab9d-3de04a0bf9dc",
|
||||
"ID": "5ac231e56b7bdbf37d165370"
|
||||
}
|
||||
```
|
||||
|
||||
Codes
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "RWXSG"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
{
|
||||
"receivecode": "RWXSG",
|
||||
"payerInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"key": "00000000-0000-0000-0000-000000000000"
|
||||
},
|
||||
"paymentDetails": {
|
||||
payer: {
|
||||
email: 'a@b.com',
|
||||
firstName: 'John',
|
||||
lastName: 'Doe'
|
||||
},
|
||||
card: {
|
||||
CV2: undefined,
|
||||
nameOnCard: 'John E Doe',
|
||||
PAN: '4444 3333 2222 1111',
|
||||
expiryDate: '01-20',
|
||||
startDate: '01-00',
|
||||
issueNumber: 1,
|
||||
address: {
|
||||
address1: 'Flat 20',
|
||||
address2: 'Victoria House',
|
||||
address3: '15 The Street',
|
||||
town: 'Christchurch',
|
||||
county: 'Dorset',
|
||||
postcode: 'BH23 6AA',
|
||||
phoneNumber: '+44 123 1110000'
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"receivecode": "RWXSG",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
email: 'a@b.com',
|
||||
firstName: 'John',
|
||||
lastName: 'Doe'
|
||||
},
|
||||
card: {
|
||||
CV2: undefined,
|
||||
nameOnCard: 'John E Doe',
|
||||
PAN: '4444 3333 2222 1111',
|
||||
expiryDate: '01-20',
|
||||
startDate: '01-00',
|
||||
issueNumber: 1,
|
||||
address: {
|
||||
address1: 'Flat 20',
|
||||
address2: 'Victoria House',
|
||||
address3: '15 The Street',
|
||||
town: 'Christchurch',
|
||||
county: 'Dorset',
|
||||
postcode: 'BH23 6AA',
|
||||
phoneNumber: '+44 123 1110000'
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/Users/martin/.nvm/versions/node/v8.10.0/bin/node /Users/martin/dev/bridge-node-server/node_server/node_modules/mocha/bin/_mocha --file /Users/martin/dev/bridge-node-server/node_server/test/init_mocha.js --file /Users/martin/dev/bridge-node-server/node_server/tools/test/testGlobals.js --exit --reporter spec --ui bdd /Users/martin/dev/bridge-node-server/node_server/dev_api/controllers/acquirers/worldpay/pay-directly/redeem-receivecode/redeem.spec.js --grep "aquirers\.worldpay\.pay\-directly\.redeem\-receivecode\.redeem "
|
35
archive/bridge-646/payload.json
Normal file
35
archive/bridge-646/payload.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"receivecode": "RWXSG",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"card": {
|
||||
"CV2": undefined,
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444 3333 2222 1111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
0
archive/bridge-647/something.md
Normal file
0
archive/bridge-647/something.md
Normal file
467
archive/bridge-647/tests-dev.md
Normal file
467
archive/bridge-647/tests-dev.md
Normal file
@ -0,0 +1,467 @@
|
||||
# Acceptance Criteria #
|
||||
|
||||
The following acceptance criteria tests were performed on DEV.
|
||||
|
||||
### 1. User redeems receivecode with given credit or debit card ###
|
||||
|
||||
Authorise with :
|
||||
|
||||
```
|
||||
Bearer YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1
|
||||
|
||||
```
|
||||
|
||||
Create Worldpay Merchant
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "1ae580b2-0b9e-4864-a0f8-a4db14e4495a",
|
||||
"ID": "5ac3587872999f1ef044d2d5"
|
||||
}
|
||||
```
|
||||
|
||||
Create Receive Code
|
||||
|
||||
Using : `/receivecodes`
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "1ae580b2-0b9e-4864-a0f8-a4db14e4495a",
|
||||
"ID": "5ac3587872999f1ef044d2d5"
|
||||
}
|
||||
```
|
||||
|
||||
Response
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "SAE7K"
|
||||
}
|
||||
```
|
||||
|
||||
Redeem Receive Code using Credit card details
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "SAE7K",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"card": {
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444 3333 2222 1111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Server Response
|
||||
```json
|
||||
{
|
||||
"transaction": {
|
||||
"id": "714d09e0-bd85-4588-9ed9-444316030f1b"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### 2. Receivecode does not exist ###
|
||||
|
||||
Use non-existent receivecode: `F2EE5`
|
||||
|
||||
Redeem Receive Code using Credit card details
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "F2EE5",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"card": {
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444 3333 2222 1111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Server Response
|
||||
```json
|
||||
{
|
||||
"code": 608,
|
||||
"info": "The receivecode could not be found or has expired."
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 3. Receivecode has expired ###
|
||||
|
||||
Create Receive Code
|
||||
|
||||
Using : `/receivecodes`
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "1ae580b2-0b9e-4864-a0f8-a4db14e4495a",
|
||||
"ID": "5ac3587872999f1ef044d2d5"
|
||||
}
|
||||
```
|
||||
|
||||
Response
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "VPCHT"
|
||||
}
|
||||
```
|
||||
|
||||
Wait for 4 minutes
|
||||
|
||||
Redeem Receive Code using Credit card details
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "VPCHT",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"card": {
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444 3333 2222 1111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Server Response
|
||||
```json
|
||||
{
|
||||
"code": 608,
|
||||
"info": "The receivecode could not be found or has expired."
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Receivecode has already been redeemed ###
|
||||
|
||||
Create Receive Code
|
||||
|
||||
Using : `/receivecodes`
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "1ae580b2-0b9e-4864-a0f8-a4db14e4495a",
|
||||
"ID": "5ac3587872999f1ef044d2d5"
|
||||
}
|
||||
```
|
||||
|
||||
Response
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "HJ571"
|
||||
}
|
||||
```
|
||||
|
||||
Redeem Receive Code using Credit card details
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "HJ571",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"card": {
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444 3333 2222 1111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Server Response
|
||||
```json
|
||||
{
|
||||
"transaction": {
|
||||
"id": "1a553300-7bd4-4fc6-8f8b-23eccea76963"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Redeem Receive Code a second time using Credit card details
|
||||
|
||||
```json
|
||||
{
|
||||
"receivecode": "HJ571",
|
||||
"paymentDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"card": {
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444 3333 2222 1111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 1
|
||||
},
|
||||
"transactionDetails": {
|
||||
"worldpay": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Server Response
|
||||
```json
|
||||
{
|
||||
"code": 608,
|
||||
"info": "The receivecode could not be found or has expired."
|
||||
}
|
||||
```
|
||||
|
||||
### 5. Request should be logged ###
|
||||
|
||||
##### 1. User redeems receivecode with given credit or debit card #####
|
||||
|
||||
```json
|
||||
{
|
||||
"_id" : ObjectId("5ac35c6772999f1ef044d342"),
|
||||
"timestamp" : ISODate("2018-04-03T10:50:15.806Z"),
|
||||
"level" : "info",
|
||||
"message" : "Successful redeemed a receivecode",
|
||||
"meta" : {
|
||||
"logId" : "payments:receivecodes",
|
||||
"ip" : "62.232.80.210",
|
||||
"reqId" : "921e72ab-c093-4a8c-8bd7-14dff2dd83a2",
|
||||
"userId" : "79a26d981246978135edadf1",
|
||||
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
|
||||
"_payerDetailsPAN" : "4*** **** **** 22 1",
|
||||
"_receivecode" : "SAE7K",
|
||||
"_totalAmount" : 1,
|
||||
"_currency" : "GBP",
|
||||
"_worldpayOrderCode" : "714d09e0-bd85-4588-9ed9-444316030f1b",
|
||||
"_cardSchemeName" : "VISA CREDIT",
|
||||
"_riskScore" : "1"
|
||||
},
|
||||
"hostname" : "node01-cl01-cc"
|
||||
}
|
||||
```
|
||||
|
||||
##### 2. Receivecode does not exist #####
|
||||
|
||||
```json
|
||||
{
|
||||
"_id" : ObjectId("5ac35d1372999f1ef044d345"),
|
||||
"timestamp" : ISODate("2018-04-03T10:53:07.954Z"),
|
||||
"level" : "error",
|
||||
"message" : "Unsuccessful redeemed a receivecode",
|
||||
"meta" : {
|
||||
"logId" : "payments:receivecodes",
|
||||
"ip" : "62.232.80.210",
|
||||
"reqId" : "117d2f1b-0650-4f1b-811a-64ed4baef740",
|
||||
"userId" : "79a26d981246978135edadf1",
|
||||
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
|
||||
"_payerDetailsPAN" : "4*** **** **** 22 1",
|
||||
"_receivecode" : "F2EE5",
|
||||
"_totalAmount" : 1,
|
||||
"_currency" : "GBP",
|
||||
"_extraInfo" : {},
|
||||
"_internalError" : "Error: BRIDGE: INVALID RECEIVECODE",
|
||||
"_httpCode" : 400,
|
||||
"_info" : "The receivecode could not be found or has expired.",
|
||||
"_code" : 608
|
||||
},
|
||||
"hostname" : "node01-cl01-cc"
|
||||
}
|
||||
```
|
||||
|
||||
##### 3. Receivecode has expired #####
|
||||
|
||||
```json
|
||||
{
|
||||
"_id" : ObjectId("5ac35e9b72999f1ef044d355"),
|
||||
"timestamp" : ISODate("2018-04-03T10:59:39.994Z"),
|
||||
"level" : "error",
|
||||
"message" : "Unsuccessful redeemed a receivecode",
|
||||
"meta" : {
|
||||
"logId" : "payments:receivecodes",
|
||||
"ip" : "62.232.80.210",
|
||||
"reqId" : "c7d8c892-6946-4039-ab05-032deb3eea2f",
|
||||
"userId" : "79a26d981246978135edadf1",
|
||||
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
|
||||
"_payerDetailsPAN" : "4*** **** **** 22 1",
|
||||
"_receivecode" : "VPCHT",
|
||||
"_totalAmount" : 1,
|
||||
"_currency" : "GBP",
|
||||
"_extraInfo" : {},
|
||||
"_internalError" : "Error: BRIDGE: INVALID RECEIVECODE",
|
||||
"_httpCode" : 400,
|
||||
"_info" : "The receivecode could not be found or has expired.",
|
||||
"_code" : 608
|
||||
},
|
||||
"hostname" : "node01-cl01-cc"
|
||||
}
|
||||
```
|
||||
|
||||
##### 4. Receivecode has already been redeemed #####
|
||||
|
||||
First use:
|
||||
```json
|
||||
{
|
||||
"_id" : ObjectId("5ac35dda72999f1ef044d34e"),
|
||||
"timestamp" : ISODate("2018-04-03T10:56:26.800Z"),
|
||||
"level" : "info",
|
||||
"message" : "Successful redeemed a receivecode",
|
||||
"meta" : {
|
||||
"logId" : "payments:receivecodes",
|
||||
"ip" : "62.232.80.210",
|
||||
"reqId" : "2eeded01-fa80-4070-b422-b7fcf889d4c7",
|
||||
"userId" : "79a26d981246978135edadf1",
|
||||
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
|
||||
"_payerDetailsPAN" : "4*** **** **** 22 1",
|
||||
"_receivecode" : "HJ571",
|
||||
"_totalAmount" : 1,
|
||||
"_currency" : "GBP",
|
||||
"_worldpayOrderCode" : "1a553300-7bd4-4fc6-8f8b-23eccea76963",
|
||||
"_cardSchemeName" : "VISA CREDIT",
|
||||
"_riskScore" : "1"
|
||||
},
|
||||
"hostname" : "node01-cl01-cc"
|
||||
}
|
||||
```
|
||||
|
||||
Second use:
|
||||
```json
|
||||
{
|
||||
"_id" : ObjectId("5ac35e0472999f1ef044d351"),
|
||||
"timestamp" : ISODate("2018-04-03T10:57:08.340Z"),
|
||||
"level" : "error",
|
||||
"message" : "Unsuccessful redeemed a receivecode",
|
||||
"meta" : {
|
||||
"logId" : "payments:receivecodes",
|
||||
"ip" : "62.232.80.210",
|
||||
"reqId" : "0ee62f01-2e15-442c-a271-d11dbc2669fe",
|
||||
"userId" : "79a26d981246978135edadf1",
|
||||
"file" : "/home/flexops/node_server/dev_api/controllers/receivecode_controller.js",
|
||||
"_payerDetailsPAN" : "4*** **** **** 22 1",
|
||||
"_receivecode" : "HJ571",
|
||||
"_totalAmount" : 1,
|
||||
"_currency" : "GBP",
|
||||
"_extraInfo" : {},
|
||||
"_internalError" : "Error: BRIDGE: INVALID RECEIVECODE",
|
||||
"_httpCode" : 400,
|
||||
"_info" : "The receivecode could not be found or has expired.",
|
||||
"_code" : 608
|
||||
},
|
||||
"hostname" : "node01-cl01-cc"
|
||||
}
|
||||
```
|
110
archive/bridge-760/notes.js
Normal file
110
archive/bridge-760/notes.js
Normal file
@ -0,0 +1,110 @@
|
||||
"CreateRTPSucceededInfo": {
|
||||
"description": "RTP created successfully.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"requestToPayID": {"$ref": "#/definitions/uuid"}
|
||||
},
|
||||
"required": ["requestToPayID"]
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"CreateRTPSucceededInfo": {
|
||||
"description": "RTP created successfully.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"requestToPayID": {"$ref": "#/definitions/uuid"}
|
||||
},
|
||||
"required": ["requestToPayID"]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"paymentInstrumentList": {
|
||||
"type": "object",
|
||||
"description": "Successful listing",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/payment-instrument-list-item"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["data"]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"rtpList": {
|
||||
|
||||
"type": "object",
|
||||
"description": "Successful list",
|
||||
"properties": {
|
||||
"data" : {
|
||||
"type": "array",
|
||||
"items" : {
|
||||
"requestToPayID" : {"$ref": "#/definitions/uuid" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["requestToPayID"]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"payeeInstrument": {"$ref": "#/definitions/instrument-id-and-key"},
|
||||
"amount": {"$ref": "#/definitions/amount-value-currency-params"},
|
||||
"counterparty":{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"userID": {"$ref": "#/definitions/object-id"}
|
||||
},
|
||||
"required": ["userID"]
|
||||
},
|
||||
"transactionDetails": {"$ref": "#/definitions/transaction-details-params"}
|
||||
},
|
||||
"required": ["payeeInstrument", "amount", "counterparty", "transactionDetails" ]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"TransactionSucceededInfo": {
|
||||
"description": "A payment has been successfully made",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"transaction": {
|
||||
"description": "Contains the transaction ID",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"allOf": [
|
||||
{"$ref": "#/definitions/uuid"},
|
||||
{ "description": "Transaction Unique Identifier"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": ["transaction"]
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
22
archive/bridge-764/checkin_summary.md
Normal file
22
archive/bridge-764/checkin_summary.md
Normal file
@ -0,0 +1,22 @@
|
||||
BRIDGE-764 RTP E2E Get List test
|
||||
|
||||
# Summary
|
||||
|
||||
Tests the get RTP list
|
||||
|
||||
# Test Plan:
|
||||
|
||||
* All unit tests run and pass
|
||||
|
||||
* E2E tests run
|
||||
|
||||
```
|
||||
E2E: get RTP list
|
||||
|
||||
|
||||
✓ with a valid request (43ms)
|
||||
|
||||
|
||||
1 passing (556ms)
|
||||
|
||||
```
|
0
archive/bridge-764/error.txt
Normal file
0
archive/bridge-764/error.txt
Normal file
73
archive/bridge-764/get-rtp-list.e2e.spec.js
Normal file
73
archive/bridge-764/get-rtp-list.e2e.spec.js
Normal file
@ -0,0 +1,73 @@
|
||||
/**
|
||||
* @fileOverview End-to-end testing of the get RTP list swagger API
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
const _ = require('lodash');
|
||||
|
||||
const helper = require('../../utils/test/e2e-helper');
|
||||
|
||||
let app;
|
||||
|
||||
/**
|
||||
*
|
||||
* Test Values
|
||||
*
|
||||
*/
|
||||
|
||||
// INCorrect auth method (Bearer), correct token
|
||||
const TOKEN_INVALID = 'ZTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1';
|
||||
const HEADER_INVALID = 'Bearer ' + TOKEN_INVALID;
|
||||
|
||||
// Valid test data
|
||||
const correctParameters = {
|
||||
|
||||
};
|
||||
|
||||
let badParameters;
|
||||
|
||||
describe('E2E: get a list of RTP items', () => {
|
||||
/**
|
||||
* Load the dev API router to handle `/dev/*` routes
|
||||
*/
|
||||
before(() => {
|
||||
app = new helper.DevValidatorApp();
|
||||
app.setRequestPath('/dev/v0/rtps');
|
||||
});
|
||||
|
||||
// getAndValidate(expectedStatusCode, expectedErrors)
|
||||
//
|
||||
|
||||
describe('test with an incorrect parameter', () => {
|
||||
/*
|
||||
* Tests where required top level attributes are missing.
|
||||
* ======================================================
|
||||
*/
|
||||
|
||||
it('added id parameter', () => {
|
||||
/*
|
||||
* No receiving account service key
|
||||
*/
|
||||
badParameters = _.cloneDeep(correctParameters);
|
||||
|
||||
// badParameters.id = 0;
|
||||
return app.getAndValidate(badParameters, 400, [
|
||||
helper.errors.missingRequired('receivingAccountServiceKey')
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('authorization', () => {
|
||||
// eslint-disable-next-line mocha/no-hooks-for-single-case
|
||||
after(() => {
|
||||
// Reset the authorization header after these tests, whether they
|
||||
// pass or fail
|
||||
app.resetAuthorizationHeader();
|
||||
});
|
||||
|
||||
it('is required to access the path', () => {
|
||||
app.setRequestAuthorization(HEADER_INVALID);
|
||||
return app.postAndValidate(correctParameters, 401);
|
||||
});
|
||||
});
|
||||
});
|
103
archive/bridge-779/story.md
Normal file
103
archive/bridge-779/story.md
Normal file
@ -0,0 +1,103 @@
|
||||
Summary
|
||||
|
||||
As an Operator and creator of a request to pay, I want to cancel one my existing pending RTP's, so that I can prevent an RTP from continuing. I **CANNOT** cancel a RTP which is in a *PAID* or *UNKNOWN* state
|
||||
|
||||
Acceptance Criteria
|
||||
|
||||
1. Successfully cancel a pending RTP
|
||||
|
||||
**Given** there is an existing RTP where the PayeeID is my user id
|
||||
|
||||
*And* I have authorization to use Bridge
|
||||
|
||||
**When** I make a request to `DELETE /rtps/{id}`
|
||||
|
||||
*And* the RTP is in a pending state
|
||||
|
||||
**Then** RTP is marked in the database as cancelled
|
||||
|
||||
*And* the request succeeds with a 200 status code
|
||||
|
||||
*And* Subsequent calls to `GET /rtps/{id}` returns status code 400
|
||||
|
||||
*And* relevent missing error message
|
||||
|
||||
2. Invalid attempt to cancel RTP in non pending state
|
||||
|
||||
**Given** there is an existing RTP where the PayeeID is my user id
|
||||
|
||||
*And* I have authorization to use Bridge
|
||||
|
||||
**When** I make a request to `DELETE /rtps/{id}`
|
||||
|
||||
*And* the RTP is **NOT** in a pending state
|
||||
|
||||
**Then** The request fails with a 400 status code
|
||||
|
||||
*And* relevent error message
|
||||
|
||||
3. Invalid attempt to cancel with no ID
|
||||
|
||||
**Given** I have authorization to use Bridge
|
||||
|
||||
**When** I make a request to `DELETE /rtps`
|
||||
|
||||
**Then** The request fails with a 400 status code
|
||||
|
||||
*And* relevent error message
|
||||
|
||||
4. Invalid attempt to cancel RTP where I am **NOT** the Payee
|
||||
|
||||
**Given** there is an existing RTP where the PayeeID is **NOT** my user id
|
||||
|
||||
*And* I have authorization to use Bridge
|
||||
|
||||
**When** I make a request to `DELETE /rtps/{id}`
|
||||
|
||||
**Then** The request fails with a 400 status code
|
||||
|
||||
*And* relevent missing error message
|
||||
|
||||
5. Invalid attempt to cancel RTP that is already cancelled
|
||||
|
||||
**Given** there is an existing RTP where the PayeeID is my user id
|
||||
|
||||
*And* I have authorization to use Bridge
|
||||
|
||||
**When** I make a request to `DELETE /rtps/{id}`
|
||||
|
||||
*And* the RTP **IS** in a cancelled state
|
||||
|
||||
**Then** The request fails with a 400 status code
|
||||
|
||||
*And* relevent error message
|
||||
|
||||
6. Compliance Logging
|
||||
|
||||
**Given** that I have authorization to use Bridge
|
||||
|
||||
**When** I make a request to `DELETE /rtps/{id}`
|
||||
|
||||
**Then** Details of the request will be added to the compliance log.
|
||||
|
||||
*And* This should include (where possible):
|
||||
|
||||
* All standard fields in compliance log entries
|
||||
|
||||
* RTP id
|
||||
|
||||
* Success or failure of the update
|
||||
|
||||
7. The wiki is updated
|
||||
|
||||
|
||||
|
||||
|
||||
Swagger spec
|
||||
|
||||
E2E testing of swagger definition
|
||||
Implement controller
|
||||
Update wiki ( Logging Details )
|
||||
Create automated tests
|
||||
Run automated tests
|
||||
Manual testing
|
1248
archive/bridge-779/swagger.json
Normal file
1248
archive/bridge-779/swagger.json
Normal file
File diff suppressed because it is too large
Load Diff
59
archive/bridge-796/checkin-summary.md
Normal file
59
archive/bridge-796/checkin-summary.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Summary
|
||||
|
||||
When querying the database using `getByQuery`, it was interacting directly with the MongoCollection instead of going through mainDB. This meant there was no checking for the database existing or other error checking.
|
||||
|
||||
# Details
|
||||
|
||||
`findManyObjects` was added to mainDB.js as a way of querying the database for 1 or many results.
|
||||
The promise was added to `mainDB-promises.js`
|
||||
`getByQuery` was then modified to use the new `findManyObjects` function.
|
||||
The `getByQuery` test was updated to work correctly with the new method.
|
||||
|
||||
Unit tests were updated to test this new functionality.
|
||||
|
||||
The test for `getByUUID` which used `getByQuery` passed without any requirement for modification.
|
||||
|
||||
|
||||
# Test Plan:
|
||||
|
||||
* All unit tests run and pass
|
||||
* Test results for daoFactory are:
|
||||
|
||||
```
|
||||
daoFactory
|
||||
✓ requires a collection name
|
||||
✓ creates a factory
|
||||
functions
|
||||
createOne
|
||||
✓ pass args correctly
|
||||
✓ maps data correctly
|
||||
getByQuery
|
||||
calls getByQuery
|
||||
✓ pass args correctly
|
||||
getOneByQuery
|
||||
success
|
||||
✓ pass args correctly with ObjectId translation
|
||||
✓ maps data correctly
|
||||
fail
|
||||
✓ returns null if not found
|
||||
getOneByQueryAndDelete
|
||||
success
|
||||
✓ pass args correctly with ObjectId translation
|
||||
✓ maps data correctly
|
||||
fail
|
||||
✓ returns null if not found
|
||||
getOneByUUID
|
||||
calls getOneByQuery
|
||||
✓ pass args and adds _id to empty projection
|
||||
✓ pass args and adds _id to projection
|
||||
✓ maps data correctly
|
||||
getByUUID
|
||||
calls getByQuery
|
||||
✓ pass args correctly
|
||||
✓ maps data correctly
|
||||
|
||||
|
||||
16 passing (21ms)
|
||||
|
||||
|
||||
```
|
40
archive/bridge-796/stuff.md
Normal file
40
archive/bridge-796/stuff.md
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
{
|
||||
"description": "Glasgow Argon Ltd. account.",
|
||||
"receivingAccountServiceKey": "T_S_7c8551db-2aa0-489d-b80e-d1a8d42e4bfb"
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
"key": "1d4d0833-3875-44bc-baf8-d2b1ca757572",
|
||||
"ID": "5acc8ac5ebf5a808d4fff24d"
|
||||
}
|
||||
|
||||
|
||||
** create rtp
|
||||
|
||||
{
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "000000000000000000000000"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"payeeInstrument": {
|
||||
"key": "1d4d0833-3875-44bc-baf8-d2b1ca757572",
|
||||
"ID": "5acc8ac5ebf5a808d4fff24d"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
created
|
||||
|
||||
{
|
||||
"requestToPayID": "5acc8b1aebf5a808d4fff250"
|
||||
}
|
||||
|
70
archive/bridge-798/checkin-summary.md
Normal file
70
archive/bridge-798/checkin-summary.md
Normal file
@ -0,0 +1,70 @@
|
||||
BRIDGE-798 Update swagger definition
|
||||
|
||||
# Summary
|
||||
|
||||
Results being returned via a get to `/rtps` were not matching the swagger definition.
|
||||
|
||||
# Details
|
||||
|
||||
When an RTP was added, then the list of RTP's was requested using a GET to `/rtps`, the resulting data included `status` and `requestToPayID`. These were missing in the swagger definition.
|
||||
|
||||
#### Swagger Example Value
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "000000000000000000000000"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"payeeInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "Description of the payee Instrument"
|
||||
},
|
||||
"status": "Pending",
|
||||
"requestToPayID": "000000000000000000000000"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Updated Swagger output
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"requestToPayID": "5accb994c538630e5be1c5a4",
|
||||
"amount": {
|
||||
"value": 1,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"status": "Pending",
|
||||
"payeeInstrument": {
|
||||
"ID": "5acc8ac5ebf5a808d4fff24d",
|
||||
"description": "Glasgow Argon Ltd. account."
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "000000000000000000000000"
|
||||
},
|
||||
"lastUpdate": "2018-04-10T13:18:12.034Z",
|
||||
"lastVersion": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
# Test Plan:
|
||||
|
||||
* All unit tests run and pass
|
64
archive/bridge-798/errors.md
Normal file
64
archive/bridge-798/errors.md
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "000000000000000000000000"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"payeeInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "Description of the payee Instrument"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"requestToPayID": "5acc820887eb1c5237524843",
|
||||
"status": "Pending",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"requestToPayID": "5acc820887eb1c5237524843",
|
||||
"amount": {
|
||||
"value": 100,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"status": "Pending",
|
||||
"payeeInstrument": {
|
||||
"ID": "5acc820787eb1c5237524840",
|
||||
"description": "usertoday2"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "create RTP for the user 79a26d981246978135edadf3 "
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "79a26d981246978135edadf3"
|
||||
},
|
||||
"lastUpdate": "2018-04-10T09:21:12.537Z",
|
||||
"lastVersion": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Comments
|
35
archive/bridge-798/rerun.md
Normal file
35
archive/bridge-798/rerun.md
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "000000000000000000000000"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"payeeInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "Description of the payee Instrument"
|
||||
},
|
||||
"status": "Pending",
|
||||
"requestToPayID": "000000000000000000000000"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
}
|
||||
]
|
||||
}
|
33
archive/bridge-800/checkin-summary.md
Normal file
33
archive/bridge-800/checkin-summary.md
Normal file
@ -0,0 +1,33 @@
|
||||
|
||||
BRIDGE-800 Update swagger definition
|
||||
|
||||
# Summary
|
||||
|
||||
This updates the swagger so the user can list their payableRTP's by adding a new endpoint `/payables/rtps'
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Check the server starts ok
|
||||
* Check the /docs page shows the new paths
|
||||
* Check we can still carry out the operations from that page
|
||||
* Check the unit tests all run and pass
|
||||
|
||||
|
||||
|
||||
BRIDGE-800 Update swagger definition
|
||||
|
||||
# Summary
|
||||
|
||||
This updates the swagger and end-to-end tests for the existing `/rtps`
|
||||
paths to move them under `/receivables/rtps` to leave room for future
|
||||
development of `/payables/rtps` for the counterparty/payer side.
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Check the server starts ok
|
||||
* Check the /docs page shows the new paths
|
||||
* Check we can still carry out the operations from that page
|
||||
* Check the unit tests all run and pass
|
||||
|
||||
|
||||
|
72
archive/bridge-800/newstuff.md
Normal file
72
archive/bridge-800/newstuff.md
Normal file
@ -0,0 +1,72 @@
|
||||
acceptedPaymentTypes mayke it an array / enum
|
||||
|
||||
|
||||
|
||||
"amount": {"$ref": "#/definitions/amount-value-currency-params"},
|
||||
"counterparty": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"userID": {"$ref": "#/definitions/object-id"}
|
||||
},
|
||||
"required": ["userID"]
|
||||
},
|
||||
"transactionDetails": {"$ref": "#/definitions/transaction-details-params"}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "000000000000000000000000"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"status": "Pending",
|
||||
"requestToPayID": "000000000000000000000000",
|
||||
"payeeID": "000000000000000000000000"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"status": "Pending",
|
||||
"requestToPayID": "000000000000000000000000",
|
||||
"payeeID": "000000000000000000000000",
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
"paymentInstrumentType": {
|
||||
"data": [
|
||||
"Unspecified"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
||||
"paymentInstrumentType": "Unspecified"
|
1439
archive/bridge-800/swagger.json
Normal file
1439
archive/bridge-800/swagger.json
Normal file
File diff suppressed because it is too large
Load Diff
43
archive/bridge-801/checkin-summary.md
Normal file
43
archive/bridge-801/checkin-summary.md
Normal file
@ -0,0 +1,43 @@
|
||||
|
||||
BRIDGE-801 E2E Tests of Swagger Def
|
||||
|
||||
# Summary
|
||||
|
||||
This adds an E2E for testing the new swagger new endpoint `/payables/rtps'
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
||||
* Run E2E: get Payables RTP list
|
||||
|
||||
Test Results
|
||||
|
||||
```
|
||||
|
||||
E2E: get Payables RTP list
|
||||
|
||||
✓ with a valid request (39ms)
|
||||
|
||||
|
||||
1 passing (532ms)
|
||||
|
||||
|
||||
```
|
||||
|
||||
BRIDGE-800 Update swagger definition
|
||||
|
||||
# Summary
|
||||
|
||||
This updates the swagger and end-to-end tests for the existing `/rtps`
|
||||
paths to move them under `/receivables/rtps` to leave room for future
|
||||
development of `/payables/rtps` for the counterparty/payer side.
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Check the server starts ok
|
||||
* Check the /docs page shows the new paths
|
||||
* Check we can still carry out the operations from that page
|
||||
* Check the unit tests all run and pass
|
||||
|
||||
|
||||
|
42
archive/bridge-822/what.md
Normal file
42
archive/bridge-822/what.md
Normal file
@ -0,0 +1,42 @@
|
||||
As a user I want to pay an RTP in full (using stored or new instrument)
|
||||
|
||||
|
||||
Summary
|
||||
|
||||
As a user, I want to pay an RTP in full. This is an attempt to pay (ATP)
|
||||
|
||||
AC's
|
||||
|
||||
1. User successfully pays the RTP (ATP is successfull)
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per BRIDGE-284 (apart from payee details) in the request bodyAnd the RTP existsAnd the RTP is in the correct state (Status: Pending)And I specify the correct amount (the amount specified on the RTP)Then the payment is processed as per BRIDGE-325
|
||||
|
||||
2. I have supplied a saved payment instrument and the instrument ID is invalid
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is invalidThen the payment fails with status 400
|
||||
|
||||
3. I have supplied a saved payment instrument and the instrument does not belong to me
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument does not belong to meThen the payment fails with status 400
|
||||
|
||||
4. I have supplied a saved payment instrument and the encryption key is not correct
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the wrong encryption key in the request bodyThen the payment fails with status 401
|
||||
|
||||
5. the RTP does not exist
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per (apart from payee details) in the request bodyAnd the RTP doe not existThen the payment fails with status 400
|
||||
|
||||
6. The RTP is not in the Pending state
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per (apart from payee details) in the request bodyAnd the RTP existsAnd the RTP is not in the correct state (Status: Pending)Then the payment fails with status 400
|
||||
|
||||
7. The amount does not match the RTP's amount
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per (apart from payee details) in the request bodyAnd the RTP existsAnd the RTP is in the correct state (Status: Pending)And I specify the incorrect amount (the amount specified on the RTP)Then the payment fails with status 400
|
||||
|
||||
9. Request should be logged
|
||||
|
||||
Given that I have made a request as per the other scenarios on this storyWhen the request is processedThen compliance information about the request and response is logged to the database
|
||||
|
||||
10. Wiki should be updated
|
141
archive/bridge-826/step01.md
Normal file
141
archive/bridge-826/step01.md
Normal file
@ -0,0 +1,141 @@
|
||||
Re-authorise with :
|
||||
|
||||
```
|
||||
Bearer YTM2ZGQ1NzUtOWFmNS01MjMyLTg5MjYtM2NkZjA5ZDU2ZGU1
|
||||
|
||||
```
|
||||
|
||||
## step 1 ##
|
||||
|
||||
Payee Account?
|
||||
```
|
||||
|
||||
{
|
||||
"description": "Silver Carpenter Inc. account.",
|
||||
"receivingAccountServiceKey": "T_S_7c8551db-2aa0-489d-b80e-d1a8d42e4bfb"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
/payment-instruments/worldpay-merchants
|
||||
Save a worldpay receiving account.
|
||||
created instrument
|
||||
|
||||
```
|
||||
|
||||
{
|
||||
"key": "66ef4cd0-aa02-444f-b4bd-81cce3f6674e",
|
||||
"ID": "5ad9fde20a791abf542f8598"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## step 2 ##
|
||||
|
||||
/receivables/rtps
|
||||
Create a Request to Pay (RTP).
|
||||
```
|
||||
|
||||
{
|
||||
"amount": {
|
||||
"value": 100,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"counterparty": {
|
||||
"userID": "5ad9fe6c0a791abf542f859c"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "A can of juice"
|
||||
},
|
||||
"payeeInstrument": {
|
||||
"key": "66ef4cd0-aa02-444f-b4bd-81cce3f6674e",
|
||||
"ID": "5ad9fde20a791abf542f8598"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
That generates:
|
||||
|
||||
```
|
||||
{
|
||||
"requestToPayID": "5ad9fec20a791abf542f859f"
|
||||
}
|
||||
```
|
||||
|
||||
## step 3 ##
|
||||
|
||||
create a card
|
||||
/payment-instruments/cards
|
||||
Save card details.
|
||||
|
||||
```
|
||||
{
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "Bob",
|
||||
"lastName": "Minion"
|
||||
},
|
||||
"card": {
|
||||
"nameOnCard": "John E Doe",
|
||||
"PAN": "4444333322221111",
|
||||
"expiryDate": "01-20",
|
||||
"startDate": "01-00",
|
||||
"issueNumber": 1,
|
||||
"CV2": "134",
|
||||
"address": {
|
||||
"address1": "Flat 20",
|
||||
"address2": "Victoria House",
|
||||
"address3": "15 The Street",
|
||||
"town": "Christchurch",
|
||||
"county": "Dorset",
|
||||
"postcode": "BH23 6AA",
|
||||
"phoneNumber": "+44 123 1110000"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
created
|
||||
|
||||
{
|
||||
"cardUsageKey": "c1de7a81-2181-472d-b552-9a2e8aab9307",
|
||||
"cardID": "5ada05fa0a791abf542f85a9"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## step 4 ##
|
||||
|
||||
|
||||
`post /payables/rtps/5ad9fec20a791abf542f859f/atps`
|
||||
|
||||
```
|
||||
{
|
||||
"payerInstrument": {
|
||||
"ID": "5ada05fa0a791abf542f85a9",
|
||||
"key": "c1de7a81-2181-472d-b552-9a2e8aab9307"
|
||||
},
|
||||
"amount": {
|
||||
"value": 100,
|
||||
"currency": "GBP"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
result
|
||||
|
||||
```
|
||||
{
|
||||
"transaction": {
|
||||
"id": "1c63f278-edc7-47d9-ac3b-4574e9828a6f"
|
||||
},
|
||||
"additionalInfo": {
|
||||
"cardSchemeName": "VISA CREDIT",
|
||||
"riskScore": "1"
|
||||
},
|
||||
"atpID": "5ada06fc0a791abf542f85b9"
|
||||
}
|
||||
```
|
74
archive/bridge-826/tests.md
Normal file
74
archive/bridge-826/tests.md
Normal file
@ -0,0 +1,74 @@
|
||||
# Acceptance Criteria #
|
||||
|
||||
Summary
|
||||
|
||||
As a user, I want to pay an RTP in full. This is an attempt to pay (ATP)
|
||||
|
||||
The following acceptance criteria tests were performed on DEV.
|
||||
|
||||
### 1. User successfully pays the RTP (ATP is successfull) ###
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I make a request to POST /payables/rtps/{objectID}/atps
|
||||
|
||||
If the request body contains my saved card payment instrument ID
|
||||
|
||||
And the instrument ID is a valid ID for a saved card payment instrument
|
||||
|
||||
And the instrument belongs to me
|
||||
|
||||
And I have specified the corresponding encryption key in the request body
|
||||
|
||||
Or I have specified other details as per BRIDGE-284 (apart from payee details) in the request body
|
||||
|
||||
And the RTP existsAnd the RTP is in the correct state (Status: Pending)
|
||||
|
||||
And I specify the correct amount (the amount specified on the RTP)
|
||||
|
||||
Then the payment is processed as per BRIDGE-325
|
||||
|
||||
|
||||
|
||||
|
||||
Create a new worldpay merchant account using `/payment-instruments/worldpay-merchants`
|
||||
|
||||
Testing data:
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "66bbbe00-bd6c-4b34-8269-d19a041045a8",
|
||||
"ID": "5abcecc0de91bd75beb21a0e"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 2. I have supplied a saved payment instrument and the instrument ID is invalid ###
|
||||
|
||||
|
||||
|
||||
### 3. I have supplied a saved payment instrument and the instrument does not belong to me ###
|
||||
|
||||
|
||||
|
||||
### 4. I have supplied a saved payment instrument and the encryption key is not correct ###
|
||||
|
||||
|
||||
|
||||
### 5. the RTP does not exist ###
|
||||
|
||||
|
||||
|
||||
### 6. The RTP is not in the Pending state ###
|
||||
|
||||
|
||||
|
||||
### 7. The amount does not match the RTP's amount ###
|
||||
|
||||
|
||||
|
||||
### 8. Request should be logged ###
|
||||
|
||||
|
||||
|
42
archive/bridge-826/what.md
Normal file
42
archive/bridge-826/what.md
Normal file
@ -0,0 +1,42 @@
|
||||
As a user I want to pay an RTP in full (using stored or new instrument)
|
||||
|
||||
|
||||
Summary
|
||||
|
||||
As a user, I want to pay an RTP in full. This is an attempt to pay (ATP)
|
||||
|
||||
AC's
|
||||
|
||||
1. User successfully pays the RTP (ATP is successfull)
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per BRIDGE-284 (apart from payee details) in the request bodyAnd the RTP existsAnd the RTP is in the correct state (Status: Pending)And I specify the correct amount (the amount specified on the RTP)Then the payment is processed as per BRIDGE-325
|
||||
|
||||
2. I have supplied a saved payment instrument and the instrument ID is invalid
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is invalidThen the payment fails with status 400
|
||||
|
||||
3. I have supplied a saved payment instrument and the instrument does not belong to me
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument does not belong to meThen the payment fails with status 400
|
||||
|
||||
4. I have supplied a saved payment instrument and the encryption key is not correct
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the wrong encryption key in the request bodyThen the payment fails with status 401
|
||||
|
||||
5. the RTP does not exist
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per (apart from payee details) in the request bodyAnd the RTP doe not existThen the payment fails with status 400
|
||||
|
||||
6. The RTP is not in the Pending state
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per (apart from payee details) in the request bodyAnd the RTP existsAnd the RTP is not in the correct state (Status: Pending)Then the payment fails with status 400
|
||||
|
||||
7. The amount does not match the RTP's amount
|
||||
|
||||
Given that I am an authorised Bridge userWhen I make a request to POST /payables/rtps/{objectID}/atpsIf the request body contains my saved card payment instrument IDAnd the instrument ID is a valid ID for a saved card payment instrumentAnd the instrument belongs to meAnd I have specified the corresponding encryption key in the request bodyOr I have specified other details as per (apart from payee details) in the request bodyAnd the RTP existsAnd the RTP is in the correct state (Status: Pending)And I specify the incorrect amount (the amount specified on the RTP)Then the payment fails with status 400
|
||||
|
||||
9. Request should be logged
|
||||
|
||||
Given that I have made a request as per the other scenarios on this storyWhen the request is processedThen compliance information about the request and response is logged to the database
|
||||
|
||||
10. Wiki should be updated
|
68
archive/bridge-837/checkin-summary.md
Normal file
68
archive/bridge-837/checkin-summary.md
Normal file
@ -0,0 +1,68 @@
|
||||
BRIDGE-837 Swagger UI for list all ATPs where I am the payee
|
||||
|
||||
# Summary
|
||||
|
||||
As an operator I want to list all ATPs where I am the payee
|
||||
|
||||
This updates the swagger so the user can list their attempts to pay (ATP) where they are the payee.
|
||||
|
||||
Using `GET /receivables/atps`
|
||||
|
||||
### New Output
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"atpID": "000000000000000000000000",
|
||||
"rtpID": "000000000000000000000000",
|
||||
"payeeID": "000000000000000000000000",
|
||||
"payerID": "000000000000000000000000",
|
||||
"status": "Paid",
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"payeeInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "BloggsCo Inc. account.",
|
||||
"accountType": "Credit/Debit Payment Card"
|
||||
},
|
||||
"payerDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"payerInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "BloggsCo Inc. account.",
|
||||
"accountType": "Credit/Debit Payment Card"
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"resultDetails": {
|
||||
"errorDetails": {
|
||||
"statusCode": 200,
|
||||
"code": 1,
|
||||
"info": "Some error"
|
||||
},
|
||||
"processorResponse": {
|
||||
"transactionID": "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Check the server starts ok
|
||||
* Check the /docs page shows the new paths
|
||||
* Check we can still carry out the operations from that page
|
||||
* Check the unit tests all run and pass
|
35
archive/bridge-837/swagger
Normal file
35
archive/bridge-837/swagger
Normal file
@ -0,0 +1,35 @@
|
||||
When I call GET /receivables/atps
|
||||
|
||||
|
||||
|
||||
"/receivables/atps": {
|
||||
"x-swagger-router-controller": "receivable_atp_controller",
|
||||
"get": {
|
||||
"summary": "Gets a list ATP's which I am the payee",
|
||||
"description": "Return a list of Attempts to Pay (ATPs) for which I am the payee",
|
||||
"tags": [ "payments" ],
|
||||
"operationId": "listPayeeATPs",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Successfully list ATPs.",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"$ref": "#/definitions/atpList"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Validation failed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/badParametersInfo"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"$ref": "#/responses/GeneralError"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
34
archive/bridge-838/checkin-summary.md
Normal file
34
archive/bridge-838/checkin-summary.md
Normal file
@ -0,0 +1,34 @@
|
||||
BRIDGE-838 E2E Tests of Swagger Def
|
||||
|
||||
# Summary
|
||||
|
||||
* Updated test, simplified the authorisation test. Replaced the older method by using the e2e-helper.
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Run All tests
|
||||
* Run E2E: get All ATPs
|
||||
|
||||
Test Results
|
||||
|
||||
```
|
||||
|
||||
E2E: List all ATPs receivable for payee
|
||||
Valid path
|
||||
|
||||
✓ with a valid path
|
||||
|
||||
authorization
|
||||
|
||||
✓ is required to access the path
|
||||
|
||||
|
||||
2 passing (605ms)
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
61
archive/bridge-839/what.md
Normal file
61
archive/bridge-839/what.md
Normal file
@ -0,0 +1,61 @@
|
||||
As an operator I want to list all ATPs where I am the payee
|
||||
|
||||
Summary
|
||||
|
||||
As a User, I would like to be able to retrieve a list of my ATP's where I am the payee.
|
||||
|
||||
ACs
|
||||
|
||||
|
||||
|
||||
## 1. I see a list of ATP's where I am the payee
|
||||
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I call GET /receivables/atps
|
||||
|
||||
Then the request succeeds
|
||||
|
||||
And the request returns an array of the ATP's which I am the payee
|
||||
|
||||
|
||||
|
||||
## I do not see ATP's where I not am the payee
|
||||
|
||||
Given that I am an authorised Bridge user
|
||||
|
||||
When I call GET /receivables/atps
|
||||
|
||||
Then the request succeeds
|
||||
|
||||
And the request returns an array of the ATP's which I am the payee
|
||||
|
||||
And the array does not contain any ATP's which I am not the payee
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
"/receivables/atps": {
|
||||
"x-swagger-router-controller": "receivable_atp_controller",
|
||||
"get": {
|
||||
"summary": "Gets a list ATP's which I am the payee",
|
||||
"description": "Return a list of Attempts to Pay (ATPs) for which I am the payee",
|
||||
"tags": [ "payments" ],
|
||||
"operationId": "listPayeeATPs",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Successfully list ATPs.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/atpList"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"$ref": "#/responses/GeneralError"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
0
archive/bridge-844/swagger
Normal file
0
archive/bridge-844/swagger
Normal file
17
archive/bridge-844/what
Normal file
17
archive/bridge-844/what
Normal file
@ -0,0 +1,17 @@
|
||||
Summary
|
||||
|
||||
As a User, I would like to be able to retrieve the detail of one ATP where I am the payee.
|
||||
|
||||
AC's
|
||||
|
||||
1. I see the detail of the ATP
|
||||
|
||||
Given that I am an authorised Bridge userWhen I call GET receivables/atps/{objectID}And the ATP existsAnd my UserID is the same as the payee IDThen the request succeedsAnd the request returns an object containing the ATP which i requested.
|
||||
|
||||
2. The ATP does not exist
|
||||
|
||||
Given that I am an authorised Bridge userWhen I call GET receivables/atps/{objectID}And the ATP does not existThen the request failsWith Http code 400
|
||||
|
||||
3. My UserID does not match the payee ID
|
||||
|
||||
Given that I am an authorised Bridge userWhen I call GET receivables/atps/{objectID}And the ATP existsAnd my UserID is not the same as the payee IDThen the request failsWith Http code 400
|
130
archive/bridge-858/Untitled-15
Normal file
130
archive/bridge-858/Untitled-15
Normal file
@ -0,0 +1,130 @@
|
||||
GET /payables/rtps/{rtpID}/atps
|
||||
|
||||
|
||||
"/payables/rtps/{objectID}/atps"
|
||||
|
||||
|
||||
|
||||
|
||||
"get": {
|
||||
"summary": "Gets all Attempts to Pay (ATP) for a Request to Pay (RTP).",
|
||||
"description": "Return a list of Attempts to Pay (ATPs) for a specific Request to Pay (RTP)",
|
||||
"tags": [ "payments" ],
|
||||
"operationId": "listPayablesATP",
|
||||
"parameters": [
|
||||
{ "$ref": "#/parameters/objectID" }
|
||||
],
|
||||
"responses": {{
|
||||
"201": {
|
||||
"description": "Successfully list associated ATP.",
|
||||
"schema":{
|
||||
"allOf": [
|
||||
{"$ref": "#/definitions/TransactionSucceededInfo"},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rtpID": {"$ref": "#/definitions/object-id"}
|
||||
},
|
||||
"required": [ "rtpID" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Validation failed",
|
||||
"schema":{
|
||||
"allOf": [
|
||||
{"$ref": "#/definitions/badParametersInfo"},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rtpID": {"$ref": "#/definitions/object-id"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"description": "Invalid key",
|
||||
"schema":{
|
||||
"allOf": [
|
||||
{"$ref": "#/definitions/ErrorInfo"},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"atpID": {"$ref": "#/definitions/object-id"}
|
||||
},
|
||||
"required": [ "rtpID" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "General error response format",
|
||||
"schema":{
|
||||
"allOf": [
|
||||
{"$ref": "#/responses/GeneralError"},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"atpID": {"$ref": "#/definitions/object-id"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
succesfull payment attempts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"_id": ObjectId("0123456789abcdef01234567"),
|
||||
"RtpID": "0123456789abcdef01234567",
|
||||
"PayeeID": "0123456789abcdef01234567",
|
||||
"PayerID": "0123456789abcdef01234567",
|
||||
"PayeeInstrument": {
|
||||
"_id": ObjectId("0123456789abcdef01234567"),
|
||||
"AccountType": "Worldpay Online Payments Account",
|
||||
"Description": "BloggsCo Inc. account."
|
||||
},
|
||||
"PayerInstrument": {
|
||||
"Payer": {
|
||||
"Email": "a@example.com",
|
||||
"FirstName": "Joe",
|
||||
"LastName": "Bloggs"
|
||||
},
|
||||
"PayerInstrument": {
|
||||
"_id": ObjectId("0123456789abcdef01234567"),
|
||||
"AccountType": "Credit/Debit Payment Card",
|
||||
"Description": "My payment card"
|
||||
}
|
||||
},
|
||||
"Amount": {
|
||||
"Value": 220,
|
||||
"Currency": "GBP"
|
||||
},
|
||||
"TransactionDetails": {
|
||||
"OrderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"Status": "Paid",
|
||||
"ResultDetails": {
|
||||
"ProcessorResponse": {
|
||||
"StatusCode": 200,
|
||||
"TransactionID": "76ebfbaa-7cd9-4f01-bd18-a32681f33133",
|
||||
"RiskScore": 1
|
||||
}
|
||||
},
|
||||
"LastUpdate": ISODate("2018-04-06T10:20:38.014Z"),
|
||||
"LastVersion": 1
|
||||
}
|
||||
|
||||
|
||||
|
86
archive/bridge-858/check
Normal file
86
archive/bridge-858/check
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"_id": ObjectId("0123456789abcdef01234567"),
|
||||
"RtpID": "0123456789abcdef01234567",
|
||||
"PayeeID": "0123456789abcdef01234567",
|
||||
"PayerID": "0123456789abcdef01234567",
|
||||
"PayeeInstrument": {
|
||||
"_id": ObjectId("0123456789abcdef01234567"),
|
||||
"AccountType": "Worldpay Online Payments Account",
|
||||
"Description": "BloggsCo Inc. account."
|
||||
},
|
||||
"PayerInstrument": {
|
||||
"Payer": {
|
||||
"Email": "a@example.com",
|
||||
"FirstName": "Joe",
|
||||
"LastName": "Bloggs"
|
||||
},
|
||||
"PayerInstrument": {
|
||||
"_id": ObjectId("0123456789abcdef01234567"),
|
||||
"AccountType": "Credit/Debit Payment Card",
|
||||
"Description": "My payment card"
|
||||
}
|
||||
},
|
||||
"Amount": {
|
||||
"Value": 220,
|
||||
"Currency": "GBP"
|
||||
},
|
||||
"TransactionDetails": {
|
||||
"OrderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"Status": "Paid",
|
||||
"ResultDetails": {
|
||||
"ProcessorResponse": {
|
||||
"StatusCode": 200,
|
||||
"TransactionID": "76ebfbaa-7cd9-4f01-bd18-a32681f33133",
|
||||
"RiskScore": 1
|
||||
}
|
||||
},
|
||||
"LastUpdate": ISODate("2018-04-06T10:20:38.014Z"),
|
||||
"LastVersion": 1
|
||||
}
|
||||
|
||||
------------
|
||||
|
||||
{
|
||||
"atpID": "000000000000000000000000",
|
||||
"rtpID": "000000000000000000000000",
|
||||
"payeeID": "000000000000000000000000",
|
||||
"payerID": "000000000000000000000000",
|
||||
"status": "Pending",
|
||||
"lastUpdate": "2017-07-16T19:20:30.450Z",
|
||||
"lastVersion": 0,
|
||||
"payeeInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "Description of the payee Instrument",
|
||||
"accountType": "Credit/Debit Payment Card"
|
||||
},
|
||||
"payerDetails": {
|
||||
"payer": {
|
||||
"email": "a@b.com",
|
||||
"firstName": "John",
|
||||
"lastName": "Doe"
|
||||
},
|
||||
"payerInstrument": {
|
||||
"ID": "000000000000000000000000",
|
||||
"description": "Description of the payee Instrument",
|
||||
"accountType": "Credit/Debit Payment Card"
|
||||
}
|
||||
},
|
||||
"amount": {
|
||||
"value": 0,
|
||||
"currency": "GBP"
|
||||
},
|
||||
"transactionDetails": {
|
||||
"orderDescription": "2 Calling Birds, 1 Partridge in a Pear tree"
|
||||
},
|
||||
"resultDetails": {
|
||||
"errorDetails": {
|
||||
"statusCode": 200,
|
||||
"code": 1,
|
||||
"info": "Some error"
|
||||
},
|
||||
"processorResponse": {
|
||||
"transactionID": "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
}
|
||||
}
|
33
archive/bridge-858/checkin-summary.md
Normal file
33
archive/bridge-858/checkin-summary.md
Normal file
@ -0,0 +1,33 @@
|
||||
|
||||
BRIDGE-858 Update swagger definition
|
||||
|
||||
# Summary
|
||||
|
||||
This updates the swagger so the user can list their attempts to pay (ATP) for a specific RTP GET /payables/rtps/{rtpID}/atps
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Check the server starts ok
|
||||
* Check the /docs page shows the new paths
|
||||
* Check we can still carry out the operations from that page
|
||||
* Check the unit tests all run and pass
|
||||
|
||||
|
||||
|
||||
BRIDGE-800 Update swagger definition
|
||||
|
||||
# Summary
|
||||
|
||||
This updates the swagger and end-to-end tests for the existing `/rtps`
|
||||
paths to move them under `/receivables/rtps` to leave room for future
|
||||
development of `/payables/rtps` for the counterparty/payer side.
|
||||
|
||||
# Test Plan
|
||||
|
||||
* Check the server starts ok
|
||||
* Check the /docs page shows the new paths
|
||||
* Check we can still carry out the operations from that page
|
||||
* Check the unit tests all run and pass
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user