from routersploit.modules.exploits.routers.dlink.dir_850l_creds_disclosure import Exploit


def test_check_success(target):
    """ Test scenario - successful check """

    cgi_mock = target.get_route_mock("/hedwig.cgi", methods=["POST"])
    cgi_mock.return_value = (
        "<module>"
        "<service></service>"
        "<device>"
        "<gw_name>DIR-850L</gw_name>"
        "<account>"
        "<seqno>1</seqno>"
            "<max>2</max>"
            "<count>1</count>"
            "<entry>"
            "<uid>USR-</uid>"
            "<name>Admin</name>"
            "<usrid></usrid>"
            "<password>92830535</password>"
            "<group>0</group>"
            "<description></description>"
            "</entry>"
            "</account>"
            "<group>"
            "<seqno></seqno>"
            "<max></max>"
            "<count>0</count>"
            "</group>"
            "<session>"
            "<captcha>0</captcha>"
            "<dummy></dummy>"
            "<timeout>180</timeout>"
            "<maxsession>128</maxsession>"
            "<maxauthorized>16</maxauthorized>"
            "</session>"
            "</device>"
            "</module>"
            "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
            "<hedwig>"
            "<result>OK</result>"
            "<node></node>"
            "<message>No modules for Hedwig</message>"
            "</hedwig>"
    )

    exploit = Exploit()
    exploit.target = target.host
    exploit.port = target.port

    assert exploit.check()
    assert exploit.run() is None