Esempio n. 1
0
def test_repeater(request, domain):
    url = request.POST["url"]
    repeater_type = request.POST['repeater_type']
    format = request.POST.get('format', None)
    repeater_class = get_all_repeater_types()[repeater_type]

    form = GenericRepeaterForm({
        "url": url,
        "format": format
    },
                               domain=domain,
                               repeater_class=repeater_class)
    if form.is_valid():
        url = form.cleaned_data["url"]
        format = format or RegisterGenerator.default_format_by_repeater(
            repeater_class)
        generator_class = RegisterGenerator.generator_class_by_repeater_format(
            repeater_class, format)
        repeater = repeater_class(
            username=request.POST.get('username'),
            password=request.POST.get('password'),
            auth_type=request.POST.get('auth_type'),
        )
        generator = generator_class(repeater)
        fake_post = generator.get_test_payload(domain)
        headers = generator.get_headers()
        verify = not request.POST.get('skip_cert_verify') == 'true'
        try:
            resp = simple_post(
                domain,
                url,
                fake_post,
                headers=headers,
                auth_manager=repeater.get_auth_manager(),
                verify=verify,
            )
            if 200 <= resp.status_code < 300:
                return HttpResponse(
                    json.dumps({
                        "success": True,
                        "response": resp.text,
                        "status": resp.status_code
                    }))
            else:
                return HttpResponse(
                    json.dumps({
                        "success": False,
                        "response": resp.text,
                        "status": resp.status_code
                    }))

        except Exception as e:
            errors = str(e)
        return HttpResponse(json.dumps({"success": False, "response": errors}))
    else:
        return HttpResponse(
            json.dumps({
                "success": False,
                "response": "Please enter a valid url."
            }))
Esempio n. 2
0
def test_repeater(request, domain):
    url = request.POST["url"]
    repeater_type = request.POST['repeater_type']
    format = request.POST.get('format', None)
    repeater_class = get_all_repeater_types()[repeater_type]
    auth_type = request.POST.get('auth_type')

    form = GenericRepeaterForm({
        "url": url,
        "format": format
    },
                               domain=domain,
                               repeater_class=repeater_class)
    if form.is_valid():
        url = form.cleaned_data["url"]
        format = format or RegisterGenerator.default_format_by_repeater(
            repeater_class)
        generator_class = RegisterGenerator.generator_class_by_repeater_format(
            repeater_class, format)
        generator = generator_class(repeater_class())
        fake_post = generator.get_test_payload(domain)
        headers = generator.get_headers()

        username = request.POST.get('username')
        password = request.POST.get('password')
        if auth_type == BASIC_AUTH:
            auth = HTTPBasicAuth(username, password)
        elif auth_type == DIGEST_AUTH:
            auth = HTTPDigestAuth(username, password)
        else:
            auth = None

        try:
            resp = simple_post(fake_post, url, headers=headers, auth=auth)
            if 200 <= resp.status_code < 300:
                return HttpResponse(
                    json.dumps({
                        "success": True,
                        "response": resp.content,
                        "status": resp.status_code
                    }))
            else:
                return HttpResponse(
                    json.dumps({
                        "success": False,
                        "response": resp.content,
                        "status": resp.status_code
                    }))

        except Exception as e:
            errors = str(e)
        return HttpResponse(json.dumps({"success": False, "response": errors}))
    else:
        return HttpResponse(
            json.dumps({
                "success": False,
                "response": "Please enter a valid url."
            }))
Esempio n. 3
0
    def test_new_format_second_default(self):
        class NewCaseGenerator(BasePayloadGenerator):
            format_name = 'rubbish'
            format_label = 'XML'

            def get_payload(self, repeat_record, payload_doc):
                return self.payload

        with self.assertRaises(DuplicateFormatException):
            RegisterGenerator.get_collection(CaseRepeater).add_new_format(NewCaseGenerator, is_default=True)
Esempio n. 4
0
    def test_new_format_second_default(self):
        class NewCaseGenerator(BasePayloadGenerator):
            format_name = 'rubbish'
            format_label = 'XML'

            def get_payload(self, repeat_record, payload_doc):
                return self.payload

        with self.assertRaises(DuplicateFormatException):
            RegisterGenerator.get_collection(CaseRepeater).add_new_format(NewCaseGenerator, is_default=True)
Esempio n. 5
0
    def setUpClass(cls):
        super(IgnoreDocumentTest, cls).setUpClass()

        class NewFormGenerator(BasePayloadGenerator):
            format_name = 'new_format'
            format_label = 'XML'

            def get_payload(self, repeat_record, payload_doc):
                raise IgnoreDocument

        RegisterGenerator.get_collection(FormRepeater).add_new_format(NewFormGenerator)
Esempio n. 6
0
    def setUpClass(cls):
        super(IgnoreDocumentTest, cls).setUpClass()

        class NewFormGenerator(BasePayloadGenerator):
            format_name = 'new_format'
            format_label = 'XML'

            def get_payload(self, repeat_record, payload_doc):
                raise IgnoreDocument

        RegisterGenerator.get_collection(FormRepeater).add_new_format(NewFormGenerator)
Esempio n. 7
0
    def setUpClass(cls):
        super(TestRepeaterFormat, cls).setUpClass()
        cls.payload = 'some random case'

        class NewCaseGenerator(BasePayloadGenerator):
            format_name = 'new_format'
            format_label = 'XML'
            deprecated_format_names = ('new_format_alias',)

            def get_payload(self, repeat_record, payload_doc):
                return cls.payload

        RegisterGenerator.get_collection(CaseRepeater).add_new_format(NewCaseGenerator)
        cls.new_generator = NewCaseGenerator
Esempio n. 8
0
    def setUpClass(cls):
        super(TestRepeaterFormat, cls).setUpClass()
        cls.payload = 'some random case'

        class NewCaseGenerator(BasePayloadGenerator):
            format_name = 'new_format'
            format_label = 'XML'
            deprecated_format_names = ('new_format_alias',)

            def get_payload(self, repeat_record, payload_doc):
                return cls.payload

        RegisterGenerator.get_collection(CaseRepeater).add_new_format(NewCaseGenerator)
        cls.new_generator = NewCaseGenerator
Esempio n. 9
0
def test_repeater(request, domain):
    url = request.POST["url"]
    repeater_type = request.POST['repeater_type']
    format = request.POST.get('format', None)
    repeater_class = get_all_repeater_types()[repeater_type]
    auth_type = request.POST.get('auth_type')

    form = GenericRepeaterForm(
        {"url": url, "format": format},
        domain=domain,
        repeater_class=repeater_class
    )
    if form.is_valid():
        url = form.cleaned_data["url"]
        format = format or RegisterGenerator.default_format_by_repeater(repeater_class)
        generator_class = RegisterGenerator.generator_class_by_repeater_format(repeater_class, format)
        generator = generator_class(repeater_class())
        fake_post = generator.get_test_payload(domain)
        headers = generator.get_headers()

        username = request.POST.get('username')
        password = request.POST.get('password')
        verify = not request.POST.get('skip_cert_verify') == 'true'
        if auth_type == BASIC_AUTH:
            auth = HTTPBasicAuth(username, password)
        elif auth_type == DIGEST_AUTH:
            auth = HTTPDigestAuth(username, password)
        else:
            auth = None

        try:
            resp = simple_post(fake_post, url, headers=headers, auth=auth, verify=verify)
            if 200 <= resp.status_code < 300:
                return HttpResponse(json.dumps({"success": True,
                                                "response": resp.content,
                                                "status": resp.status_code}))
            else:
                return HttpResponse(json.dumps({"success": False,
                                                "response": resp.content,
                                                "status": resp.status_code}))

        except Exception as e:
            errors = str(e)
        return HttpResponse(json.dumps({"success": False, "response": errors}))
    else:
        return HttpResponse(json.dumps({"success": False, "response": "Please enter a valid url."}))
Esempio n. 10
0
    def __init__(self, *args, **kwargs):
        self.domain = kwargs.pop('domain')
        self.repeater_class = kwargs.pop('repeater_class')
        self.formats = RegisterGenerator.all_formats_by_repeater(self.repeater_class, for_domain=self.domain)
        super(GenericRepeaterForm, self).__init__(*args, **kwargs)

        self.set_extra_django_form_fields()
        self._initialize_crispy_layout()
Esempio n. 11
0
    def __init__(self, *args, **kwargs):
        self.domain = kwargs.pop('domain')
        self.repeater_class = kwargs.pop('repeater_class')
        self.formats = RegisterGenerator.all_formats_by_repeater(self.repeater_class, for_domain=self.domain)
        self.submit_btn_text = kwargs.pop('submit_btn_text', _("Start Forwarding"))
        super(GenericRepeaterForm, self).__init__(*args, **kwargs)

        self.set_extra_django_form_fields()
        self._initialize_crispy_layout()
Esempio n. 12
0
    def __init__(self, *args, **kwargs):
        if kwargs.get('data'):
            repeater = Repeater.wrap(kwargs['data'])
            if not repeater.connection_settings_id:
                repeater.create_connection_settings()

        self.domain = kwargs.pop('domain')
        self.repeater_class = kwargs.pop('repeater_class')
        self.formats = RegisterGenerator.all_formats_by_repeater(
            self.repeater_class, for_domain=self.domain)
        conns = ConnectionSettings.objects.filter(domain=self.domain)
        self.connection_settings_choices = [(c.id, c.name) for c in conns]
        self.submit_btn_text = kwargs.pop('submit_btn_text',
                                          _("Start Forwarding"))
        super(GenericRepeaterForm, self).__init__(*args, **kwargs)

        self.set_extra_django_form_fields()
        self._initialize_crispy_layout()
Esempio n. 13
0
 def _get_payload_generator(self, payload_format):
     from corehq.motech.repeaters.repeater_generators import RegisterGenerator
     gen = RegisterGenerator.generator_class_by_repeater_format(self.__class__, payload_format)
     return gen(self)
Esempio n. 14
0
 def _format_or_default_format(self):
     from corehq.motech.repeaters.repeater_generators import RegisterGenerator
     return self.format or RegisterGenerator.default_format_by_repeater(self.__class__)