56 lignes
1.9 KiB
Python
56 lignes
1.9 KiB
Python
import json
|
|
import pytest
|
|
import os
|
|
from mail2sms.main import extract_parameters, send_sms, TEST_MODE
|
|
|
|
# ------------------------------
|
|
# TEST: Params extract
|
|
# ------------------------------
|
|
|
|
def test_extract_full_parameters():
|
|
subject = "Login=myuser;Password=mypass;To=+33612345678;deviceId=ABC123;simNumber=2"
|
|
to, device, sim, login, passwd = extract_parameters(subject)
|
|
assert to == "+33612345678"
|
|
assert device == "ABC123"
|
|
assert sim == "2"
|
|
assert login == "myuser"
|
|
assert passwd == "mypass"
|
|
|
|
def test_extract_partial_parameters():
|
|
subject = "to=+33612345678;Login=apiuser;Password=apipass"
|
|
to, device, sim, login, passwd = extract_parameters(subject)
|
|
assert to == "+33612345678"
|
|
assert device is None
|
|
assert sim is None
|
|
assert login == "apiuser"
|
|
assert passwd == "apipass"
|
|
|
|
def test_extract_case_insensitive():
|
|
subject = "login=USER;password=PASS;to=+33600000000;deviceId=Dev1;simNumber=1"
|
|
to, device, sim, login, passwd = extract_parameters(subject)
|
|
assert to == "+33600000000"
|
|
assert device == "Dev1"
|
|
assert sim == "1"
|
|
assert login == "USER"
|
|
assert passwd == "PASS"
|
|
|
|
def test_extract_invalid_subject():
|
|
subject = "hello world"
|
|
to, device, sim, login, passwd = extract_parameters(subject)
|
|
assert to is None
|
|
assert device is None
|
|
assert sim is None
|
|
assert login is None
|
|
assert passwd is None
|
|
|
|
# ------------------------------
|
|
# TEST: fake SMS send
|
|
# ------------------------------
|
|
|
|
def test_fake_sms_send(monkeypatch):
|
|
monkeypatch.setenv("TEST_MODE", "true")
|
|
payload = {"textMessage": {"text": "Hello world"}, "phoneNumbers": ["+33612345678"]}
|
|
response = send_sms(payload, username="fakeuser", password="fakepass")
|
|
assert response.status_code == 202
|
|
resp_json = json.loads(response.text)
|
|
assert resp_json["state"] == "Sent" |