def test_no_sandbox(self): call = self.app.get(reverse('testsession:session_create'), user=self.user) form = call.forms[1] form['session_type'].select(form['session_type'].options[-1][0]) form['sandbox'] = False form.submit() session = Session.objects.all().order_by('-pk')[0] eu = ExposedUrl.objects.get(session=session) all_rep = Report.objects.all() url = reverse_sub('run_test', eu.subdomain, kwargs={'relative_url': 'status/404'}) call = self.app.get( url, extra_environ={'HTTP_HOST': '{}-example.com'.format(eu.subdomain)}, user=session.user, status=[404]) report = Report.objects.get(scenario_case=self.sc) self.assertEqual(choices.HTTPCallChoices.failed, report.result) url = reverse_sub('run_test', eu.subdomain, kwargs={'relative_url': 'status/200'}) call = self.app.get( url, extra_environ={'HTTP_HOST': '{}-example.com'.format(eu.subdomain)}, user=session.user) report = Report.objects.get(scenario_case=self.sc) self.assertEqual(choices.HTTPCallChoices.failed, report.result)
def parse_response_text(self, text, endpoints): for ep in endpoints: host = reverse_sub('run_test', ep.subdomain, kwargs={'relative_url': ''}) parsed = self.sub_url_response(text, host, ep) return parsed
def to_representation(self, value): v = super().to_representation(value) request = self.context['request'] if settings.DEBUG: host = 'http://{}'.format(request.get_host()) else: host = 'https://{}'.format(request.get_host()) v['subdomain'] = reverse_sub('run_test', subdomain=value.subdomain, kwargs={'relative_url': ''}) return v
def test_hard_matching(self): url = reverse_sub('run_test', self.exp_url.subdomain, kwargs={'relative_url': 'test/xxx/t'}) call = self.app.get(url, extra_environ={ 'HTTP_HOST': '{}-example.com'.format(self.exp_url.subdomain) }, user=self.session.user, status=[404]) rp = Report.objects.filter(scenario_case=self.scenarioCase_hard) self.assertTrue(len(rp) != 0)
def test_retrieve_no_entry(self): url = reverse_sub('run_test', self.exp_url.subdomain, kwargs={'relative_url': ''}) call = self.app.get(url, extra_environ={ 'HTTP_HOST': '{}-example.com'.format(self.exp_url.subdomain) }, user=self.session.user) call2 = self.app.get(reverse('testsession:session_log', kwargs={'uuid': self.session.uuid}), user=self.session.user) self.assertTrue(url in call2.text)
def rewrite_request_body(self, request, exposed): """ Rewrites the request body's to replace the ATV URL endpoints to the VNG Reference endpoints https://testplatform/runtest/XXXX/api/v1/zaken/123 -> https://ref.tst.vng.cloud/zrc/api/v1/zaken/123 """ parsed = request.body.decode('utf-8') for eu in exposed: host = reverse_sub('run_test', eu.subdomain, kwargs={'relative_url': ''}) parsed = self.sub_url_request(parsed, host, eu) logger.info("Rewriting request body:{}".format(parsed)) return parsed
def parse_response(self, response, request, base_url, endpoints): """ Rewrites the VNG Reference responses to make use of ATV URL endpoints: https://ref.tst.vng.cloud/zrc/api/v1/zaken/123 -> https://testplatform/runtest/XXXX/api/v1/zaken/123 """ parsed = response.text for ep in endpoints: host = reverse_sub('run_test', ep.subdomain, kwargs={'relative_url': ''}) parsed = self.sub_url_response(parsed, host, ep) logger.info("Rewriting response body: {}".format(parsed)) return parsed
def test_no_rewrite_header(self): url = reverse_sub('run_test', self.endpoint_echo_h.subdomain, kwargs={'relative_url': ''}) headers = {'authorization': 'dummy'} call = self.app.get(url, extra_environ={ 'HTTP_HOST': '{}-example.com'.format( self.endpoint_echo_h.subdomain) }, headers=headers, user=self.endpoint_echo_h.session.user) self.assertEqual(call.json['headers']['authorization'], headers['authorization'])
def test_rewrite_body(self, mock_logger): url = reverse_sub('run_test', self.endpoint_echo_e.subdomain, kwargs={'relative_url': 'post/'}) call = self.app.post(url, url, extra_environ={ 'HTTP_HOST': '{}-example.com'.format( self.endpoint_echo_e.subdomain) }, user=self.endpoint_echo_e.session.user) self.assertIn('Rewriting request body:', mock_logger.info.call_args_list[-7][0][0]) self.assertIn(url, call.text)
def test_query_params_put(self): report = len(Report.objects.filter(scenario_case=self.scenario_case_p)) url = reverse_sub('run_test', self.exposed_url_p.subdomain, kwargs={'relative_url': self.scenario_case_p.url}) call = self.app.put(url + '?{}=dummy'.format(self.qp_p.name), extra_environ={ 'HTTP_HOST': '{}-example.com'.format( self.exposed_url_p.subdomain) }, user=self.session_p.user, status=[404]) self.assertEqual( report + 1, len(Report.objects.filter(scenario_case=self.scenario_case_p)))
def test_query_params_no_match(self): report = len(Report.objects.filter(scenario_case=self.scenario_case)) url = reverse_sub('run_test', self.exposed_url.subdomain, kwargs={'relative_url': self.scenario_case.url}) call = self.app.get(url, extra_environ={ 'HTTP_HOST': '{}-example.com'.format( self.exposed_url.subdomain) }, user=self.session.user, status=[404]) self.assertEqual( report, len(Report.objects.filter(scenario_case=self.scenario_case)))
def test_query_params_match(self): qp = QueryParamsScenarioFactory(scenario_case=self.scenario_case, expected_value='dummy', name='strict') report = len(Report.objects.filter(scenario_case=self.scenario_case)) url = reverse_sub('run_test', self.exposed_url.subdomain, kwargs={'relative_url': self.scenario_case.url}) call = self.app.get(url, { 'strict': 'dummy', self.qp.name: 'dummy' }, extra_environ={ 'HTTP_HOST': '{}-example.com'.format( self.exposed_url.subdomain) }, user=self.session.user, status=[404]) self.assertEqual( report + 1, len(Report.objects.filter(scenario_case=self.scenario_case)))