def setUp(self): self.super() self.hostname = 'foo.example.com' self.path = '/json' self.base_url = self.hostname + self.path self.transport = Mock(request=self._echo_request_function) self.server = ServerProxy('http://' + self.base_url, transport=self.transport)
def test_dont_append_slash_if_uri_ends_with_slash_already(self): # Check that a protocoll specification is not necessary - http will be # assumed new_hostname = self.base_url + '/' self.server = ServerProxy(new_hostname, transport=self.transport) params = dict(name='baz', value='quux') response = self.server.foo.bar.get(**params) self.assert_equals('%s/foo/bar' % self.path, response[1]) self.assert_equals(params, response[2])
def test_transport_get_authentication_data_if_provided(self): self.server = ServerProxy(self.base_url, transport=self.transport, username='******', password='******') params = dict(key='value') response = self.server.foo.bar.get(**params) self.assert_equals(params, response[2]) headers = response[4] self.assert_equals('Basic ZjBvOmI0cg==\n', headers['AUTHORIZATION'])
def __init__(self, url, env): self.server = ServerProxy(url) self.server.save_errors_to_file(self.filename_for_exceptions()) self.env = env
class AgiloJSONTester(object): def __init__(self, url, env): self.server = ServerProxy(url) self.server.save_errors_to_file(self.filename_for_exceptions()) self.env = env def filename_for_exceptions(self): try: testcase = get_instance_of_current_testcase() classname = testcase.__class__.__name__ logdir = testcase.testenv.get_log_dir() except: logdir = os.path.dirname(os.path.abspath(__file__)) classname = 'no_testcase_found' return os.path.join(logdir, '%s.html' % classname) def _extract_trac_session_id_from_response(self, response): cookie_header = response.getheader('set-cookie') if cookie_header: cookie = Cookie.SimpleCookie() cookie.load(cookie_header) if 'trac_auth' in cookie: return cookie['trac_auth'].value return None def create_task(self, **kwargs): kwargs[Key.TYPE] = Type.TASK return self.server.json.tickets.put(**kwargs) def login_as(self, username, password=None): if password is None: password = username # We need to store the cookie for later reuse self.server.set_username(username) self.server.set_password(password) (data, response) = self.server.login.get_json_with_response() session_id = self._extract_trac_session_id_from_response(response) assert session_id is not None self.server.set_session_id(session_id) # REFACT: no 'get_' def get_sprint_backlog(self, sprint_name): return self.server.json.sprints[sprint_name].backlog.get() def burndownvalues(self, sprint_name): return self.server.json.sprints[sprint_name].burndownvalues.get() def edit_ticket(self, ticket_id, **kwargs): if 'time_of_last_change' not in kwargs: ticket = AgiloTicket(self.env, ticket_id) kwargs['time_of_last_change'] = to_timestamp(ticket.time_changed) if 'ts' not in kwargs: ticket = AgiloTicket(self.env, ticket_id) kwargs['ts'] = str(ticket.time_changed) from agilo.ticket import AgiloTicketSystem if AgiloTicketSystem.is_trac_1_0(): from trac.util.datefmt import to_utimestamp if 'view_time' not in kwargs: ticket = AgiloTicket(self.env, ticket_id) kwargs['view_time'] = str(to_utimestamp(ticket.time_changed)) if 'submit' not in kwargs: kwargs['submit'] = True return self.server.json.tickets[ticket_id].post(**kwargs) def get_team_for_sprint(self, sprint_name): return self.server.json.sprints[sprint_name].team.get()
def test_transport_drops_invalid_json_response_from_server(self): fake_response = Mock(status=200, read=lambda: '') transport = Mock(request=lambda *args, **kwargs: fake_response) server = ServerProxy('http://' + self.base_url, transport=transport) self.assert_raises(JSONDecodeError, server.foo.bar.get, foo='bar')