""" Unit tests for cell_name and domain length validation in update_config(). """ import sys import os import json # Ensure api/ is on the path sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'api')) import pytest from app import app @pytest.fixture def client(): app.config['TESTING'] = True with app.test_client() as c: yield c def put_config(client, payload): return client.put( '/api/config', data=json.dumps(payload), content_type='application/json', ) # --------------------------------------------------------------------------- # cell_name validation # --------------------------------------------------------------------------- def test_cell_name_too_long_returns_400(client): """cell_name > 255 characters must be rejected with 400.""" resp = put_config(client, {'cell_name': 'a' * 256}) assert resp.status_code == 400 body = json.loads(resp.data) assert 'cell_name' in body['error'] assert '255' in body['error'] def test_cell_name_exactly_255_returns_200(client): """cell_name of exactly 255 characters must be accepted.""" resp = put_config(client, {'cell_name': 'a' * 255}) assert resp.status_code == 200 def test_cell_name_empty_string_returns_400(client): """Empty cell_name must be rejected with 400.""" resp = put_config(client, {'cell_name': ''}) assert resp.status_code == 400 body = json.loads(resp.data) assert 'cell_name' in body['error'] def test_cell_name_valid_returns_200(client): """A short, valid cell_name must be accepted.""" resp = put_config(client, {'cell_name': 'mycell'}) assert resp.status_code == 200 # --------------------------------------------------------------------------- # domain validation # --------------------------------------------------------------------------- def test_domain_too_long_returns_400(client): """domain > 255 characters must be rejected with 400.""" resp = put_config(client, {'domain': 'b' * 256}) assert resp.status_code == 400 body = json.loads(resp.data) assert 'domain' in body['error'] assert '255' in body['error'] def test_domain_exactly_255_returns_200(client): """domain of exactly 255 characters must be accepted.""" resp = put_config(client, {'domain': 'b' * 255}) assert resp.status_code == 200 def test_domain_empty_string_returns_400(client): """Empty domain must be rejected with 400.""" resp = put_config(client, {'domain': ''}) assert resp.status_code == 400 body = json.loads(resp.data) assert 'domain' in body['error'] def test_domain_valid_returns_200(client): """A short, valid domain must be accepted.""" resp = put_config(client, {'domain': 'cell.local'}) assert resp.status_code == 200