AbstractBackendController के साथ परीक्षण कॉन्फ़िगरेशन पृष्ठ: testAclNoAccess विफल


10

मैं कॉन्फ़िगरेशन अनुभाग के लिए एकीकरण परीक्षण लिख रहा हूं और डिफ़ॉल्ट परीक्षण मामलों से निम्नलिखित विफलता का सामना कर रहा हूं:

My\Module\ConfigTest::testAclNoAccess
Failed asserting that 302 is identical to 403

जहां तक ​​मैं देखता हूं, सब कुछ उसी तरह से काम करता है, जैसा कि होना चाहिए, लेकिन मैन्गेंटो को "फॉरबिडन" के बजाय एक रीडायरेक्ट रिस्पॉन्स भेजता है, जब किसी कॉन्फिगरेशन सेक्शन पर एक्सेस से इनकार कर दिया जाता है।

क्या यह 302 स्टेटस कोड की उम्मीद करने के लिए परीक्षण को बदलने के लिए समझ में आता है? मैं उस परीक्षण मामले को नहीं हटाऊंगा क्योंकि इससे मुझे पहले से ही एक गलत संसाधन पहचानकर्ता को पकड़ने में मदद मिली।

यह प्रासंगिक कोड है:

namespace My\Module;

use Magento\TestFramework\TestCase\AbstractBackendController;

class ConfigTest extends AbstractBackendController
{

    protected function setUp()
    {
        parent::setUp();
        $this->uri = 'backend/admin/system_config/edit';
        $this->resource = 'My_Module::config_my_module';
        $this->getRequest()->setParam('section', 'my_module');
    }

    // [other tests]
}

जवाबों:


3

क्या यह 302 स्टेटस कोड की उम्मीद करने के लिए परीक्षण को बदलने के लिए समझ में आता है?

हाँ। नीचे testAclNoAccess () के लिए डिफ़ॉल्ट कार्यान्वयन को ओवरराइड करता है और जाँच करता है कि सिस्टम अनुमत क्षेत्र को अपर्याप्त अनुमतियों के साथ एक्सेस करने पर एक रीडायरेक्ट होता है।

public function testAclNoAccess()
{
    $this->_objectManager->get('Magento\Framework\Acl\Builder')
        ->getAcl()
        ->deny(null, $this->resource);
    $this->dispatch($this->uri);

    //denied access in the system config redirects
    $this->assertTrue($this->getResponse()->isRedirect());
}

1

मैं एक फॉलोअप पोस्ट कर रहा हूं, भले ही ऐसा लगता है कि यह मुद्दे से कम संबंधित है, लेकिन इससे मुझे और दूसरों को मदद मिल सकती है। बैकएंड कंट्रोलर टेस्ट में मुझे वही त्रुटि मिलती है:Failed asserting that 302 is identical to 403

हालाँकि, मेरे मामले में, यह त्रुटि सभी (या!) कोर या मेरे अपने मॉड्यूल के एकीकरण परीक्षणों पर डाली गई है। मैंने निम्नलिखित परीक्षण में चीजों को संकुचित कर दिया है:

$this->assertTrue($this->_session->isLoggedIn());
$this->dispatch($this->uri);
$this->assertTrue($this->_session->isLoggedIn(), 'Session is no longer valid');

इसलिए, किसी कारण से, एक बार भेजे जाने के बाद, सत्र टूट जाता है। मैंने इसे दूसरे वातावरण पर पुन: पेश करने की कोशिश की है, लेकिन असफल रहा: परीक्षण कहीं और काम करता है, यह साबित करता है कि यह गलत परीक्षण कोड के कारण नहीं, बल्कि पर्यावरण में कुछ है। मैं पहले से ही सभी तार्किक चरणों (सत्र dir writable, Redis का उपयोग करके, अन्य सत्र और कुकी सेटिंग्स, PHP स्विचिंग के माध्यम से) के माध्यम से पहले ही चला गया हूं, लेकिन अभी तक इसे हल नहीं किया है।

मैं इसे पोस्ट करना चाहता था, क्योंकि यह हो सकता है कि अन्य लोग एक ही त्रुटि का सामना कर रहे हैं, जबकि यह स्वयं परीक्षण से संबंधित नहीं है, लेकिन स्वयं पर्यावरण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.