""" Stub implementation of programs service for acceptance tests """ import re import urlparse from .http import StubHttpRequestHandler, StubHttpService class StubProgramsServiceHandler(StubHttpRequestHandler): # pylint: disable=missing-docstring def do_GET(self): # pylint: disable=invalid-name, missing-docstring pattern_handlers = { r'/api/v1/programs/$': self.get_programs_list, r'/api/v1/programs/(\d+)/$': self.get_program_details, } if self.match_pattern(pattern_handlers): return self.send_response(404, content="404 Not Found") def match_pattern(self, pattern_handlers): """ Find the correct handler method given the path info from the HTTP request. """ path = urlparse.urlparse(self.path).path for pattern in pattern_handlers: match = re.match(pattern, path) if match: pattern_handlers[pattern](*match.groups()) return True return None def get_programs_list(self): """ Stubs the programs list endpoint. """ programs = self.server.config.get('programs', []) self.send_json_response(programs) def get_program_details(self, program_id): """ Stubs a program details endpoint. """ program = self.server.config.get('programs.{}'.format(program_id), []) self.send_json_response(program) class StubProgramsService(StubHttpService): # pylint: disable=missing-docstring HANDLER_CLASS = StubProgramsServiceHandler