1111
1212use Codeception \Util \Fixtures ;
1313use OxidEsales \Codeception \Module \Translation \Translator ;
14+ use OxidEsales \Codeception \Page \Account \UserLogin ;
15+ use OxidEsales \Codeception \Page \Account \UserPasswordReminder ;
1416use OxidEsales \Codeception \Page \DataObject \ContactData ;
1517use OxidEsales \SecurityModule \Tests \Codeception \Support \AcceptanceTester ;
1618
2022 */
2123class HoneyPotCaptchaCest extends BaseCest
2224{
23- private string $ honeyPotInput = "lastname_confirm " ;
25+ private string $ honeyPotInput = 'lastname_confirm ' ;
26+ private string $ loginForm = 'main.content form[name="login"] ' ;
27+ private string $ loginBoxForm = 'header form[name="login"] ' ;
28+ private string $ newsletterForm = 'main.content form.needs-validation ' ;
29+ private string $ contactForm = 'main.content form.needs-validation ' ;
30+ private string $ registerForm = 'main.content form[name="order"] ' ;
31+ private string $ forgotPwdForm = 'main.content form[name="forgotpwd"] ' ;
2432
2533 public function _before (AcceptanceTester $ I ): void
2634 {
@@ -34,7 +42,9 @@ public function testHoneyPotCaptchaOnRegistrationPage(AcceptanceTester $I): void
3442 $ registrationPage = $ homePage ->openUserRegistrationPage ();
3543 $ userData = $ this ->getNewUserData ();
3644 $ this ->fillRegistrationForm ($ I , $ userData );
37- $ I ->executeJS ("document.querySelector('input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; " );
45+ $ I ->executeJS (
46+ "document.querySelector(' $ this ->registerForm input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; "
47+ );
3848 $ I ->retryClick ($ registrationPage ->saveFormButton );
3949
4050 $ I ->see (Translator::translate ('FORM_VALIDATION_FAILED ' ));
@@ -49,7 +59,9 @@ public function testHoneyPotCaptchaOnContactPage(AcceptanceTester $I): void
4959 $ contactData = new ContactData ();
5060 $ contactData ->setEmail ($ userData ['userLoginName ' ]);
5161 $ contactPage ->fillInContactData ($ contactData );
52- $ I ->executeJS ("document.querySelector('input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; " );
62+ $ I ->executeJS (
63+ "document.querySelector(' $ this ->contactForm input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; "
64+ );
5365 $ contactPage ->sendContactData ();
5466
5567 $ I ->see (Translator::translate ('FORM_VALIDATION_FAILED ' ));
@@ -62,12 +74,65 @@ public function testHoneyPotCaptchaOnNewsletterPage(AcceptanceTester $I): void
6274
6375 $ homePage = $ I ->openShop ();
6476 $ newsletterPage = $ homePage ->subscribeForNewsletter ($ userData ['userLoginName ' ]);
65- $ I ->executeJS ("document.querySelector('input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; " );
77+ $ I ->executeJS (
78+ "document.querySelector(' $ this ->newsletterForm input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; "
79+ );
6680 $ newsletterPage ->subscribe ();
6781
6882 $ I ->see (Translator::translate ('FORM_VALIDATION_FAILED ' ));
6983 }
7084
85+ public function testHoneyPotCaptchaOnLoginPage (AcceptanceTester $ I ): void
86+ {
87+ $ userData = Fixtures::get ('existingUser ' );
88+
89+ $ userLoginPage = new UserLogin ($ I );
90+ $ I ->amOnPage ($ userLoginPage ->URL );
91+ $ I ->see (Translator::translate ('LOGIN ' ));
92+
93+ $ I ->executeJS (
94+ "document.querySelector(' $ this ->loginForm input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; "
95+ );
96+ $ userLoginPage ->loginWithError ($ userData ['userLoginName ' ], $ userData ['userPassword ' ]);
97+
98+ $ I ->see (Translator::translate ('FORM_VALIDATION_FAILED ' ));
99+ }
100+
101+ public function testHoneyPotCaptchaOnLoginBox (AcceptanceTester $ I ): void
102+ {
103+
104+ $ userData = Fixtures::get ('existingUser ' );
105+
106+ $ homePage = $ I ->openShop ();
107+ $ accountMenu = $ homePage ->openAccountMenu ();
108+ $ I ->waitForText (Translator::translate ('FORGOT_PASSWORD ' ));
109+ $ I ->retryFillField ($ accountMenu ->userLoginName , $ userData ['userLoginName ' ]);
110+ $ I ->retryFillField ($ accountMenu ->userLoginPassword , $ userData ['userPassword ' ]);
111+ $ I ->executeJS (
112+ "document.querySelector(' $ this ->loginBoxForm input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; "
113+ );
114+ $ I ->retryClick ($ accountMenu ->userLoginButton );
115+ $ I ->waitForPageLoad ();
116+
117+ $ I ->see (Translator::translate ('FORM_VALIDATION_FAILED ' ));
118+ }
119+
120+ public function testHoneyPotCaptchaOnForgotPasswordPage (AcceptanceTester $ I ): void
121+ {
122+
123+ $ userData = Fixtures::get ('existingUser ' );
124+
125+ $ forgotPwdPage = new UserPasswordReminder ($ I );
126+ $ I ->amOnPage ($ forgotPwdPage ->URL );
127+
128+ $ I ->executeJS (
129+ "document.querySelector(' $ this ->forgotPwdForm input[name= \"$ this ->honeyPotInput \"]').value = 'some value'; "
130+ );
131+ $ forgotPwdPage ->resetPassword ($ userData ['userLoginName ' ]);
132+
133+ $ I ->see (Translator::translate ('FORM_VALIDATION_FAILED ' ));
134+ }
135+
71136 private function fillRegistrationForm (AcceptanceTester $ I , array $ userData )
72137 {
73138 foreach ($ userData ['inputFields ' ] as $ key => $ value ) {
0 commit comments