You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

434 regels
18 KiB

  1. describe("feature: OpenAPI 3 allowEmptyValue", function () {
  2. beforeEach(function (client, done) {
  3. client
  4. .url("localhost:3230")
  5. .page.main()
  6. client.waitForElementVisible(".download-url-input:not([disabled])", 5000)
  7. .clearValue(".download-url-input")
  8. .setValue(".download-url-input", "/test-specs/features/allow-empty-value.openapi.yaml")
  9. .click("button.download-url-button")
  10. .waitForElementVisible(".opblock", 10000)
  11. done()
  12. })
  13. afterEach(function (client, done) {
  14. done()
  15. })
  16. describe("regular parameters", function () {
  17. it("should set and unset an integer value", function (client) {
  18. const inputSelector = `tr[data-param-name="int"] input`
  19. client // open try-it-out
  20. .click("#operations-default-get_regularParams")
  21. .waitForElementVisible("button.btn.try-out__btn", 5000)
  22. .click("button.btn.try-out__btn")
  23. .pause(200)
  24. client // set parameter, to ensure an initial value is set
  25. .setValue(inputSelector, "123")
  26. .click("button.btn.execute.opblock-control__btn")
  27. .pause(200)
  28. client // remove initial value, execute again
  29. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  30. .pause(200)
  31. .click("button.btn.execute.opblock-control__btn")
  32. .expect.element("textarea.curl").text
  33. .to.contain(`GET "http://localhost:3230/regularParams"`)
  34. })
  35. it("should set and unset a string value", function (client) {
  36. const inputSelector = `tr[data-param-name="str"] input`
  37. client // open try-it-out
  38. .click("#operations-default-get_regularParams")
  39. .waitForElementVisible("button.btn.try-out__btn", 5000)
  40. .click("button.btn.try-out__btn")
  41. .pause(200)
  42. client // set parameter, to ensure an initial value is set
  43. .setValue(inputSelector, "123")
  44. .click("button.btn.execute.opblock-control__btn")
  45. .pause(200)
  46. client // remove initial value, execute again
  47. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  48. .pause(200)
  49. .click("button.btn.execute.opblock-control__btn")
  50. .expect.element("textarea.curl").text
  51. .to.contain(`GET "http://localhost:3230/regularParams"`)
  52. })
  53. it("should set and unset a number value", function (client) {
  54. const inputSelector = `tr[data-param-name="num"] input`
  55. client // open try-it-out
  56. .click("#operations-default-get_regularParams")
  57. .waitForElementVisible("button.btn.try-out__btn", 5000)
  58. .click("button.btn.try-out__btn")
  59. .pause(200)
  60. client // set parameter, to ensure an initial value is set
  61. .setValue(inputSelector, "123")
  62. .click("button.btn.execute.opblock-control__btn")
  63. .pause(200)
  64. client // remove initial value, execute again
  65. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  66. .pause(200)
  67. .click("button.btn.execute.opblock-control__btn")
  68. .expect.element("textarea.curl").text
  69. .to.contain(`GET "http://localhost:3230/regularParams"`)
  70. })
  71. it("should set and unset a boolean value", function (client) {
  72. const inputSelector = `tr[data-param-name="bool"] select`
  73. client // open try-it-out
  74. .click("#operations-default-get_regularParams")
  75. .waitForElementVisible("button.btn.try-out__btn", 5000)
  76. .click("button.btn.try-out__btn")
  77. .pause(200)
  78. client // set parameter, to ensure an initial value is set
  79. .click(`${inputSelector} [value="true"]`)
  80. .click("button.btn.execute.opblock-control__btn")
  81. .pause(200)
  82. client // remove initial value, execute again
  83. .click(`${inputSelector} [value=""]`)
  84. .pause(200)
  85. .click("button.btn.execute.opblock-control__btn")
  86. .expect.element("textarea.curl").text
  87. .to.contain(`GET "http://localhost:3230/regularParams"`)
  88. })
  89. it("should set and unset an array value", function (client) {
  90. const inputSelector = `tr[data-param-name="arr"]`
  91. client // open try-it-out
  92. .click("#operations-default-get_regularParams")
  93. .waitForElementVisible("button.btn.try-out__btn", 5000)
  94. .click("button.btn.try-out__btn")
  95. .pause(200)
  96. client // set parameter, to ensure an initial value is set
  97. .click(`${inputSelector} .json-schema-form-item-add`)
  98. .setValue(`${inputSelector} input`, "asdf")
  99. .click("button.btn.execute.opblock-control__btn")
  100. .pause(200)
  101. client // remove initial value, execute again
  102. .click(`${inputSelector} .json-schema-form-item-remove`)
  103. .pause(200)
  104. .click("button.btn.execute.opblock-control__btn")
  105. .expect.element("textarea.curl").text
  106. .to.contain(`GET "http://localhost:3230/regularParams"`)
  107. })
  108. })
  109. describe("allowEmptyValue parameters", function () {
  110. describe("normal behavior", function () {
  111. it("should set and unset an integer value", function (client) {
  112. const inputSelector = `tr[data-param-name="int"] input`
  113. client // open try-it-out
  114. .click("#operations-default-get_emptyValueParams")
  115. .waitForElementVisible("button.btn.try-out__btn", 5000)
  116. .click("button.btn.try-out__btn")
  117. .pause(200)
  118. client // set parameter, to ensure an initial value is set
  119. .setValue(inputSelector, "123")
  120. .click("button.btn.execute.opblock-control__btn")
  121. .pause(200)
  122. client // remove initial value, execute again
  123. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  124. .pause(200)
  125. .click("button.btn.execute.opblock-control__btn")
  126. .expect.element("textarea.curl").text
  127. .to.contain(`GET "http://localhost:3230/emptyValueParams"`)
  128. })
  129. it("should set and unset a string value", function (client) {
  130. const inputSelector = `tr[data-param-name="str"] input`
  131. client // open try-it-out
  132. .click("#operations-default-get_emptyValueParams")
  133. .waitForElementVisible("button.btn.try-out__btn", 5000)
  134. .click("button.btn.try-out__btn")
  135. .pause(200)
  136. client // set parameter, to ensure an initial value is set
  137. .setValue(inputSelector, "123")
  138. .click("button.btn.execute.opblock-control__btn")
  139. .pause(200)
  140. client // remove initial value, execute again
  141. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  142. .pause(200)
  143. .click("button.btn.execute.opblock-control__btn")
  144. .expect.element("textarea.curl").text
  145. .to.contain(`GET "http://localhost:3230/emptyValueParams"`)
  146. })
  147. it("should set and unset a number value", function (client) {
  148. const inputSelector = `tr[data-param-name="num"] input`
  149. client // open try-it-out
  150. .click("#operations-default-get_emptyValueParams")
  151. .waitForElementVisible("button.btn.try-out__btn", 5000)
  152. .click("button.btn.try-out__btn")
  153. .pause(200)
  154. client // set parameter, to ensure an initial value is set
  155. .setValue(inputSelector, "123")
  156. .click("button.btn.execute.opblock-control__btn")
  157. .pause(200)
  158. client // remove initial value, execute again
  159. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  160. .pause(200)
  161. .click("button.btn.execute.opblock-control__btn")
  162. .expect.element("textarea.curl").text
  163. .to.contain(`GET "http://localhost:3230/emptyValueParams"`)
  164. })
  165. it("should set and unset a boolean value", function (client) {
  166. const inputSelector = `tr[data-param-name="bool"] select`
  167. client // open try-it-out
  168. .click("#operations-default-get_emptyValueParams")
  169. .waitForElementVisible("button.btn.try-out__btn", 5000)
  170. .click("button.btn.try-out__btn")
  171. .pause(200)
  172. client // set parameter, to ensure an initial value is set
  173. .click(`${inputSelector} [value="true"]`)
  174. .click("button.btn.execute.opblock-control__btn")
  175. .pause(200)
  176. client // remove initial value, execute again
  177. .click(`${inputSelector} [value=""]`)
  178. .pause(200)
  179. .click("button.btn.execute.opblock-control__btn")
  180. .expect.element("textarea.curl").text
  181. .to.contain(`GET "http://localhost:3230/emptyValueParams"`)
  182. })
  183. it("should set and unset an array value", function (client) {
  184. const inputSelector = `tr[data-param-name="arr"]`
  185. client // open try-it-out
  186. .click("#operations-default-get_emptyValueParams")
  187. .waitForElementVisible("button.btn.try-out__btn", 5000)
  188. .click("button.btn.try-out__btn")
  189. .pause(200)
  190. client // set parameter, to ensure an initial value is set
  191. .click(`${inputSelector} .json-schema-form-item-add`)
  192. .setValue(`${inputSelector} input`, "asdf")
  193. .click("button.btn.execute.opblock-control__btn")
  194. .pause(200)
  195. client // remove initial value, execute again
  196. .click(`${inputSelector} .json-schema-form-item-remove`)
  197. .pause(200)
  198. .click("button.btn.execute.opblock-control__btn")
  199. .expect.element("textarea.curl").text
  200. .to.contain(`GET "http://localhost:3230/emptyValueParams"`)
  201. })
  202. })
  203. describe("send empty inital value behavior", function () {
  204. it("should send an empty integer value", function (client) {
  205. const paramSelector = `tr[data-param-name="int"]`
  206. client // open try-it-out
  207. .click("#operations-default-get_emptyValueParams")
  208. .waitForElementVisible("button.btn.try-out__btn", 5000)
  209. .click("button.btn.try-out__btn")
  210. .pause(200)
  211. client // tick "send empty value" box and execute
  212. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  213. .click("button.btn.execute.opblock-control__btn")
  214. .expect.element("textarea.curl").text
  215. .to.contain(`GET "http://localhost:3230/emptyValueParams?int="`)
  216. })
  217. it("should send an empty string value", function (client) {
  218. const paramSelector = `tr[data-param-name="str"]`
  219. client // open try-it-out
  220. .click("#operations-default-get_emptyValueParams")
  221. .waitForElementVisible("button.btn.try-out__btn", 5000)
  222. .click("button.btn.try-out__btn")
  223. .pause(200)
  224. client // tick "send empty value" box and execute
  225. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  226. .click("button.btn.execute.opblock-control__btn")
  227. .expect.element("textarea.curl").text
  228. .to.contain(`GET "http://localhost:3230/emptyValueParams?str="`)
  229. })
  230. it("should send an empty number value", function (client) {
  231. const paramSelector = `tr[data-param-name="num"]`
  232. client // open try-it-out
  233. .click("#operations-default-get_emptyValueParams")
  234. .waitForElementVisible("button.btn.try-out__btn", 5000)
  235. .click("button.btn.try-out__btn")
  236. .pause(200)
  237. client // tick "send empty value" box and execute
  238. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  239. .click("button.btn.execute.opblock-control__btn")
  240. .expect.element("textarea.curl").text
  241. .to.contain(`GET "http://localhost:3230/emptyValueParams?num="`)
  242. })
  243. it("should send an empty boolean value", function (client) {
  244. const paramSelector = `tr[data-param-name="bool"]`
  245. client // open try-it-out
  246. .click("#operations-default-get_emptyValueParams")
  247. .waitForElementVisible("button.btn.try-out__btn", 5000)
  248. .click("button.btn.try-out__btn")
  249. .pause(200)
  250. client // tick "send empty value" box and execute
  251. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  252. .click("button.btn.execute.opblock-control__btn")
  253. .expect.element("textarea.curl").text
  254. .to.contain(`GET "http://localhost:3230/emptyValueParams?bool="`)
  255. })
  256. it("should send an empty array value", function (client) {
  257. const paramSelector = `tr[data-param-name="arr"]`
  258. client // open try-it-out
  259. .click("#operations-default-get_emptyValueParams")
  260. .waitForElementVisible("button.btn.try-out__btn", 5000)
  261. .click("button.btn.try-out__btn")
  262. .pause(200)
  263. client // tick "send empty value" box and execute
  264. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  265. .click("button.btn.execute.opblock-control__btn")
  266. .expect.element("textarea.curl").text
  267. .to.contain(`GET "http://localhost:3230/emptyValueParams?arr="`)
  268. })
  269. })
  270. describe("modify and send empty behavior", function () {
  271. it("should set, unset and send an empty integer value", function (client) {
  272. const paramSelector = `tr[data-param-name="int"]`
  273. const inputSelector = `${paramSelector} input`
  274. client // open try-it-out
  275. .click("#operations-default-get_emptyValueParams")
  276. .waitForElementVisible("button.btn.try-out__btn", 5000)
  277. .click("button.btn.try-out__btn")
  278. .pause(200)
  279. client // set parameter, to ensure an initial value is set
  280. .setValue(inputSelector, "123")
  281. .click("button.btn.execute.opblock-control__btn")
  282. .pause(200)
  283. client // remove initial value, click "send empty", execute again, assert
  284. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  285. .pause(400)
  286. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  287. .click("button.btn.execute.opblock-control__btn")
  288. .expect.element("textarea.curl").text
  289. .to.contain(`GET "http://localhost:3230/emptyValueParams?int="`)
  290. })
  291. it("should set, unset and send an empty string value", function (client) {
  292. const paramSelector = `tr[data-param-name="str"]`
  293. const inputSelector = `${paramSelector} input`
  294. client // open try-it-out
  295. .click("#operations-default-get_emptyValueParams")
  296. .waitForElementVisible("button.btn.try-out__btn", 5000)
  297. .click("button.btn.try-out__btn")
  298. .pause(200)
  299. client // set parameter, to ensure an initial value is set
  300. .setValue(inputSelector, "123")
  301. .click("button.btn.execute.opblock-control__btn")
  302. .pause(200)
  303. client // remove initial value, click "send empty", execute again, assert
  304. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  305. .pause(400)
  306. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  307. .click("button.btn.execute.opblock-control__btn")
  308. .expect.element("textarea.curl").text
  309. .to.contain(`GET "http://localhost:3230/emptyValueParams?str="`)
  310. })
  311. it("should set, unset and send an empty number value", function (client) {
  312. const paramSelector = `tr[data-param-name="num"]`
  313. const inputSelector = `${paramSelector} input`
  314. client // open try-it-out
  315. .click("#operations-default-get_emptyValueParams")
  316. .waitForElementVisible("button.btn.try-out__btn", 5000)
  317. .click("button.btn.try-out__btn")
  318. .pause(200)
  319. client // set parameter, to ensure an initial value is set
  320. .setValue(inputSelector, "123")
  321. .click("button.btn.execute.opblock-control__btn")
  322. .pause(200)
  323. client // remove initial value, click "send empty", execute again, assert
  324. .setValue(inputSelector, "\u0008\u0008\u0008") // backspaces
  325. .pause(400)
  326. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  327. .click("button.btn.execute.opblock-control__btn")
  328. .expect.element("textarea.curl").text
  329. .to.contain(`GET "http://localhost:3230/emptyValueParams?num="`)
  330. })
  331. it("should set, unset and send an empty boolean value", function (client) {
  332. const paramSelector = `tr[data-param-name="bool"]`
  333. const inputSelector = `${paramSelector} select`
  334. client // open try-it-out
  335. .click("#operations-default-get_emptyValueParams")
  336. .waitForElementVisible("button.btn.try-out__btn", 5000)
  337. .click("button.btn.try-out__btn")
  338. .pause(200)
  339. client // set parameter, to ensure an initial value is set
  340. .click(`${inputSelector} option[value="true"]`)
  341. .click("button.btn.execute.opblock-control__btn")
  342. .pause(200)
  343. client // remove initial value, click "send empty", execute again, assert
  344. .click(`${inputSelector} option[value=""]`)
  345. .pause(400)
  346. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  347. .click("button.btn.execute.opblock-control__btn")
  348. .expect.element("textarea.curl").text
  349. .to.contain(`GET "http://localhost:3230/emptyValueParams?bool="`)
  350. })
  351. it("should set, unset and send an empty array value", function (client) {
  352. const paramSelector = `tr[data-param-name="arr"]`
  353. client // open try-it-out
  354. .click("#operations-default-get_emptyValueParams")
  355. .waitForElementVisible("button.btn.try-out__btn", 5000)
  356. .click("button.btn.try-out__btn")
  357. .pause(200)
  358. client // set parameter, to ensure an initial value is set
  359. .click(`${paramSelector} .json-schema-form-item-add`)
  360. .setValue(`${paramSelector} input`, "asdf")
  361. .click("button.btn.execute.opblock-control__btn")
  362. .pause(200)
  363. client // remove initial value, execute again
  364. .click(`${paramSelector} .json-schema-form-item-remove`)
  365. .pause(400)
  366. .click(`${paramSelector} .parameter__empty_value_toggle input`)
  367. .click("button.btn.execute.opblock-control__btn")
  368. .expect.element("textarea.curl").text
  369. .to.contain(`GET "http://localhost:3230/emptyValueParams?arr="`)
  370. })
  371. })
  372. })
  373. })