def test_sms_status_fail(client: SMSC, params: dict): assert os.environ.get('PHONE') to = os.environ['PHONE'] msg_id = '1' f = furl(URL).add(path="status.php").add(params).add({ 'phone': to + ',', 'id': msg_id + ',', 'charset': 'utf-8', 'all': 2, 'fmt': 3 }).remove('sender') with requests_mock.Mocker() as m: m.get(f.url, json={}, headers={'Content-Type': 'application/json; charset=utf-8'}, status_code=404) with pytest.raises(GetStatusError): client.get_status(to=os.environ['PHONE'], msg_id=msg_id)
def test_sms_status(client: SMSC, params: dict): assert os.environ.get('PHONE') to = os.environ['PHONE'] msg_id = '1' f = furl(URL).add(path="status.php").add(params).add({ 'phone': to + ',', 'id': msg_id + ',', 'charset': 'utf-8', 'all': 2, 'fmt': 3 }).remove('sender') with requests_mock.Mocker() as m: m.get(f.url, json=[{ 'id': 1, 'send_timestamp': 1495823967, 'message': 'test', 'status_name': 'Доставлено', 'cost': '1.20', 'phone': '79262138080', 'sender_id': 'avto-disp', 'last_date': '26.05.2017 21:39:32', 'region': 'г.Москва и Московская область', 'send_date': '26.05.2017 21:39:27', 'last_timestamp': 1495823972, 'operator': 'МегаФон', 'status': 1, 'country': 'Россия' }], headers={'Content-Type': 'application/json; charset=utf-8'}) res = client.get_status(to=os.environ['PHONE'], msg_id=msg_id) assert res is not None assert isinstance(res, list) assert len(res) == 1 assert str(res).startswith('[<StatusResponse ') assert isinstance(res[0], StatusResponse) assert str( res[0] ) == "<StatusResponse id=1 status= <Status status=1 name=Доставлено>>" assert res[0].status is not None assert isinstance(res[0].status, Status) assert res[0].status.status_id == 1 assert res[0].status.name == 'Доставлено' assert res[0].data is not None assert isinstance(res[0].data, dict) for name in [ 'id', 'message', 'cost', 'phone', 'sender_id', 'last_date', 'region', 'send_date', 'operator', 'country' ]: assert name in res[0].data for name in ['send_timestamp', 'last_timestamp', 'status', 'status_name']: assert name not in res[0].data assert isinstance(res[0].data['send_date'], datetime.datetime)