Improved parameter validation
Change-Id: If2e7ec1b063a6e114a6c5582463af784b75c37b8
diff --git a/validation/validator_test.go b/validation/validator_test.go
index 43254a7..88d01a2 100644
--- a/validation/validator_test.go
+++ b/validation/validator_test.go
@@ -96,22 +96,78 @@
errorMsg: "query is required and cannot be empty",
},
{
+ name: "valid_poliqarp_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "poliqarp",
+ },
+ expectErr: false,
+ },
+ {
+ name: "valid_poliqarpplus_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "poliqarpplus",
+ },
+ expectErr: false,
+ },
+ {
+ name: "valid_cosmas2_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "cosmas2",
+ },
+ expectErr: false,
+ },
+ {
+ name: "valid_annis_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "annis",
+ },
+ expectErr: false,
+ },
+ {
+ name: "valid_cql_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "cql",
+ },
+ expectErr: false,
+ },
+ {
+ name: "valid_cqp_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "cqp",
+ },
+ expectErr: false,
+ },
+ {
+ name: "valid_fcsql_language",
+ request: SearchRequest{
+ Query: "test query",
+ QueryLanguage: "fcsql",
+ },
+ expectErr: false,
+ },
+ {
name: "invalid_query_language",
request: SearchRequest{
Query: "test query",
QueryLanguage: "invalid",
},
expectErr: true,
- errorMsg: "invalid query language",
+ errorMsg: "invalid query language, must be one of: poliqarp, poliqarpplus, cosmas2, annis, cql, cqp, fcsql",
},
{
name: "invalid_corpus_id",
request: SearchRequest{
Query: "test query",
- Corpus: "invalid corpus!",
+ Corpus: "invalid@corpus#format",
},
expectErr: true,
- errorMsg: "corpus ID contains invalid characters",
+ errorMsg: "collection query contains invalid characters",
},
{
name: "count_negative",
@@ -231,10 +287,10 @@
name: "invalid_corpus_id",
request: MetadataRequest{
Action: "statistics",
- Corpus: "invalid corpus!",
+ Corpus: "invalid@corpus#format",
},
expectErr: true,
- errorMsg: "corpus ID contains invalid characters",
+ errorMsg: "collection query contains invalid characters",
},
}
@@ -465,7 +521,7 @@
response: &service.CorpusListResponse{
Corpora: []service.CorpusInfo{
{
- ID: "invalid id!",
+ ID: "invalid@corpus#format",
Name: "Test Corpus",
Documents: 100,
Tokens: 50000,
@@ -473,7 +529,7 @@
},
},
expectErr: true,
- errorMsg: "corpus ID contains invalid characters",
+ errorMsg: "collection query contains invalid characters",
},
{
name: "corpus_missing_name",
@@ -708,15 +764,34 @@
},
{
name: "corpus_id_invalid_chars",
- corpusID: "invalid corpus!",
+ corpusID: "invalid@corpus#format",
expectErr: true,
- errorMsg: "corpus ID contains invalid characters",
+ errorMsg: "collection query contains invalid characters",
},
{
name: "corpus_id_with_space",
corpusID: "corpus with space",
- expectErr: true,
- errorMsg: "corpus ID contains invalid characters",
+ expectErr: false, // Now allowed with updated regex
+ },
+ {
+ name: "corpus_id_with_boolean_operators",
+ corpusID: "corpus1 & corpus2",
+ expectErr: false, // Now allowed with updated regex
+ },
+ {
+ name: "collection_query_with_metadata",
+ corpusID: "textClass = \"politics\" & pubDate in 2020",
+ expectErr: false, // Collection query syntax
+ },
+ {
+ name: "collection_query_with_regex",
+ corpusID: "corpusSigle = \"DeReKo/WPD*\" & availability = /CC.*/",
+ expectErr: false, // Collection query with regex
+ },
+ {
+ name: "collection_query_complex",
+ corpusID: "(textType = \"news\" | textType = \"blog\") & textClass != \"fiction\"",
+ expectErr: false, // Complex collection query
},
}