ทดสอบหน้าการกำหนดค่าด้วย 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

ฉันกำลังโพสต์การติดตามแม้ว่าจะดูเหมือนว่าจะเกี่ยวข้องกับปัญหาน้อยลง แต่อาจช่วยฉันและผู้อื่นได้ ฉันได้รับข้อผิดพลาดเดียวกันในการทดสอบ backend controller: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 สามารถเขียนได้โดยใช้ Redis แทนการตั้งค่าเซสชันและคุกกี้อื่น ๆ สลับ PHP) แต่ยังไม่ได้แก้ไข

ฉันต้องการโพสต์สิ่งนี้เพราะอาจเป็นเพราะคนอื่น ๆ กำลังประสบกับข้อผิดพลาดเดียวกันในขณะที่มันไม่เกี่ยวข้องกับการทดสอบตัวเอง แต่เป็นสภาพแวดล้อมของตัวเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.