summaryrefslogtreecommitdiffstats
path: root/tests/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/server.py')
-rwxr-xr-xtests/server.py43
1 files changed, 39 insertions, 4 deletions
diff --git a/tests/server.py b/tests/server.py
index c77d7f6..09410b2 100755
--- a/tests/server.py
+++ b/tests/server.py
@@ -64,10 +64,33 @@ for _n in range(600):
"ibge": "3550308", "gia": "", "ddd": "11", "siafi": "7107",
}
+# Bands the API knows about. A 404 for a CEP inside one carries the owning
+# municipality in "faixa"; a 404 outside every band omits the key entirely.
+# cep_ini/cep_fim inside the object are the extreme CEPs that exist, which is
+# why they differ from the band bounds: 25845000 is in the band, is the DNE's
+# own start for Areal, and does not exist.
+FAIXAS = [
+ ("25845000", "25849999", {
+ "localidade": "Areal", "uf": "RJ", "estado": "Rio de Janeiro",
+ "regiao": "Sudeste", "ibge": "3300225", "cep_ini": "25845001",
+ "cep_fim": "25849899", "ceps": 118,
+ }),
+]
+
HITS = {}
LOCK = threading.Lock()
+def not_found(cep=None):
+ body = {"erro": "cep_nao_encontrado",
+ "mensagem": "CEP não existe na base do DNE"}
+ for low, high, faixa in FAIXAS:
+ if cep is not None and low <= cep <= high:
+ body["faixa"] = faixa
+ break
+ return json.dumps(body, ensure_ascii=False)
+
+
def bump(prefix):
with LOCK:
HITS[prefix] = HITS.get(prefix, 0) + 1
@@ -167,6 +190,20 @@ class Handler(BaseHTTPRequestHandler):
if prefix == "escaped":
self.send(200, json.dumps(DB["01001000"], ensure_ascii=True))
return
+ if prefix == "faixavazia":
+ self.send(404, json.dumps({
+ "erro": "cep_nao_encontrado",
+ "mensagem": "CEP não existe na base do DNE",
+ "faixa": {},
+ }, ensure_ascii=False))
+ return
+ if prefix == "faixatexto":
+ self.send(404, json.dumps({
+ "erro": "cep_nao_encontrado",
+ "mensagem": "CEP não existe na base do DNE",
+ "faixa": "Areal",
+ }, ensure_ascii=False))
+ return
if parts and parts[0] == "health":
body = {"status": "ok", "dne": "26071", "ceps": 1596168,
@@ -194,8 +231,7 @@ class Handler(BaseHTTPRequestHandler):
return
if not parts:
- self.send(404, '{"erro":"cep_nao_encontrado",'
- '"mensagem":"CEP não existe na base do DNE"}')
+ self.send(404, not_found())
return
cep = parts[0]
@@ -205,8 +241,7 @@ class Handler(BaseHTTPRequestHandler):
return
entry = DB.get(cep)
if entry is None:
- self.send(404, '{"erro":"cep_nao_encontrado",'
- '"mensagem":"CEP não existe na base do DNE"}')
+ self.send(404, not_found(cep))
return
self.send(200, json.dumps(entry, ensure_ascii=False))