Skip to content

Commit 2834d1a

Browse files
Added tests for mixed query or form parameters
1 parent 7b1a299 commit 2834d1a

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

ASCOM.Alpaca.Simulators/Controllers/BaseController.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,29 @@ internal bool BadRequestAlpacaProtocol(out BadRequestObjectResult Result)
3737
Logging.Log.LogError($"Error on request {HttpContext.Request.Path} with details: {Result.Value?.ToString()}");
3838
return true;
3939
}
40+
41+
42+
if (HttpContext.Request.Query.Any())
43+
{
44+
var keys = HttpContext.Request.Query.Keys;
45+
Result = BadRequest(Strings.FormWithQueryDescription + string.Join(", ", keys));
46+
Logging.Log.LogError($"Error on request {HttpContext.Request.Path} with details: {Result.Value?.ToString()}");
47+
return true;
48+
}
4049
}
4150

4251
if (HttpContext.Request.Query.Keys.Any(key => !ValidAlpacaKeys.ValidParameterKeys.Contains(key)))
4352
{
4453
var keys = HttpContext.Request.Query.Keys.Where(key => !ValidAlpacaKeys.ValidParameterKeys.Contains(key));
45-
Result = BadRequest(Strings.QueryCapitalizationDescription + string.Join(", ", keys));
54+
Result = BadRequest(Strings.FormCapitalizationDescription + string.Join(", ", keys));
55+
Logging.Log.LogError($"Error on request {HttpContext.Request.Path} with details: {Result.Value?.ToString()}");
56+
return true;
57+
}
58+
59+
if (HttpContext.Request.Method == "GET" && HttpContext.Request.HasFormContentType && HttpContext.Request.Form.Keys.Any())
60+
{
61+
var keys = HttpContext.Request.Form.Keys;
62+
Result = BadRequest(Strings.QueryWithFormDescription + string.Join(", ", keys));
4663
Logging.Log.LogError($"Error on request {HttpContext.Request.Path} with details: {Result.Value?.ToString()}");
4764
return true;
4865
}

ASCOM.Alpaca.Simulators/Documentation/Strings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@ public class Strings
1010
public const string URLCapitalizationDescription = @"The API URL is required to be lowercase. Supplied URL: ";
1111
public const string FormCapitalizationDescription = @"The API Form is required to match the Alpaca Specification. Unknown Form Key(s): ";
1212
public const string QueryCapitalizationDescription = @"The API Query is required to match the Alpaca Specification. Unknown Query Key(s): ";
13+
public const string FormWithQueryDescription = @"A Form request should not have any Query Keys. Unknown Query Key(s): ";
14+
public const string QueryWithFormDescription = @"A Query request should not have any Form Keys. Unknown Form Key(s): ";
1315
}
1416
}

0 commit comments

Comments
 (0)