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"