From 272fb1e24f8f9dc6b0c360fe60352cab0e9ff900 Mon Sep 17 00:00:00 2001 From: Andrii Meysar Date: Wed, 3 Jul 2019 20:43:17 +0300 Subject: [PATCH 1/4] - Fix assignment of correct value for object return property - Fix operation method receive --- .../DataGenerator/Persist/Curl/AdminExecutor.php | 5 ++++- .../DataGenerator/Persist/Curl/FrontendExecutor.php | 5 ++++- .../DataGenerator/Persist/CurlHandler.php | 3 ++- .../DataGenerator/etc/dataOperation.xsd | 10 +++++++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php index 1f7ae70d7..70dafa75a 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php @@ -158,7 +158,10 @@ public function read($successRegex = null, $returnRegex = null) if (!empty($returnRegex)) { preg_match($returnRegex, $this->response, $returnMatches); if (!empty($returnMatches)) { - return $returnMatches; + if (count($returnMatches) > 1) { + unset($returnMatches); + } + return reset($returnMatches); } } return $this->response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php index 7e7485a82..20f8c1af8 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php @@ -179,7 +179,10 @@ public function read($successRegex = null, $returnRegex = null) if (!empty($returnRegex)) { preg_match($returnRegex, $this->response, $returnMatches); if (!empty($returnMatches)) { - return $returnMatches; + if (count($returnMatches) > 1) { + unset($returnMatches); + } + return reset($returnMatches); } } return $this->response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php index 9c8a9e175..ad81b9e9b 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php @@ -119,6 +119,7 @@ public function executeRequest($dependentEntities) $contentType = $this->operationDefinition->getContentType(); $successRegex = $this->operationDefinition->getSuccessRegex(); $returnRegex = $this->operationDefinition->getReturnRegex(); + $method = $this->operationDefinition->getApiMethod(); $operationDataResolver = new OperationDataArrayResolver($dependentEntities); $this->requestData = $operationDataResolver->resolveOperationDataArray( @@ -156,7 +157,7 @@ public function executeRequest($dependentEntities) $executor->write( $apiUrl, $this->requestData, - self::$curlMethodMapping[$this->operation], + $method ?? self::$curlMethodMapping[$this->operation], $headers ); diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd b/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd index 7a455dc2b..ccc2b8436 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd @@ -26,7 +26,7 @@ - + @@ -93,4 +93,12 @@ + + + + + + + + \ No newline at end of file From 322bd6cfd65a9bd81e00fbaa6751893b3a16f696 Mon Sep 17 00:00:00 2001 From: Andrii Meysar Date: Tue, 27 Aug 2019 07:39:31 +0300 Subject: [PATCH 2/4] - Fix CR notes --- .../OperationDefinitionObjectHandler.php | 5 ++++- .../Objects/OperationDefinitionObject.php | 22 ++++++++++++++++++- .../Persist/Curl/AdminExecutor.php | 15 +++++-------- .../Persist/Curl/FrontendExecutor.php | 15 +++++-------- .../Persist/Curl/WebapiExecutor.php | 8 ++----- .../DataGenerator/Persist/CurlHandler.php | 4 +++- .../DataGenerator/etc/dataOperation.xsd | 3 ++- .../Util/Protocol/CurlInterface.php | 3 ++- .../Util/Protocol/CurlTransport.php | 8 ++----- 9 files changed, 46 insertions(+), 37 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php index 78deef0ef..cb53b2d68 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php @@ -24,6 +24,7 @@ class OperationDefinitionObjectHandler implements ObjectHandlerInterface const ENTITY_OPERATION_STORE_CODE = 'storeCode'; const ENTITY_OPERATION_SUCCESS_REGEX = 'successRegex'; const ENTITY_OPERATION_RETURN_REGEX = 'returnRegex'; + const ENTITY_OPERATION_RETURN_INDEX = 'returnIndex'; const ENTITY_OPERATION_HEADER = 'header'; const ENTITY_OPERATION_CONTENT_TYPE = 'contentType'; const ENTITY_OPERATION_HEADER_PARAM = 'param'; @@ -144,6 +145,7 @@ private function initialize() $auth = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_AUTH] ?? null; $successRegex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_SUCCESS_REGEX] ?? null; $returnRegex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_RETURN_REGEX] ?? null; + $returnIndex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_RETURN_INDEX] ?? null; $contentType = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_CONTENT_TYPE][0]['value'] ?? null; $headers = $this->initializeHeaders($opDefArray); @@ -216,7 +218,8 @@ private function initialize() $contentType, $removeBackend, $successRegex, - $returnRegex + $returnRegex, + $returnIndex ); } } diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Objects/OperationDefinitionObject.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Objects/OperationDefinitionObject.php index d6237a437..721a9dcc9 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Objects/OperationDefinitionObject.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Objects/OperationDefinitionObject.php @@ -104,6 +104,13 @@ class OperationDefinitionObject */ private $returnRegex; + /** + * Index of element to be returned from "returnRegex" matches. + * + * @var string + */ + private $returnIndex; + /** * Determines if operation should remove backend_name from URL. * @var boolean @@ -125,6 +132,7 @@ class OperationDefinitionObject * @param boolean $removeBackend * @param string $successRegex * @param string $returnRegex + * @param string $returnIndex * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( @@ -140,7 +148,8 @@ public function __construct( $contentType, $removeBackend, $successRegex = null, - $returnRegex = null + $returnRegex = null, + $returnIndex = null ) { $this->name = $name; $this->operation = $operation; @@ -153,6 +162,7 @@ public function __construct( $this->operationMetadata = $metaData; $this->successRegex = $successRegex; $this->returnRegex = $returnRegex; + $this->returnIndex = $returnIndex; $this->removeBackend = $removeBackend; $this->apiUrl = null; @@ -284,6 +294,16 @@ public function getReturnRegex() return $this->returnRegex; } + /** + * Getter for return regex matches index. + * + * @return string|null + */ + public function getReturnIndex() + { + return $this->returnIndex; + } + /** * Function to append or add query parameters * diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php index 70dafa75a..3da851299 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php @@ -136,14 +136,10 @@ public function write($url, $data = [], $method = CurlInterface::POST, $headers } /** - * Read response from server. - * - * @param string $successRegex - * @param string $returnRegex - * @return string|array + * @inheritdoc * @throws TestFrameworkException */ - public function read($successRegex = null, $returnRegex = null) + public function read($successRegex = null, $returnRegex = null, $returnIndex = null) { $this->response = $this->transport->read(); $this->setFormKey(); @@ -158,10 +154,9 @@ public function read($successRegex = null, $returnRegex = null) if (!empty($returnRegex)) { preg_match($returnRegex, $this->response, $returnMatches); if (!empty($returnMatches)) { - if (count($returnMatches) > 1) { - unset($returnMatches); - } - return reset($returnMatches); + return isset($returnIndex, $returnMatches[$returnIndex]) + ? $returnMatches[$returnIndex] + : $returnMatches; } } return $this->response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php index 20f8c1af8..06ea78d8c 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php @@ -156,14 +156,10 @@ public function write($url, $data = [], $method = CurlInterface::POST, $headers } /** - * Read response from server. - * - * @param string $successRegex - * @param string $returnRegex - * @return string|array + * @inheritdoc * @throws TestFrameworkException */ - public function read($successRegex = null, $returnRegex = null) + public function read($successRegex = null, $returnRegex = null, $returnIndex = null) { $this->response = $this->transport->read(); $this->setCookies(); @@ -179,10 +175,9 @@ public function read($successRegex = null, $returnRegex = null) if (!empty($returnRegex)) { preg_match($returnRegex, $this->response, $returnMatches); if (!empty($returnMatches)) { - if (count($returnMatches) > 1) { - unset($returnMatches); - } - return reset($returnMatches); + return isset($returnIndex, $returnMatches[$returnIndex]) + ? $returnMatches[$returnIndex] + : $returnMatches; } } return $this->response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php index 6aec3e58a..ce867c9fb 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php @@ -135,14 +135,10 @@ public function write($url, $data = [], $method = CurlInterface::POST, $headers } /** - * Read response from server. - * - * @param string $successRegex - * @param string $returnRegex - * @return string + * @inheritdoc * @throws TestFrameworkException */ - public function read($successRegex = null, $returnRegex = null) + public function read($successRegex = null, $returnRegex = null, $returnIndex = null) { $this->response = $this->transport->read(); return $this->response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php index ad81b9e9b..f6d8773bc 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/CurlHandler.php @@ -107,6 +107,7 @@ public function executeRequest($dependentEntities) $executor = null; $successRegex = null; $returnRegex = null; + $returnIndex = null; if ((null !== $dependentEntities) && is_array($dependentEntities)) { $entities = array_merge([$this->entityObject], $dependentEntities); @@ -119,6 +120,7 @@ public function executeRequest($dependentEntities) $contentType = $this->operationDefinition->getContentType(); $successRegex = $this->operationDefinition->getSuccessRegex(); $returnRegex = $this->operationDefinition->getReturnRegex(); + $returnIndex = $this->operationDefinition->getReturnIndex(); $method = $this->operationDefinition->getApiMethod(); $operationDataResolver = new OperationDataArrayResolver($dependentEntities); @@ -161,7 +163,7 @@ public function executeRequest($dependentEntities) $headers ); - $response = $executor->read($successRegex, $returnRegex); + $response = $executor->read($successRegex, $returnRegex, $returnIndex); $executor->close(); return $response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd b/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd index ccc2b8436..8b59ccae0 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataOperation.xsd @@ -29,6 +29,7 @@ + @@ -93,7 +94,7 @@ - + diff --git a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php index 171fd01e6..5f48a4140 100644 --- a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php +++ b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php @@ -44,9 +44,10 @@ public function write($url, $body = [], $method = CurlInterface::POST, $headers * * @param string $successRegex * @param string $returnRegex + * @param string|null $returnIndex * @return string|array */ - public function read($successRegex = null, $returnRegex = null); + public function read($successRegex = null, $returnRegex = null, $returnIndex = null); /** * Close the connection to the server. diff --git a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php index 5a9133a05..fd0932a82 100644 --- a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php +++ b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php @@ -159,14 +159,10 @@ public function write($url, $body = [], $method = CurlInterface::POST, $headers } /** - * Read response from server. - * - * @param string $successRegex - * @param string $returnRegex - * @return string + * @inheritdoc * @throws TestFrameworkException */ - public function read($successRegex = null, $returnRegex = null) + public function read($successRegex = null, $returnRegex = null, $returnIndex = null) { $response = curl_exec($this->getResource()); From 23edff1a9f73446eee3dfc8fe0bde9be36dd0e01 Mon Sep 17 00:00:00 2001 From: Andrii Meysar Date: Tue, 27 Aug 2019 08:32:37 +0300 Subject: [PATCH 3/4] - Fix static tests --- .../DataGenerator/Persist/Curl/AdminExecutor.php | 7 ++++++- .../DataGenerator/Persist/Curl/FrontendExecutor.php | 7 ++++++- .../DataGenerator/Persist/Curl/WebapiExecutor.php | 7 ++++++- .../Util/Protocol/CurlInterface.php | 4 ++-- .../Util/Protocol/CurlTransport.php | 7 ++++++- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php index 3da851299..b23f3be65 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php @@ -136,7 +136,12 @@ public function write($url, $data = [], $method = CurlInterface::POST, $headers } /** - * @inheritdoc + * Read response from server. + * + * @param string $successRegex + * @param string $returnRegex + * @param string|null $returnIndex + * @return string|array * @throws TestFrameworkException */ public function read($successRegex = null, $returnRegex = null, $returnIndex = null) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php index 06ea78d8c..08d6508a8 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php @@ -156,7 +156,12 @@ public function write($url, $data = [], $method = CurlInterface::POST, $headers } /** - * @inheritdoc + * Read response from server. + * + * @param string $successRegex + * @param string $returnRegex + * @param string|null $returnIndex + * @return string|array * @throws TestFrameworkException */ public function read($successRegex = null, $returnRegex = null, $returnIndex = null) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php index ce867c9fb..281eaa24d 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/WebapiExecutor.php @@ -135,7 +135,12 @@ public function write($url, $data = [], $method = CurlInterface::POST, $headers } /** - * @inheritdoc + * Read response from server. + * + * @param string $successRegex + * @param string $returnRegex + * @param string|null $returnIndex + * @return string * @throws TestFrameworkException */ public function read($successRegex = null, $returnRegex = null, $returnIndex = null) diff --git a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php index 5f48a4140..a2d6bc344 100644 --- a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php +++ b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlInterface.php @@ -42,8 +42,8 @@ public function write($url, $body = [], $method = CurlInterface::POST, $headers /** * Read response from server. * - * @param string $successRegex - * @param string $returnRegex + * @param string $successRegex + * @param string $returnRegex * @param string|null $returnIndex * @return string|array */ diff --git a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php index fd0932a82..16c716e22 100644 --- a/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php +++ b/src/Magento/FunctionalTestingFramework/Util/Protocol/CurlTransport.php @@ -159,7 +159,12 @@ public function write($url, $body = [], $method = CurlInterface::POST, $headers } /** - * @inheritdoc + * Read response from server. + * + * @param string $successRegex + * @param string $returnRegex + * @param string|null $returnIndex + * @return string * @throws TestFrameworkException */ public function read($successRegex = null, $returnRegex = null, $returnIndex = null) From 0c8560b5d2cba5feb3fe9ee53a39acb66bd8bce0 Mon Sep 17 00:00:00 2001 From: Andrii Meysar Date: Wed, 28 Aug 2019 06:50:22 +0300 Subject: [PATCH 4/4] - Fix CR notes --- .../Handlers/OperationDefinitionObjectHandler.php | 2 +- .../DataGenerator/Persist/Curl/AdminExecutor.php | 4 +--- .../DataGenerator/Persist/Curl/FrontendExecutor.php | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php index cb53b2d68..b768d9bd8 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php @@ -145,7 +145,7 @@ private function initialize() $auth = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_AUTH] ?? null; $successRegex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_SUCCESS_REGEX] ?? null; $returnRegex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_RETURN_REGEX] ?? null; - $returnIndex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_RETURN_INDEX] ?? null; + $returnIndex = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_RETURN_INDEX] ?? 0; $contentType = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_CONTENT_TYPE][0]['value'] ?? null; $headers = $this->initializeHeaders($opDefArray); diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php index b23f3be65..4e11f5cec 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/AdminExecutor.php @@ -159,9 +159,7 @@ public function read($successRegex = null, $returnRegex = null, $returnIndex = n if (!empty($returnRegex)) { preg_match($returnRegex, $this->response, $returnMatches); if (!empty($returnMatches)) { - return isset($returnIndex, $returnMatches[$returnIndex]) - ? $returnMatches[$returnIndex] - : $returnMatches; + return $returnMatches[$returnIndex] ?? $returnMatches[0]; } } return $this->response; diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php index 08d6508a8..799cd6d5c 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/Curl/FrontendExecutor.php @@ -180,9 +180,7 @@ public function read($successRegex = null, $returnRegex = null, $returnIndex = n if (!empty($returnRegex)) { preg_match($returnRegex, $this->response, $returnMatches); if (!empty($returnMatches)) { - return isset($returnIndex, $returnMatches[$returnIndex]) - ? $returnMatches[$returnIndex] - : $returnMatches; + return $returnMatches[$returnIndex] ?? $returnMatches[0]; } } return $this->response;