Coverage for src/pytest_xray/evidence.py: 100.0%
28 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 14:00 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 14:00 +0000
1import base64
2from typing import AnyStr
4from pytest_xray.exceptions import XrayError
6# Content Types
7IMAGE_JPEG: str = 'image/jpeg'
8IMAGE_PNG: str = 'image/png'
9PLAIN_TEXT: str = 'text/plain'
10TEXT_HTML: str = 'text/html'
11APP_JSON: str = 'application/json'
12APP_ZIP: str = 'application/zip'
15def evidence(data: AnyStr, filename: str, content_type: str) -> dict[str, str]:
16 if isinstance(data, bytes):
17 data_base64: str = base64.b64encode(data).decode('utf-8')
18 elif isinstance(data, str):
19 data_base64 = base64.b64encode(data.encode('utf-8')).decode('utf-8')
20 else:
21 raise XrayError('data must be string or bytes')
23 return {'data': data_base64, 'filename': filename, 'contentType': content_type}
26def jpeg(data: AnyStr, filename: str) -> dict[str, str]:
27 return evidence(data, filename, IMAGE_JPEG)
30def png(data: AnyStr, filename: str) -> dict[str, str]:
31 return evidence(data, filename, IMAGE_PNG)
34def text(data: AnyStr, filename: str) -> dict[str, str]:
35 return evidence(data, filename, PLAIN_TEXT)
38def html(data: AnyStr, filename: str) -> dict[str, str]:
39 return evidence(data, filename, TEXT_HTML)
42def json(data: AnyStr, filename: str) -> dict[str, str]:
43 return evidence(data, filename, APP_JSON)
46def zip(data: AnyStr, filename: str) -> dict[str, str]:
47 return evidence(data, filename, APP_ZIP)