import os
import pytest

import yaml

from pywb.perms.perms_filter import AllowAllPerms, AllowAllPermsPolicy

@pytest.fixture
def testconfig():
    config = yaml.load(open('test_config.yaml'))
    assert config
    if 'index_paths' not in config:
        # !!! assumes this module is in a sub-directory of project root.
        config['index_paths'] = os.path.join(
            os.path.dirname(os.path.realpath(__file__)),
            '../sample_archive/cdx')
    return config

#================================================================
# Reporter callback for replay view
class PrintReporter:
    """Reporter callback for replay view.
    """
    def __call__(self, wbrequest, cdx, response):
        print wbrequest
        print cdx
        pass

#================================================================
class TestExclusionPerms(AllowAllPerms):
    """
    Perm Checker fixture to block a single url for testing
    """
    # sample_archive has captures for this URLKEY
    URLKEY_EXCLUDED = 'org,iana)/_img/bookmark_icon.ico'

    def allow_url_lookup(self, urlkey):
        """
        Return true/false if url (canonicalized url)
        should be allowed
        """
        if urlkey == self.URLKEY_EXCLUDED:
            return False

        return super(TestExclusionPerms, self).allow_url_lookup(urlkey)


#================================================================
class TestExclusionPermsPolicy(AllowAllPermsPolicy):
    def create_perms_checker(self, wbrequest):
        return TestExclusionPerms()