Skip to content

Commit

Permalink
Merge pull request #73 from NOAA-GSL/feat/idsse-892/das-request-schema
Browse files Browse the repository at this point in the history
Create general DAS request schema
  • Loading branch information
Geary-Layne authored Aug 28, 2024
2 parents 7d47879 + 2a80cce commit 65b0adf
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"description": "Mechanism for making a DAS data request",
"allOf": [
{"$ref": "source.json#/Source"}
{"$ref": "data_request.json#/DataRequest"}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"properties": {
"request": {
"allOf": [
{"$ref": "source.json#/Source"}
{"$ref": "data_request.json#/DataRequest"}
]
},
"corrId": {"$ref": "corr_id.json#/CorrId"}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
"description": "Mechanism for making a request about what data is available",
"allOf": [{"$ref": "available_data.json#/AvailableData"}]
"allOf": [
{"$ref": "info_request.json#/InfoRequest"}
]
}
15 changes: 15 additions & 0 deletions python/idsse_common/idsse/common/schema/das_request_schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"description": "Mechanism for making a DAS request, either an available or data request",
"oneOf": [
{
"allOf": [
{"$ref": "info_request.json#/InfoRequest"}
]
},
{
"allOf": [
{"$ref": "data_request.json#/DataRequest"}
]
}
]
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"Source": {
"DataRequest": {
"description": "Mechanism for specifying an input source, typically for operator",
"oneOf": [
{"allOf": [{"$ref": "raw_data.json#/RawData"}]},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"AvailableIssue": {
"IssueRequest": {
"description": "Mechanism for making a request regarding what issue is available",
"type": "object",
"properties": {
Expand Down Expand Up @@ -30,7 +30,7 @@
]
},

"AvailableValidLead": {
"ValidLeadRequest": {
"description": "Mechanism for making a request regarding what valid (or lead) is available",
"type": "object",
"properties": {
Expand Down Expand Up @@ -58,7 +58,7 @@
]
},

"AvailableField": {
"FieldRequest": {
"description": "Mechanism for making a request if a field is available",
"type": "object",
"properties": {
Expand All @@ -71,13 +71,13 @@
]
},

"AvailableData": {
"InfoRequest": {
"description": "Mechanism for making a request about what data is available",
"type": "object",
"oneOf": [
{"$ref": "#/AvailableIssue"},
{"$ref": "#/AvailableValidLead"},
{"$ref": "#/AvailableField"}
{"$ref": "#/IssueRequest"},
{"$ref": "#/ValidLeadRequest"},
{"$ref": "#/FieldRequest"}
]
}
}
4 changes: 2 additions & 2 deletions python/idsse_common/idsse/common/schema/operator.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
"sourceObj": {
"type": "object",
"properties": {
"source": {"$ref": "source.json#/Source"},
"source": {"$ref": "data_request.json#/DataRequest"},
"sources":{
"type": "array",
"minItems": 2,
"items": {"$ref": "source.json#/Source"}
"items": {"$ref": "data_request.json#/DataRequest"}
}
},
"oneOf": [
Expand Down
36 changes: 18 additions & 18 deletions python/idsse_common/test/test_validate_das_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@


@fixture
def available_data_validator() -> Validator:
schema_name = 'das_available_data_schema'
def info_request_validator() -> Validator:
schema_name = 'das_info_request_schema'
return get_validator(schema_name)


Expand Down Expand Up @@ -95,78 +95,78 @@ def das_data_message() -> dict:


# tests
def test_validate_das_issue_request(available_data_validator: Validator):
def test_validate_das_issue_request(info_request_validator: Validator):
message = {'sourceType': 'issue',
'sourceObj': {'product': 'NBM.AWS.GRIB',
'region': 'PUERTO_RICO',
'field': 'TEMP',
}}
try:
available_data_validator.validate(message)
info_request_validator.validate(message)
except ValidationError as exc:
assert False, f'Validate message raised an exception {exc}'


def test_validate_das_bad_issue_request(available_data_validator: Validator):
def test_validate_das_bad_issue_request(info_request_validator: Validator):
# message is missing 'region'
message = {'sourceType': 'field',
'sourceObj': {'product': 'NBM.AWS.GRIB',
'field': 'TEMP',
'valid': '2022-01-02T15:00:00.000Z'
}}
with raises(ValidationError):
available_data_validator.validate(message)
info_request_validator.validate(message)


def test_validate_das_valid_request(available_data_validator: Validator):
def test_validate_das_valid_request(info_request_validator: Validator):
message = {'sourceType': 'valid',
'sourceObj': {'product': 'NBM.AWS.GRIB',
'region': 'PUERTO_RICO',
'field': 'TEMP',
'issue': '2022-01-02T12:00:00.000Z'
}}
try:
available_data_validator.validate(message)
info_request_validator.validate(message)
except ValidationError as exc:
assert False, f'Validate message raised an exception {exc}'


def test_validate_das_bad_valid_request(available_data_validator: Validator):
def test_validate_das_bad_valid_request(info_request_validator: Validator):
# message is missing 'field'
message = {'sourceType': 'valid',
'sourceObj': {'product': 'NBM.AWS.GRIB',
'region': 'PUERTO_RICO',
'issue': '2022-01-02T12:00:00.000Z'
}}
with raises(ValidationError):
available_data_validator.validate(message)
info_request_validator.validate(message)


def test_validate_das_lead_request(available_data_validator: Validator):
def test_validate_das_lead_request(info_request_validator: Validator):
message = {'sourceType': 'lead',
'sourceObj': {'product': 'NBM.AWS.GRIB',
'region': 'PUERTO_RICO',
'field': 'TEMP',
'issue': '2022-01-02T12:00:00.000Z'
}}
try:
available_data_validator.validate(message)
info_request_validator.validate(message)
except ValidationError as exc:
assert False, f'Validate message raised an exception {exc}'


def test_validate_das_bad_lead_request(available_data_validator: Validator):
def test_validate_das_bad_lead_request(info_request_validator: Validator):
# message is missing 'product'
message = {'sourceType': 'valid',
'sourceObj': {'region': 'PUERTO_RICO',
'field': 'TEMP',
'issue': '2022-01-02T12:00:00.000Z'
}}
with raises(ValidationError):
available_data_validator.validate(message)
info_request_validator.validate(message)


def test_validate_das_field_request(available_data_validator: Validator):
def test_validate_das_field_request(info_request_validator: Validator):
message = {'sourceType': 'field',
'sourceObj': {'product': 'NBM.AWS.GRIB',
'region': 'PUERTO_RICO',
Expand All @@ -175,12 +175,12 @@ def test_validate_das_field_request(available_data_validator: Validator):
'valid': '2022-01-02T15:00:00.000Z'
}}
try:
available_data_validator.validate(message)
info_request_validator.validate(message)
except ValidationError as exc:
assert False, f'Validate message raised an exception {exc}'


def test_validate_das_bad_field_request(available_data_validator: Validator):
def test_validate_das_bad_field_request(info_request_validator: Validator):
# message is missing 'issue'
message = {'sourceType': 'field',
'sourceObj': {'product': 'NBM.AWS.GRIB',
Expand All @@ -189,7 +189,7 @@ def test_validate_das_bad_field_request(available_data_validator: Validator):
'valid': '2022-01-02T15:00:00.000Z'
}}
with raises(ValidationError):
available_data_validator.validate(message)
info_request_validator.validate(message)


def test_validate_das_data_request(data_request_validator: Validator):
Expand Down

0 comments on commit 65b0adf

Please sign in to comment.