Skip to content

Commit c163aa2

Browse files
authored
ENGCOM-5764: [Integration] Adding the integration callback url validation #24434
2 parents df3787f + 891e2ad commit c163aa2

File tree

3 files changed

+64
-20
lines changed

3 files changed

+64
-20
lines changed

app/code/Magento/Integration/Block/Adminhtml/Integration/Edit/Tab/Info.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ protected function _addGeneralFieldset($form, $integrationData)
146146
'label' => __('Callback URL'),
147147
'name' => self::DATA_ENDPOINT,
148148
'disabled' => $disabled,
149+
'class' => 'validate-url',
149150
// @codingStandardsIgnoreStart
150151
'note' => __(
151152
'Enter URL where Oauth credentials can be sent when using Oauth for token exchange. We strongly recommend using https://.'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Integration\Test\Constraint;
8+
9+
use Magento\Integration\Test\Page\Adminhtml\IntegrationNew;
10+
use Magento\Integration\Test\Fixture\Integration;
11+
use Magento\Mtf\Constraint\AbstractConstraint;
12+
use PHPUnit\Framework\Assert;
13+
14+
/**
15+
* Assert validation error generated when saving integration with invalid callback url.
16+
*/
17+
class AssertUrlValidationErrorGenerated extends AbstractConstraint
18+
{
19+
/**
20+
* Assert validation error generated when saving integration with invalid email.
21+
*
22+
* @param IntegrationNew $integrationNew
23+
* @param Integration $integration
24+
* @return void
25+
*/
26+
public function processAssert(
27+
IntegrationNew $integrationNew,
28+
Integration $integration
29+
) {
30+
$errors = $integrationNew->getIntegrationForm()->getJsErrors("integration_info");
31+
$urlJsError = false;
32+
foreach ($errors as $error) {
33+
if (strpos($error, 'Please enter a valid URL.') !== false) {
34+
$urlJsError = true;
35+
break;
36+
}
37+
}
38+
Assert::assertTrue(
39+
$urlJsError,
40+
'Failed to validate callback url (' . $integration->getEndpoint() . ') when saving integration.'
41+
);
42+
}
43+
44+
/**
45+
* Returns a string representation of successful assertion.
46+
*
47+
* @return string
48+
*/
49+
public function toString()
50+
{
51+
return 'Callback url is properly validated when saving integration.';
52+
}
53+
}

dev/tests/functional/tests/app/Magento/Integration/Test/TestCase/CreateIntegrationEntityTest.xml

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,8 @@
4343
<data name="integration/data/identity_link_url" xsi:type="string">&lt;script&gt;alert(&apos;XSS&apos;)&lt;/script&gt;</data>
4444
<data name="integration/data/current_password" xsi:type="string">%current_password%</data>
4545
<data name="integration/data/resource_access" xsi:type="string">All</data>
46-
<constraint name="Magento\Integration\Test\Constraint\AssertNoAlertPopup" />
47-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessage" />
48-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationForm" />
49-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationInGrid" />
46+
<constraint name="Magento\Integration\Test\Constraint\AssertUrlValidationErrorGenerated" />
47+
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessageNotPresent" />
5048
</variation>
5149
<variation name="CreateIntegrationEntityTestVariation5" summary="Input fields with javascript tag" ticketId="MAGETWO-16819">
5250
<data name="integration/data/name" xsi:type="string">&lt;IMG SRC=javascript:alert(&apos;XSS-%isolation%&apos;)&gt;</data>
@@ -55,10 +53,8 @@
5553
<data name="integration/data/identity_link_url" xsi:type="string">&lt;IMG SRC=javascript:alert(&apos;XSS&apos;)&gt;</data>
5654
<data name="integration/data/current_password" xsi:type="string">%current_password%</data>
5755
<data name="integration/data/resource_access" xsi:type="string">All</data>
58-
<constraint name="Magento\Integration\Test\Constraint\AssertNoAlertPopup" />
59-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessage" />
60-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationForm" />
61-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationInGrid" />
56+
<constraint name="Magento\Integration\Test\Constraint\AssertUrlValidationErrorGenerated" />
57+
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessageNotPresent" />
6258
</variation>
6359
<variation name="CreateIntegrationEntityTestVariation6" summary="Input fields with single quote" ticketId="MAGETWO-16820">
6460
<data name="integration/data/name" xsi:type="string">name-%isolation%&apos; OR &apos;a&apos;=&apos;a</data>
@@ -67,10 +63,8 @@
6763
<data name="integration/data/identity_link_url" xsi:type="string">link&apos; OR &apos;a&apos;=&apos;a</data>
6864
<data name="integration/data/current_password" xsi:type="string">%current_password%</data>
6965
<data name="integration/data/resource_access" xsi:type="string">All</data>
70-
<constraint name="Magento\Integration\Test\Constraint\AssertNoAlertPopup" />
71-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessage" />
72-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationForm" />
73-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationInGrid" />
66+
<constraint name="Magento\Integration\Test\Constraint\AssertUrlValidationErrorGenerated" />
67+
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessageNotPresent" />
7468
</variation>
7569
<variation name="CreateIntegrationEntityTestVariation7" summary="Input fields with double quote" ticketId="MAGETWO-16820">
7670
<data name="integration/data/name" xsi:type="string">name-%isolation%&quot; OR &quot;a&quot;=&quot;a</data>
@@ -79,10 +73,8 @@
7973
<data name="integration/data/identity_link_url" xsi:type="string">link&quot; OR &quot;a&quot;=&quot;a</data>
8074
<data name="integration/data/current_password" xsi:type="string">%current_password%</data>
8175
<data name="integration/data/resource_access" xsi:type="string">All</data>
82-
<constraint name="Magento\Integration\Test\Constraint\AssertNoAlertPopup" />
83-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessage" />
84-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationForm" />
85-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationInGrid" />
76+
<constraint name="Magento\Integration\Test\Constraint\AssertUrlValidationErrorGenerated" />
77+
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessageNotPresent" />
8678
</variation>
8779
<variation name="CreateIntegrationEntityTestVariation8" summary="Input fields with single and double quote" ticketId="MAGETWO-16820">
8880
<data name="integration/data/name" xsi:type="string">name-%isolation%&quot; OR &apos;a&quot;=&apos;a</data>
@@ -91,10 +83,8 @@
9183
<data name="integration/data/identity_link_url" xsi:type="string">link&quot; OR &apos;a&quot;=&apos;a</data>
9284
<data name="integration/data/current_password" xsi:type="string">%current_password%</data>
9385
<data name="integration/data/resource_access" xsi:type="string">All</data>
94-
<constraint name="Magento\Integration\Test\Constraint\AssertNoAlertPopup" />
95-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessage" />
96-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationForm" />
97-
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationInGrid" />
86+
<constraint name="Magento\Integration\Test\Constraint\AssertUrlValidationErrorGenerated" />
87+
<constraint name="Magento\Integration\Test\Constraint\AssertIntegrationSuccessSaveMessageNotPresent" />
9888
</variation>
9989
<variation name="CreateIntegrationEntityTestVariation9" summary="Invalid Email: abc.example.com" ticketId="MAGETWO-16755">
10090
<data name="integration/data/name" xsi:type="string">Integration%isolation%</data>

0 commit comments

Comments
 (0)