Skip to content

Commit a6e95e5

Browse files
authored
Merge pull request #831 from riojosdev/http-options-trace
added HTTP method `OPTIONS` (#822)
2 parents b65d233 + 169d97b commit a6e95e5

File tree

10 files changed

+40
-2
lines changed

10 files changed

+40
-2
lines changed

doc/dev_guide/api_endpoints_for_testing.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ A List of API endpoints that can be used for testing API Dash
1111

1212
#### For Testing HTTP PUT, PATCH, DELETE
1313
- https://reqres.in/
14-
14+
15+
#### For Testing HTTP OPTIONS
16+
- https://reqbin.com/echo/options
17+
1518
#### For Testing sites with Bad Certificate
1619
- https://badssl.com/
1720
- https://www.ssl.com/sample-valid-revoked-and-expired-ssl-tls-certificates/

lib/models/history_meta_model.g.dart

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/utils/ui_utils.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ Color getHTTPMethodColor(HTTPVerb? method) {
5151
HTTPVerb.put => kColorHttpMethodPut,
5252
HTTPVerb.patch => kColorHttpMethodPatch,
5353
HTTPVerb.delete => kColorHttpMethodDelete,
54+
HTTPVerb.options => kColorHttpMethodOptions,
5455
_ => kColorHttpMethodGet,
5556
};
5657
return col;

packages/apidash_core/lib/consts.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ enum HTTPVerb {
1717
post("POST"),
1818
put("PUT"),
1919
patch("PAT"),
20-
delete("DEL");
20+
delete("DEL"),
21+
options("OPT");
2122

2223
const HTTPVerb(this.abbr);
2324
final String abbr;

packages/apidash_core/lib/models/http_request_model.g.dart

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/apidash_core/lib/services/http_service.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
9494
case HTTPVerb.put:
9595
case HTTPVerb.patch:
9696
case HTTPVerb.delete:
97+
case HTTPVerb.options:
9798
final request = prepareHttpRequest(
9899
url: requestUrl,
99100
method: requestModel.method.name.toUpperCase(),

packages/apidash_design_system/lib/tokens/colors.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ final kColorHttpMethodPost = Colors.blue.shade800;
2323
final kColorHttpMethodPut = Colors.amber.shade900;
2424
final kColorHttpMethodPatch = kColorHttpMethodPut;
2525
final kColorHttpMethodDelete = Colors.red.shade800;
26+
final kColorHttpMethodOptions = Colors.deepPurple.shade800;
2627

2728
final kColorGQL = Colors.pink.shade600;
2829

test/models/http_request_models.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,3 +466,9 @@ const httpRequestModelPost13 = HttpRequestModel(
466466
"text": "I LOVE Flutter"
467467
}""",
468468
);
469+
470+
/// Basic OPTIONS request model
471+
const httpRequestModelOptions1 = HttpRequestModel(
472+
method: HTTPVerb.options,
473+
url: 'https://reqbin.com/echo/options',
474+
);

test/models/request_models.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,3 +253,9 @@ const requestModelPost13 = RequestModel(
253253
apiType: APIType.rest,
254254
httpRequestModel: httpRequestModelPost13,
255255
);
256+
257+
const requestModelOptions1 = RequestModel(
258+
id: 'options1',
259+
apiType: APIType.rest,
260+
httpRequestModel: httpRequestModelOptions1,
261+
);

test/models/response_model_test.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,21 @@ void main() {
119119
test('Testing hashcode', () {
120120
expect(responseModel.hashCode, greaterThan(0));
121121
});
122+
123+
test('Testing fromResponse for OPTIONS method', () async {
124+
var responseRec = await sendHttpRequest(
125+
requestModelOptions1.id,
126+
requestModelOptions1.apiType,
127+
requestModelOptions1.httpRequestModel!,
128+
defaultUriScheme: kDefaultUriScheme,
129+
noSSL: false,
130+
);
131+
132+
final responseData = responseModel.fromResponse(response: responseRec.$1!);
133+
expect(responseData.statusCode, 200);
134+
expect(responseData.headers?['access-control-allow-methods'], 'GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS');
135+
expect(responseData.headers?['access-control-allow-methods']?.contains("OPTIONS"), true);
136+
expect(responseData.headers?['allow'], 'GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS');
137+
expect(responseData.headers?['allow']?.contains("OPTIONS"), true);
138+
});
122139
}

0 commit comments

Comments
 (0)