def test_send_sms_raises_if_mmg_rejects_with_read_timeout(rmock):
    to = content = reference = 'foo'

    with pytest.raises(MMGClientResponseException) as exc:
        rmock.register_uri('POST', 'https://example.com/mmg', exc=ReadTimeout)
        mmg_client.send_sms(to, content, reference)

    assert exc.value.status_code == 504
    assert exc.value.text == 'Gateway Time-out'
Exemple #2
0
def test_send_sms_raises_if_mmg_rejects_with_connect_timeout(rmock):
    to = content = reference = 'foo'

    with pytest.raises(MMGClientResponseException) as exc:
        rmock.register_uri('POST',
                           'https://api.mmg.co.uk/json/api.php',
                           exc=ConnectTimeout)
        mmg_client.send_sms(to, content, reference)

    assert exc.value.status_code == 504
    assert exc.value.text == 'Gateway Time-out'
def test_send_sms_raises_if_mmg_fails_to_return_json(notify_api, mocker):
    to = content = reference = 'foo'
    response_dict = 'NOT AT ALL VALID JSON {"key" : "value"}}'

    with pytest.raises(SmsClientResponseException) as exc, requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php', text=response_dict, status_code=200)
        mmg_client.send_sms(to, content, reference)

    assert 'app.clients.sms.mmg.MMGClientResponseException: Code 200 text NOT AT ALL VALID JSON {"key" : "value"}} exception Expecting value: line 1 column 1 (char 0)' in str(exc)  # noqa
    assert exc.value.status_code == 200
    assert exc.value.text == 'NOT AT ALL VALID JSON {"key" : "value"}}'
def test_send_sms_override_configured_shortcode_with_sender(notify_api, mocker):
    to = '+447234567890'
    content = 'my message'
    reference = 'my reference'
    response_dict = {'Reference': 12345678}
    sender = 'fromservice'

    with requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
        mmg_client.send_sms(to, content, reference, sender=sender)

    request_args = request_mock.request_history[0].json()
    assert request_args['sender'] == 'fromservice'
Exemple #5
0
def test_send_sms_raises_if_mmg_rejects(notify_api, mocker):
    to = content = reference = 'foo'
    response_dict = {'Error': 206, 'Description': 'Some kind of error'}

    with pytest.raises(SmsClientResponseException
                       ) as exc, requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php',
                          json=response_dict,
                          status_code=400)
        mmg_client.send_sms(to, content, reference)

    assert exc.value.status_code == 400
    assert '"Error": 206' in exc.value.text
    assert '"Description": "Some kind of error"' in exc.value.text
    assert type(exc.value.exception) == HTTPError
Exemple #6
0
def test_send_sms_raises_if_mmg_fails_to_return_json(notify_api, mocker):
    to = content = reference = 'foo'
    response_dict = 'NOT AT ALL VALID JSON {"key" : "value"}}'

    with pytest.raises(SmsClientResponseException
                       ) as exc, requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php',
                          text=response_dict,
                          status_code=200)
        mmg_client.send_sms(to, content, reference)

    assert 'app.clients.sms.mmg.MMGClientResponseException: Code 200 text NOT AT ALL VALID JSON {"key" : "value"}} exception Expecting value: line 1 column 1 (char 0)' in str(
        exc)  # noqa
    assert exc.value.status_code == 200
    assert exc.value.text == 'NOT AT ALL VALID JSON {"key" : "value"}}'
def test_send_sms_raises_if_mmg_rejects(notify_api, mocker):
    to = content = reference = 'foo'
    response_dict = {
        'Error': 206,
        'Description': 'Some kind of error'
    }

    with pytest.raises(SmsClientResponseException) as exc, requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=400)
        mmg_client.send_sms(to, content, reference)

    assert exc.value.status_code == 400
    assert '"Error": 206' in exc.value.text
    assert '"Description": "Some kind of error"' in exc.value.text
    assert type(exc.value.exception) == HTTPError
Exemple #8
0
def test_send_sms_override_configured_shortcode_with_sender(
        notify_api, mocker):
    to = '+447234567890'
    content = 'my message'
    reference = 'my reference'
    response_dict = {'Reference': 12345678}
    sender = 'fromservice'

    with requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php',
                          json=response_dict,
                          status_code=200)
        mmg_client.send_sms(to, content, reference, sender=sender)

    request_args = request_mock.request_history[0].json()
    assert request_args['sender'] == 'fromservice'
def test_send_sms_successful_returns_mmg_response(notify_api, mocker):
    to = content = reference = 'foo'
    response_dict = {'Reference': 12345678}

    with requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
        response = mmg_client.send_sms(to, content, reference)

    response_json = response.json()
    assert response.status_code == 200
    assert response_json['Reference'] == 12345678
def test_send_sms_calls_mmg_correctly(notify_api, mocker):
    to = '+447234567890'
    content = 'my message'
    reference = 'my reference'
    response_dict = {'Reference': 12345678}

    with requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php', json=response_dict, status_code=200)
        mmg_client.send_sms(to, content, reference)

    assert request_mock.call_count == 1
    assert request_mock.request_history[0].url == 'https://api.mmg.co.uk/json/api.php'
    assert request_mock.request_history[0].method == 'POST'

    request_args = request_mock.request_history[0].json()
    assert request_args['reqType'] == 'BULK'
    assert request_args['MSISDN'] == to
    assert request_args['msg'] == content
    assert request_args['sender'] == 'testing'
    assert request_args['cid'] == reference
    assert request_args['multi'] is True
Exemple #11
0
def test_send_sms_successful_returns_mmg_response(notify_api, mocker):
    to = content = reference = 'foo'
    response_dict = {'Reference': 12345678}

    with requests_mock.Mocker() as request_mock:
        request_mock.post('https://api.mmg.co.uk/json/api.php',
                          json=response_dict,
                          status_code=200)
        response = mmg_client.send_sms(to, content, reference)

    response_json = response.json()
    assert response.status_code == 200
    assert response_json['Reference'] == 12345678
def test_send_sms_calls_mmg_correctly(notify_api, mocker):
    to = '+447234567890'
    content = 'my message'
    reference = 'my reference'
    response_dict = {'Reference': 12345678}

    with requests_mock.Mocker() as request_mock:
        request_mock.post('https://example.com/mmg',
                          json=response_dict,
                          status_code=200)
        mmg_client.send_sms(to, content, reference)

    assert request_mock.call_count == 1
    assert request_mock.request_history[0].url == 'https://example.com/mmg'
    assert request_mock.request_history[0].method == 'POST'

    request_args = request_mock.request_history[0].json()
    assert request_args['reqType'] == 'BULK'
    assert request_args['MSISDN'] == to
    assert request_args['msg'] == content
    assert request_args['sender'] == 'testing'
    assert request_args['cid'] == reference
    assert request_args['multi'] is True