mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-13 13:01:27 +01:00
Make hurl tests work on GUI page requiring login (#35652)
* Adding hurl tests to Dolibarr * modifying run.sh to get it past commit checks * change the APIHEADER to be read from the environment * spell fix * test to see if build system will accept this file * deleting script method that doesn't work * beginning to make hurl tests accept environment variables for the location * Add GUI login to hurl tests * Fix CI * clean code (#35640) * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * clean code * Fix warning * Clean code * PHPStan > Update baseline (#35644) Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com> * NEW Can drag and drop in BOM card * WIP Upload files * WIP Upload files * Adding hurl tests to Dolibarr * using hostnport variable for all remaining tests * Add some asserts and gui login tests * double quotes around shell variables * adding -r to read * expand mass mail gui test with all 6 columns in the table --------- Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk> Co-authored-by: ldestailleur <eldy@destailleur.fr> Co-authored-by: Frédéric FRANCE <frederic34@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
This commit is contained in:
@@ -72,6 +72,7 @@ DoliStore modules must come with hurl tests.
|
|||||||
## Howto Usage
|
## Howto Usage
|
||||||
|
|
||||||
1. Create the .settings/ directory
|
1. Create the .settings/ directory
|
||||||
|
|
||||||
2. Set these environment variables to know how to authenticate and where to reach your Dolibarr installation
|
2. Set these environment variables to know how to authenticate and where to reach your Dolibarr installation
|
||||||
|
|
||||||
DOLAPIKEY="DOLAPIKEY: _replace_with_your_Dolibarr_Token_for_API_"
|
DOLAPIKEY="DOLAPIKEY: _replace_with_your_Dolibarr_Token_for_API_"
|
||||||
@@ -80,7 +81,11 @@ DoliStore modules must come with hurl tests.
|
|||||||
|
|
||||||
DOLIPORT="8080"
|
DOLIPORT="8080"
|
||||||
|
|
||||||
DOLISUBURL="/dolibarr" # if you're not just using / and no need to set /
|
DOLISUBURL="/dolibarr" # if your dolibarr is available at / - no need to set it
|
||||||
|
|
||||||
|
DOLIUSERNAME="foobar" # for GUI tests - if omitted, it will ask you
|
||||||
|
|
||||||
|
DOLIPASSWORD="topsecret" # for GUI tests - if omitted, it will ask you
|
||||||
|
|
||||||
3. On Linux and mac execute ./run.sh
|
3. On Linux and mac execute ./run.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Check status
|
# Check status
|
||||||
GET http://localhost:8080/api/index.php/setup/company
|
GET http://{{hostnport}}/api/index.php/setup/company
|
||||||
HTTP 200
|
HTTP 200
|
||||||
[Asserts]
|
[Asserts]
|
||||||
jsonpath "$.id" == 0 # Check the value of the id
|
jsonpath "$.id" == 0 # Check the value of the id
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Check status
|
# Check status
|
||||||
GET http://localhost:8080/api/index.php/setup/conf
|
GET http://{{hostnport}}/api/index.php/setup/conf
|
||||||
HTTP 200
|
HTTP 200
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Check status
|
# Check status
|
||||||
GET http://localhost:8080/api/index.php/setup/modules
|
GET http://{{hostnport}}/api/index.php/setup/modules
|
||||||
HTTP 200
|
HTTP 200
|
||||||
[Asserts]
|
[Asserts]
|
||||||
jsonpath "$" count > 2
|
jsonpath "$" count > 2
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Check status
|
# Check status
|
||||||
GET http://localhost:8080/api/index.php/status
|
GET http://{{hostnport}}/api/index.php/status
|
||||||
HTTP 401
|
HTTP 401
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# Check status
|
# Check status
|
||||||
GET http://localhost:8080/api/index.php/status
|
GET http://{{hostnport}}/api/index.php/status
|
||||||
HTTP 200
|
HTTP 200
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
# Check status
|
# Check login page
|
||||||
GET http://localhost:8080/
|
GET http://{{hostnport}}/
|
||||||
HTTP 200
|
HTTP 200
|
||||||
|
[Asserts]
|
||||||
|
body contains "Enter login details"
|
||||||
|
body not contains "<!-- Show logo on menu -->"
|
||||||
|
|||||||
6
test/hurl/gui/10_HOME.hurl
Normal file
6
test/hurl/gui/10_HOME.hurl
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Check login page
|
||||||
|
GET http://{{hostnport}}/
|
||||||
|
HTTP 200
|
||||||
|
[Asserts]
|
||||||
|
body not contains "Enter login details"
|
||||||
|
body contains "<!-- Show logo on menu -->"
|
||||||
12
test/hurl/gui/comm/mailing/10_mailing.hurl
Normal file
12
test/hurl/gui/comm/mailing/10_mailing.hurl
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Check mailing
|
||||||
|
GET http://{{hostnport}}/comm/mailing/list.php?leftmenu=mailing
|
||||||
|
HTTP 200
|
||||||
|
[Asserts]
|
||||||
|
body not contains "Enter login details"
|
||||||
|
body contains "Mass EMails"
|
||||||
|
body contains "Ref."
|
||||||
|
body contains "Title"
|
||||||
|
body contains "Creation date"
|
||||||
|
body contains "No. of EMails"
|
||||||
|
body contains "Date of latest sending"
|
||||||
|
body contains "Status"
|
||||||
9
test/hurl/gui/save_login_cookie.hurl
Normal file
9
test/hurl/gui/save_login_cookie.hurl
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Check status
|
||||||
|
GET http://{{hostnport}}/
|
||||||
|
HTTP 200
|
||||||
|
[Captures]
|
||||||
|
token: xpath "normalize-space(//meta[@name='anti-csrf-newtoken']/@content)"
|
||||||
|
|
||||||
|
# Check status
|
||||||
|
POST http://{{hostnport}}/index.php?token={{token}}&actionlogin=login&loginfunction=loginfunction&username={{username}}&password={{password}}
|
||||||
|
HTTP 200
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
GET http://localhost:8080/public/onlinesign/newonlinesign.php
|
GET http://{{hostnport}}/public/onlinesign/newonlinesign.php
|
||||||
HTTP 400
|
HTTP 400
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
GET http://localhost:8080/public/payment/newpayment.php
|
GET http://{{hostnport}}/public/payment/newpayment.php
|
||||||
HTTP 200
|
HTTP 200
|
||||||
`Bad parameters - amount or source`
|
`Bad parameters - amount or source`
|
||||||
|
|||||||
@@ -24,12 +24,13 @@ if [[ -z ${DOLAPIKEY+x} ]]; then
|
|||||||
echo "DOLAPIKEY bash variable is unset, no API tests that require authentication"
|
echo "DOLAPIKEY bash variable is unset, no API tests that require authentication"
|
||||||
else
|
else
|
||||||
echo "Now we are ready to run API tests that do require authentication"
|
echo "Now we are ready to run API tests that do require authentication"
|
||||||
find api/ -type f -iname '10*.hurl' -not -iname '00*.hurl' -exec hurl --header "${DOLAPIKEY}" --test "{}" \;
|
find api/ -type f -iname '10*.hurl' -not -iname '00*.hurl' -exec hurl --variable "hostnport=${hostnport}" --header "${DOLAPIKEY}" --test "{}" \;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z ${GUIHEADER+x} ]]; then
|
./save_login_cookie.sh
|
||||||
echo "GUIHEADER bash variable is unset, no GUI tests that require authentication"
|
if [[ -z ${COOKIEJAR+x} ]]; then
|
||||||
else
|
COOKIEJAR=/tmp/cookie.jar
|
||||||
echo "Now we are ready to run GUI tests that do require authentication"
|
|
||||||
find gui/ -type f -iname '10*.hurl' -not -iname '00*.hurl' -exec hurl --header "${GUIHEADER}" --test "{}" \;
|
|
||||||
fi
|
fi
|
||||||
|
echo "Now we are ready to run GUI tests that do require authentication"
|
||||||
|
find gui/ -type f -iname '10*.hurl' -not -iname 'save_login_cookie.hurl' -not -iname '00*.hurl' -exec hurl --variable "hostnport=${hostnport}" --cookie "${COOKIEJAR}" --test "{}" \;
|
||||||
|
rm -rf "${COOKIEJAR}"
|
||||||
|
|||||||
31
test/hurl/save_login_cookie.sh
Executable file
31
test/hurl/save_login_cookie.sh
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z ${DOLIHOST+x} ]]; then
|
||||||
|
DOLIHOST="localhost"
|
||||||
|
fi
|
||||||
|
hostnport="${DOLIHOST}"
|
||||||
|
if [[ -z ${DOLIPORT+x} ]]; then
|
||||||
|
hostnport="${hostnport}:8080"
|
||||||
|
else
|
||||||
|
hostnport="${hostnport}:${DOLIPORT}"
|
||||||
|
fi
|
||||||
|
if [[ -z ${DOLISUBURL+x} ]]; then
|
||||||
|
DOLISUBURL=""
|
||||||
|
fi
|
||||||
|
if [[ "" != "${DOLISUBURL}" ]]; then
|
||||||
|
hostnport="${hostnport}/${DOLISUBURL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z ${DOLIUSERNAME+x} ]]; then
|
||||||
|
read -rp "Your Dolibarr Username: " DOLIUSERNAME
|
||||||
|
fi
|
||||||
|
if [[ -z ${DOLIPASSWORD+x} ]]; then
|
||||||
|
read -rsp "Your Dolibarr Password: " DOLIPASSWORD
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z ${COOKIEJAR+x} ]]; then
|
||||||
|
COOKIEJAR=/tmp/cookie.jar
|
||||||
|
fi
|
||||||
|
|
||||||
|
hurl --variable "hostnport=${hostnport}" --variable "username=${DOLIUSERNAME}" --secret "password=${DOLIPASSWORD}" --test gui/save_login_cookie.hurl --cookie-jar "${COOKIEJAR}"
|
||||||
Reference in New Issue
Block a user