Skip to content

Commit

Permalink
Update top level tests
Browse files Browse the repository at this point in the history
  • Loading branch information
smotornyuk committed Oct 22, 2019
1 parent 1505fb6 commit 677f8af
Show file tree
Hide file tree
Showing 15 changed files with 289 additions and 404 deletions.
3 changes: 1 addition & 2 deletions ckan/tests/legacy/functional/test_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ def test_sorting():
'name': "gamma",
'title': "Gamma",
'packages': []
}],
admin_user_name='testsysadmin')
}], admin_user_name='testsysadmin')

context = {
'model': model,
Expand Down
1 change: 0 additions & 1 deletion ckan/tests/legacy/test_coding_standards.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,6 @@ class TestImportStar(object):
'ckan/tests/legacy/functional/api/test_package_search.py',
'ckan/tests/legacy/functional/api/test_resource_search.py',
'ckan/tests/legacy/functional/api/test_revision_search.py',
'ckan/tests/legacy/functional/test_group.py',
'ckan/tests/legacy/functional/test_home.py',
'ckan/tests/legacy/functional/test_package.py',
'ckan/tests/legacy/functional/test_package_relationships.py',
Expand Down
11 changes: 0 additions & 11 deletions ckan/tests/pytest/ckan_setup.py

This file was deleted.

38 changes: 0 additions & 38 deletions ckan/tests/pytest/test_fixtures.py

This file was deleted.

File renamed without changes.
23 changes: 23 additions & 0 deletions ckan/tests/pytest_ckan/ckan_setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-

from ckan.lib.cli import load_config


def pytest_addoption(parser):
"""Allow using custom config file during tests.
"""
parser.addoption(u"--ckan-ini", action=u"store")


def pytest_sessionstart(session):
"""Initialize CKAN environment.
"""
load_config(session.config.option.ckan_ini)


def pytest_runtest_setup(item):
custom_config = [
mark.args for mark in item.iter_markers(name="ckan_config")
]
if custom_config:
item.fixturenames.append('ckan_config')
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,14 @@ def ckan_config(request, monkeypatch):
Takes into account config patches introduced by `ckan_config`
mark.
"""
_original = config.copy()
for mark in request.node.own_markers:
if mark.name == u'ckan_config':
if mark.name == u"ckan_config":
monkeypatch.setitem(config, *mark.args)
yield config
config.clear()
config.update(_original)


@pytest.fixture
def make_app(ckan_config):
Expand All @@ -34,14 +38,14 @@ def app(make_app):
return make_app()


@pytest.fixture(scope=u'session')
@pytest.fixture(scope=u"session")
def reset_db():
"""Callable for setting DB into initial state.
"""
return test_helpers.reset_db


@pytest.fixture(scope=u'session')
@pytest.fixture(scope=u"session")
def reset_index():
"""Callable for cleaning search index.
"""
Expand Down
38 changes: 38 additions & 0 deletions ckan/tests/pytest_ckan/test_fixtures.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-

import pytest

import ckan.plugins as plugins
import ckan.plugins.toolkit as tk
from ckan.common import config


def test_ckan_config_fixture(ckan_config):
assert tk.asbool(ckan_config[u"testing"])


def test_ckan_config_do_not_have_some_new_config(ckan_config):
assert u"some.new.config" not in ckan_config


@pytest.mark.ckan_config(u"some.new.config", u"exists")
def test_ckan_config_mark(ckan_config):
assert ckan_config[u"some.new.config"] == u"exists"


@pytest.mark.ckan_config(u"some.new.config", u"exists")
@pytest.mark.usefixtures(u"ckan_config")
def test_ckan_config_mark_without_explicit_config_fixture():
assert config[u"some.new.config"] == u"exists"


@pytest.mark.ckan_config(u"ckan.plugins", u"")
@pytest.mark.usefixtures(u"with_plugins")
def test_with_plugins_is_able_to_run_without_plugins():
assert not plugins.plugin_loaded(u"stats")


@pytest.mark.ckan_config(u"ckan.plugins", u"stats")
@pytest.mark.usefixtures(u"with_plugins")
def test_with_plugins_is_able_to_run_with_stats():
assert plugins.plugin_loaded(u"stats")
75 changes: 26 additions & 49 deletions ckan/tests/test_authz.py
Original file line number Diff line number Diff line change
@@ -1,68 +1,45 @@
# encoding: utf-8

import nose
import pytest

from ckan import authz as auth

from ckan.tests import helpers
_check = auth.check_config_permission


assert_equals = nose.tools.assert_equals
@pytest.mark.ckan_config("ckan.auth.anon_create_dataset", None)
@pytest.mark.parametrize(
"perm", ["anon_create_dataset", "ckan.auth.anon_create_dataset"]
)
def test_get_default_value_if_not_set_in_config(perm):
assert _check(perm) == auth.CONFIG_PERMISSIONS_DEFAULTS["anon_create_dataset"]


class TestCheckConfigPermission(object):
@pytest.mark.ckan_config("ckan.auth.anon_create_dataset", True)
def test_config_overrides_default():
assert _check("anon_create_dataset") is True

@helpers.change_config('ckan.auth.anon_create_dataset', None)
def test_get_default_value_if_not_set_in_config(self):

assert_equals(auth.check_config_permission(
'anon_create_dataset'),
auth.CONFIG_PERMISSIONS_DEFAULTS['anon_create_dataset'])
@pytest.mark.ckan_config("ckan.auth.anon_create_dataset", True)
def test_config_override_also_works_with_prefix():
assert _check("ckan.auth.anon_create_dataset") is True

@helpers.change_config('ckan.auth.anon_create_dataset', None)
def test_get_default_value_also_works_with_prefix(self):

assert_equals(auth.check_config_permission(
'ckan.auth.anon_create_dataset'),
auth.CONFIG_PERMISSIONS_DEFAULTS['anon_create_dataset'])
@pytest.mark.ckan_config("ckan.auth.unknown_permission", True)
def test_unknown_permission_returns_false():
assert _check("unknown_permission") is False

@helpers.change_config('ckan.auth.anon_create_dataset', True)
def test_config_overrides_default(self):

assert_equals(auth.check_config_permission(
'anon_create_dataset'),
True)
def test_unknown_permission_not_in_config_returns_false():
assert _check("unknown_permission") is False

@helpers.change_config('ckan.auth.anon_create_dataset', True)
def test_config_override_also_works_with_prefix(self):

assert_equals(auth.check_config_permission(
'ckan.auth.anon_create_dataset'),
True)
def test_default_roles_that_cascade_to_sub_groups_is_a_list():
assert isinstance(_check("roles_that_cascade_to_sub_groups"), list)

@helpers.change_config('ckan.auth.unknown_permission', True)
def test_unknown_permission_returns_false(self):

assert_equals(auth.check_config_permission(
'unknown_permission'),
False)

def test_unknown_permission_not_in_config_returns_false(self):

assert_equals(auth.check_config_permission(
'unknown_permission'),
False)

def test_default_roles_that_cascade_to_sub_groups_is_a_list(self):

assert isinstance(auth.check_config_permission(
'roles_that_cascade_to_sub_groups'),
list)

@helpers.change_config('ckan.auth.roles_that_cascade_to_sub_groups',
'admin editor')
def test_roles_that_cascade_to_sub_groups_is_a_list(self):

assert_equals(sorted(auth.check_config_permission(
'roles_that_cascade_to_sub_groups')),
sorted(['admin', 'editor']))
@pytest.mark.ckan_config("ckan.auth.roles_that_cascade_to_sub_groups", "admin editor")
def test_roles_that_cascade_to_sub_groups_is_a_list():
assert sorted(_check("roles_that_cascade_to_sub_groups")) == sorted(
["admin", "editor"]
)
Loading

0 comments on commit 677f8af

Please sign in to comment.