def test_province_success(value: str) -> None:
    Province().validate(value)  # type:ignore
def test_province_failure(value: str) -> None:
    with raises(ValidationError):
        Province().validate(value)  # type:ignore
@doc.consumes(HeaderImmuniContentTypeJson(), location="header", required=True)
@doc.consumes(HeaderImmuniAuthorizationOtpSha(), location="header", required=True)
@doc_exception(SchemaValidationException)
@doc.response(
    HTTPStatus.NO_CONTENT.value, None, description="Upload completed successfully.",
)
@validate(
    location=Location.HEADERS,
    client_clock=fields.Integer(required=True, data_key=HeaderImmuniClientClock.DATA_KEY),
    is_dummy=IntegerBoolField(
        required=True, allow_strings=True, data_key=HeaderImmuniDummyData.DATA_KEY,
    ),
)
@validate(
    location=Location.JSON,
    province=Province(),
    teks=fields.Nested(
        TemporaryExposureKeySchema, required=True, many=True, validate=TekListValidator()
    ),
    exposure_detection_summaries=fields.Nested(
        ExposureDetectionSummarySchema, required=True, many=True,
    ),
    padding=fields.String(validate=Regexp(r"^[a-zA-Z0-9]*$")),
)
@validate_token_format
@cache(no_store=True)
async def upload(  # pylint: disable=too-many-arguments
    request: Request,
    province: str,
    teks: List[TemporaryExposureKey],
    exposure_detection_summaries: List[ExposureDetectionSummary],