Exemple #1
0
 /**
  * @ticket SW-5148
  */
 public function testStartDispatch()
 {
     $front = Shopware()->Front();
     $request = new \Enlight_Controller_Request_RequestTestCase();
     $request->setClientIp('127.0.0.1');
     $front->setRequest($request);
     $eventArgs = $this->createEventArgs()->set('subject', $front);
     $plugin = Shopware()->Plugins()->Core()->Debug();
     $plugin->Config()->AllowIP = '127.0.0.1';
     $plugin->onStartDispatch($eventArgs);
     $this->assertInstanceOf('Shopware_Plugins_Core_Debug_Bootstrap', $plugin);
 }
 /**
  * @covers \ShopwarePlugins\RestApi\Components\Router::assembleRoute
  * @dataProvider routeDeleteProvider
  */
 public function testDeleteRoutes($uri, $expectedVersion, $expectedController, $expectedAction, $expectedId, $expectedCode)
 {
     $request = new \Enlight_Controller_Request_RequestTestCase();
     $request->setMethod('DELETE');
     $response = new \Enlight_Controller_Response_ResponseTestCase();
     $request->setPathInfo($uri);
     $this->router->assembleRoute($request, $response);
     $this->assertEquals($expectedController, $request->getControllerName());
     $this->assertEquals($expectedAction, $request->getActionName());
     $this->assertEquals($expectedVersion, $request->getParam('version'));
     $this->assertEquals($expectedId, $request->getParam('id'));
     $this->assertEquals($expectedCode, $response->getHttpResponseCode());
 }
 /**
  * Ensures that getActiveByRequest() returns the correct shop
  *
  * @ticket SW-7774
  * @ticket SW-6768
  */
 public function testGetActiveByRequest()
 {
     // Backup and change existing main shop
     $mainShopBackup = Shopware()->Db()->fetchRow("SELECT * FROM s_core_shops WHERE id = 1");
     Shopware()->Db()->update('s_core_shops', array('host' => 'fallbackhost', 'secure' => 1, 'secure_base_path' => '/secure'), 'id = 1');
     $mainShop = Shopware()->Db()->fetchRow("SELECT * FROM s_core_shops WHERE id = 1");
     // Create test shops
     $sql = "\n            INSERT IGNORE INTO `s_core_shops` (`id`, `main_id`, `name`, `title`, `position`, `host`, `base_path`, `base_url`, `hosts`, `secure`, `secure_host`, `secure_base_path`, `template_id`, `document_template_id`, `category_id`, `locale_id`, `currency_id`, `customer_group_id`, `fallback_id`, `customer_scope`, `default`, `active`, `always_secure`) VALUES\n            (100, 1, 'testShop1', 'Testshop', 0, NULL, NULL, ?, '', 0, NULL, ?, 11, 11, 11, 2, 1, 1, 2, 0, 0, 1, 0),\n            (101, 1, 'testShop2', 'Testshop', 0, NULL, NULL, ?, '', 0, NULL, ?, 11, 11, 11, 2, 1, 1, 2, 0, 0, 1, 0),\n            (102, 1, 'testShop3', 'Testshop', 0, NULL, NULL, ?, '', 0, NULL, ?, 11, 11, 11, 2, 1, 1, 2, 0, 0, 1, 0),\n            (103, 1, 'testShop4', 'Testshop', 0, NULL, NULL, ?, '', 0, NULL, ?, 11, 11, 11, 2, 1, 1, 2, 0, 0, 1, 0),\n            (104, 1, 'testShop5', 'Testshop', 0, NULL, NULL, ?, '', 0, NULL, ?, 11, 11, 11, 2, 1, 1, 2, 0, 0, 1, 0);\n\n        ";
     Shopware()->Db()->query($sql, array($mainShop['base_path'] . "/english", $mainShop['secure_base_path'] . "/english", $mainShop['base_path'] . "/en/uk", $mainShop['secure_base_path'] . "/en/uk", $mainShop['base_path'] . "/en", $mainShop['secure_base_path'] . "/en", $mainShop['base_path'] . "/en/us", $mainShop['secure_base_path'] . "/en/us", $mainShop['base_path'] . "/aus/en", $mainShop['secure_base_path'] . "/aus/en"));
     /** @var $repository \Shopware\Models\Shop\Repository */
     $repository = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop');
     $request = new Enlight_Controller_Request_RequestTestCase();
     $request->setHttpHost($mainShop["host"]);
     // Tests copied for SW-6768
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en", "testShop3");
     //check virtual url with superfluous / like localhost/en/
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en/", "testShop3");
     //check virtual url with direct controller call like localhost/en/blog
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en/blog", "testShop3");
     //check base shop with direct controller call like localhost/en/blog
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/blog", $mainShop["name"]);
     //check without virtual url but an url with the same beginning like localhost/entsorgung
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/entsorgung", $mainShop["name"]);
     //check different virtual url with like localhost/ente
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en/uk", "testShop2");
     //check without virtual url it has to choose the main shop instead of the language shop without the virtual url
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"], $mainShop["name"]);
     // These are just some basic urls
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/en", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/entsorgung", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/fenglish", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/english", 'testShop1');
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en", 'testShop3');
     // These cover the cases affected by the ticket, where the base_path would be present in the middle of the url
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/english", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/en", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/enaaa/", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/uk/", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/en/uk/", $mainShop["name"]);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/foo/en/uk/things", $mainShop["name"]);
     // And these are some extreme cases, due to the overlapping of urls
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en/ukfoooo", 'testShop3');
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en/uk", 'testShop2');
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en", 'testShop3');
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["base_path"] . "/en/uk/things", 'testShop2');
     // Tests for secure
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/us", 'testShop4', true);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/us", 'testShop4', false);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/ukfoooo", 'testShop3', true);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/ukfoooo", 'testShop3', false);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/uk", 'testShop2', true);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/uk", 'testShop2', false);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/uk/things", 'testShop2', true);
     $this->callGetActiveShopByRequest($request, $repository, $mainShop["secure_base_path"] . "/en/uk/things", 'testShop2', false);
     // Remove test data and restore previous status
     Shopware()->Db()->exec("DELETE FROM s_core_shops WHERE id IN (100, 101, 102, 103, 104);");
     unset($mainShopBackup['id']);
     Shopware()->Db()->update('s_core_shops', $mainShopBackup, 'id = 1');
 }