def service_add_sms_sender(service_id):
    form = ServiceSmsSenderForm()
    first_sms_sender = current_service.count_sms_senders == 0
    if form.validate_on_submit():
        service_api_client.add_sms_sender(
            current_service.id,
            sms_sender=form.sms_sender.data.replace('\r', '') or None,
            is_default=first_sms_sender
            if first_sms_sender else form.is_default.data)
        return redirect(url_for('.service_sms_senders', service_id=service_id))
    return render_template('views/service-settings/sms-sender/add.html',
                           form=form,
                           first_sms_sender=first_sms_sender)
def service_edit_sms_sender(service_id, sms_sender_id):
    sms_sender = current_service.get_sms_sender(sms_sender_id)
    is_inbound_number = sms_sender['inbound_number_id']
    if is_inbound_number:
        form = ServiceEditInboundNumberForm(
            is_default=sms_sender['is_default'])
    else:
        form = ServiceSmsSenderForm(**sms_sender)

    if form.validate_on_submit():
        service_api_client.update_sms_sender(
            current_service.id,
            sms_sender_id=sms_sender_id,
            sms_sender=sms_sender['sms_sender']
            if is_inbound_number else form.sms_sender.data.replace('\r', ''),
            is_default=True
            if sms_sender['is_default'] else form.is_default.data)
        return redirect(url_for('.service_sms_senders', service_id=service_id))

    form.is_default.data = sms_sender['is_default']
    if (request.endpoint == "main.service_confirm_delete_sms_sender"):
        flash("Are you sure you want to delete this text message sender?",
              'delete')
    return render_template('views/service-settings/sms-sender/edit.html',
                           form=form,
                           sms_sender=sms_sender,
                           inbound_number=is_inbound_number,
                           sms_sender_id=sms_sender_id)
def service_add_sms_sender(service_id):
    form = ServiceSmsSenderForm()
    blocklist_values = service_api_client.get_blocklist_for_service(
        service_id)['blocklist']
    blocklist_validator = next(v for v in form.sms_sender.validators
                               if type(v) == SenderBlocklistValidator)
    blocklist_validator.values = blocklist_values

    first_sms_sender = current_service.count_sms_senders == 0
    if form.validate_on_submit():
        service_api_client.add_sms_sender(
            current_service.id,
            sms_sender=form.sms_sender.data.replace('\r', '') or None,
            is_default=first_sms_sender
            if first_sms_sender else form.is_default.data)
        return redirect(url_for('.service_sms_senders', service_id=service_id))
    return render_template('views/service-settings/sms-sender/add.html',
                           form=form,
                           first_sms_sender=first_sms_sender)
def test_sms_sender_form_validation(
    client,
    mock_get_user_by_email,
):
    form = ServiceSmsSenderForm()

    form.sms_sender.data = 'elevenchars'
    form.validate()
    assert not form.errors

    form.sms_sender.data = ''
    form.validate()
    assert "Can’t be empty" == form.errors['sms_sender'][0]

    form.sms_sender.data = 'morethanelevenchars'
    form.validate()
    assert "Enter 11 characters or fewer" == form.errors['sms_sender'][0]

    form.sms_sender.data = '###########'
    form.validate()
    assert 'Use letters and numbers only' == form.errors['sms_sender'][0]
Esempio n. 5
0
def service_edit_sms_sender(service_id, sms_sender_id):
    if request.form and 'delete' in request.form:
        service_api_client.delete_sms_sender(
            service_id=service_id,
            sms_sender_id=sms_sender_id,
        )
        flash(f'Text message sender {sms_sender_id} deleted',
              'default_with_tick')
        return redirect(url_for('.service_sms_senders', service_id=service_id))

    sms_sender = service_api_client.get_sms_sender(service_id, sms_sender_id)
    is_inbound_number = sms_sender['inbound_number_id']
    if is_inbound_number:
        form = ServiceEditInboundNumberForm(
            is_default=sms_sender['is_default'])
    else:
        form = ServiceSmsSenderForm(**sms_sender)

    if form.validate_on_submit():
        service_api_client.update_sms_sender(
            current_service['id'],
            sms_sender_id=sms_sender_id,
            sms_sender=sms_sender['sms_sender']
            if is_inbound_number else form.sms_sender.data.replace('\r', ''),
            is_default=True
            if sms_sender['is_default'] else form.is_default.data)
        return redirect(url_for('.service_sms_senders', service_id=service_id))

    form.is_default.data = sms_sender['is_default']

    if 'delete' in request.args:
        flash('Are you sure you want to delete this text message sender?',
              'delete')

    return render_template('views/service-settings/sms-sender/edit.html',
                           form=form,
                           sms_sender=sms_sender,
                           inbound_number=is_inbound_number,
                           sms_sender_id=sms_sender_id)
def service_edit_sms_sender(service_id, sms_sender_id):
    sms_sender = service_api_client.get_sms_sender(service_id, sms_sender_id)
    is_inbound_number = sms_sender['inbound_number_id']
    if is_inbound_number:
        form = ServiceEditInboundNumberForm(is_default=sms_sender['is_default'])
    else:
        form = ServiceSmsSenderForm(**sms_sender)

    if form.validate_on_submit():
        service_api_client.update_sms_sender(
            current_service['id'],
            sms_sender_id=sms_sender_id,
            sms_sender=sms_sender['sms_sender'] if is_inbound_number else form.sms_sender.data.replace('\r', ''),
            is_default=True if sms_sender['is_default'] else form.is_default.data
        )
        return redirect(url_for('.service_sms_senders', service_id=service_id))

    form.is_default.data = sms_sender['is_default']
    return render_template(
        'views/service-settings/sms-sender/edit.html',
        form=form,
        sms_sender=sms_sender,
        inbound_number=is_inbound_number
    )
def test_sms_sender_form_validation(
    client,
    mock_get_user_by_email,
):
    form = ServiceSmsSenderForm()

    form.sms_sender.data = "elevenchars"
    form.validate()
    assert not form.errors

    form.sms_sender.data = ""
    form.validate()
    assert "This cannot be empty" == form.errors["sms_sender"][0]

    form.sms_sender.data = "morethanelevenchars"
    form.validate()
    assert "Enter 11 characters or fewer" == form.errors["sms_sender"][0]

    form.sms_sender.data = "###########"
    form.validate()
    assert "Use letters and numbers only" == form.errors["sms_sender"][0]

    form.sms_sender.data = "333"
    form.validate()
    assert "Enter 4 characters or more" == form.errors["sms_sender"][0]

    form.sms_sender.data = "4444"
    form.validate()
    assert not form.errors

    form.sms_sender.data = "00111222333"
    form.validate()
    assert "Can't start with 00" == form.errors["sms_sender"][0]
def test_sms_sender_form_validation(
    client,
    mock_get_user_by_email,
):
    form = ServiceSmsSenderForm()

    form.sms_sender.data = 'elevenchars'
    form.validate()
    assert not form.errors

    form.sms_sender.data = ''
    form.validate()
    assert "This cannot be empty" == form.errors['sms_sender'][0]

    form.sms_sender.data = 'morethanelevenchars'
    form.validate()
    assert "Enter 11 characters or fewer" == form.errors['sms_sender'][0]

    form.sms_sender.data = '###########'
    form.validate()
    assert 'Use letters and numbers only' == form.errors['sms_sender'][0]

    form.sms_sender.data = '333'
    form.validate()
    assert 'Enter 4 characters or more' == form.errors['sms_sender'][0]

    form.sms_sender.data = '4444'
    form.validate()
    assert not form.errors

    form.sms_sender.data = '00111222333'
    form.validate()
    assert "Can't start with 00" == form.errors['sms_sender'][0]
def test_sms_sender_form_validation(
    client,
    mock_get_user_by_email,
):
    form = ServiceSmsSenderForm()

    form.sms_sender.data = 'elevenchars'
    form.validate()
    assert not form.errors

    form.sms_sender.data = ''
    form.validate()
    assert "Cannot be empty" == form.errors['sms_sender'][0]

    form.sms_sender.data = 'morethanelevenchars'
    form.validate()
    assert "Enter 11 characters or fewer" == form.errors['sms_sender'][0]

    form.sms_sender.data = '###########'
    form.validate()
    assert 'Use letters and numbers only' == form.errors['sms_sender'][0]

    # Underscores are allowed
    form.sms_sender.data = 'UK_GOV'
    form.validate()
    assert not form.errors

    # Full stops are allowed
    form.sms_sender.data = 'UK.GOV'
    form.validate()
    assert not form.errors

    form.sms_sender.data = '22'
    form.validate()
    assert 'Enter 3 characters or more' == form.errors['sms_sender'][0]

    form.sms_sender.data = '333'
    form.validate()
    assert not form.errors

    form.sms_sender.data = '00111222333'
    form.validate()
    assert "Cannot start with 00" == form.errors['sms_sender'][0]