programs.py 1.61 KB
Newer Older
1 2 3 4
"""
Tools to create programs-related data for use in bok choy tests.
"""
import json
5

6 7
import requests

8 9
from common.test.acceptance.fixtures import PROGRAMS_STUB_URL
from common.test.acceptance.fixtures.config import ConfigModelFixture
10 11 12 13 14 15


class ProgramsFixture(object):
    """
    Interface to set up mock responses from the Programs stub server.
    """
16 17 18 19 20 21 22 23 24
    def install_programs(self, programs, is_list=True):
        """Sets the response data for Programs API endpoints."""
        if is_list:
            key = 'programs'
            api_result = {'results': programs}
        else:
            program = programs[0]
            key = 'programs.{}'.format(program['id'])
            api_result = program
25 26 27

        requests.put(
            '{}/set_config'.format(PROGRAMS_STUB_URL),
28
            data={key: json.dumps(api_result)},
29
        )
30 31 32 33


class ProgramsConfigMixin(object):
    """Mixin providing a method used to configure the programs feature."""
34
    def set_programs_api_configuration(self, is_enabled=False, api_version=1, api_url=PROGRAMS_STUB_URL):
35 36 37 38 39 40 41 42 43 44 45
        """Dynamically adjusts the Programs config model during tests."""
        ConfigModelFixture('/config/programs', {
            'enabled': is_enabled,
            'api_version_number': api_version,
            'internal_service_url': api_url,
            'public_service_url': api_url,
            'cache_ttl': 0,
            'enable_student_dashboard': is_enabled,
            'enable_studio_tab': is_enabled,
            'enable_certification': is_enabled,
            'program_listing_enabled': is_enabled,
Renzo Lucioni committed
46
            'program_details_enabled': is_enabled,
47
        }).install()