অ্যাবস্ট্রাকব্যাকেন্ডকন্ট্রোলার সহ পরীক্ষার কনফিগারেশন পৃষ্ঠাগুলি: 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 স্থিতি কোড আশা করার জন্য কি পরীক্ষাটি পরিবর্তন করা কি বোধগম্য?

হ্যাঁ. নীচে টেস্টএক্লনোএ্যাক্সেস () এর জন্য ডিফল্ট বাস্তবায়ন ওভাররাইড করে এবং অপর্যাপ্ত অনুমতি নিয়ে সিস্টেম কনফিগারেশন অঞ্চল অ্যাক্সেস করার সময় পুনর্নির্দেশ ঘটে তা পরীক্ষা করে।

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');

সুতরাং, কোনও কারণে, একবার প্রেরণ করা হলে, সেশনটি বিরতি দেয়। আমি এটি অন্য পরিবেশে পুনরুত্পাদন করার চেষ্টা করেছি, কিন্তু ব্যর্থ হয়েছিল: পরীক্ষাগুলি অন্য কোথাও কাজ করে, প্রমাণ করে যে এটি ভুল পরীক্ষার কোডের কারণে নয়, পরিবর্তে পরিবেশের মধ্যে কিছু the আমি ইতিমধ্যে সমস্ত লজিকাল পদক্ষেপের মধ্য দিয়ে গিয়েছি (সেশন ডায়ার লিখনযোগ্য, পরিবর্তে রেডিস ব্যবহার করে, অন্যান্য সেশন এবং কুকি সেটিংস, পিএইচপি স্যুইচিং) তবে এখনও এটিকে সমাধান করতে পারেনি।

আমি এটি পোস্ট করতে চেয়েছিলাম, কারণ এটি হতে পারে যে অন্যরাও একই ত্রুটিটি অনুভব করছে, যদিও এটি পরীক্ষার সাথে নয়, পরিবেশের সাথে সম্পর্কিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.