@@ -7,7 +7,7 @@ defmodule OpenApiSpex.ControllerSpecsTest do
77 alias OpenApiSpexTest.DslController
88 alias OpenApiSpexTest.DslControllerOperationStructs
99
10- describe "operation/1 " do
10+ describe "operation/2 " do
1111 test "supports :parameters" do
1212 assert % OpenApiSpex.Operation {
1313 responses: % { } ,
@@ -157,5 +157,39 @@ defmodule OpenApiSpex.ControllerSpecsTest do
157157 assert % OpenApiSpex.Operation { extensions: % { "x-foo" => "bar" } } =
158158 DslController . open_api_operation ( :index )
159159 end
160+
161+ test "raises when unknown key is provided" do
162+ msg =
163+ "Unknown keys given to operation/2: [:unknown]. Allowed keys are: " <>
164+ "[:callbacks, :description, :deprecated, :external_docs, :operation_id, :parameters, " <>
165+ ":request_body, :responses, :security, :summary, :tags], and keys starting with 'x-'."
166+
167+ assert_raise ArgumentError , msg , fn ->
168+ Code . eval_string ( """
169+ defmodule TestController do
170+ use OpenApiSpex.ControllerSpecs
171+
172+ operation :index,
173+ summary: "Users index",
174+ parameters: [
175+ username: [
176+ in: :query,
177+ description: "Filter by username",
178+ type: :string
179+ ]
180+ ],
181+ responses: [
182+ ok: {"Users index response", "application/json", UsersIndexResponse}
183+ ],
184+ unknown: "value",
185+ "x-foo": "bar"
186+
187+ def index(conn, _) do
188+ json(conn, [])
189+ end
190+ end
191+ """ )
192+ end
193+ end
160194 end
161195end
0 commit comments