Skip to content

Commit 60c0b70

Browse files
committed
feat(tests): Add test for "feat: Make boolean quirk an enum"
Signed-off-by: Joas Schilling <[email protected]>
1 parent 1b8ed75 commit 60c0b70

File tree

3 files changed

+294
-0
lines changed

3 files changed

+294
-0
lines changed

tests/appinfo/routes.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,8 @@
4343
['name' => 'Settings#intParameterWithMin', 'url' => '/api/{apiVersion}/min', 'verb' => 'POST', 'requirements' => ['apiVersion' => '(v2)']],
4444
['name' => 'Settings#intParameterWithMax', 'url' => '/api/{apiVersion}/max', 'verb' => 'POST', 'requirements' => ['apiVersion' => '(v2)']],
4545
['name' => 'Settings#listOfIntStringAndBool', 'url' => '/api/{apiVersion}/mixed-list', 'verb' => 'POST', 'requirements' => ['apiVersion' => '(v2)']],
46+
['name' => 'Settings#booleanParameterRequired', 'url' => '/api/{apiVersion}/boolean', 'verb' => 'POST', 'requirements' => ['apiVersion' => '(v2)']],
47+
['name' => 'Settings#booleanParameterDefaultFalse', 'url' => '/api/{apiVersion}/boolean-false', 'verb' => 'POST', 'requirements' => ['apiVersion' => '(v2)']],
48+
['name' => 'Settings#booleanParameterDefaultTrue', 'url' => '/api/{apiVersion}/boolean-true', 'verb' => 'POST', 'requirements' => ['apiVersion' => '(v2)']],
4649
],
4750
];

tests/lib/Controller/SettingsController.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,40 @@ public function intParameterWithMax(int $limit): DataResponse {
221221
public function listOfIntStringAndBool($weird): DataResponse {
222222
return new DataResponse();
223223
}
224+
225+
/**
226+
* A route with required boolean
227+
*
228+
* @param bool $yesOrNo Boolean required
229+
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
230+
*
231+
* 200: Admin settings updated
232+
*/
233+
public function booleanParameterRequired(bool $yesOrNo): DataResponse {
234+
return new DataResponse();
235+
}
236+
237+
/**
238+
* A route with boolean defaulting to false
239+
*
240+
* @param bool $yesOrNo Booleandefaulting to false
241+
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
242+
*
243+
* 200: Admin settings updated
244+
*/
245+
public function booleanParameterDefaultFalse(bool $yesOrNo = false): DataResponse {
246+
return new DataResponse();
247+
}
248+
249+
/**
250+
* A route with boolean defaulting to true
251+
*
252+
* @param bool $yesOrNo Booleandefaulting to true
253+
* @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
254+
*
255+
* 200: Admin settings updated
256+
*/
257+
public function booleanParameterDefaultTrue(bool $yesOrNo = true): DataResponse {
258+
return new DataResponse();
259+
}
224260
}

tests/openapi.json

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,6 +1371,261 @@
13711371
}
13721372
}
13731373
}
1374+
},
1375+
"/ocs/v2.php/apps/notifications/api/{apiVersion}/boolean": {
1376+
"post": {
1377+
"operationId": "settings-boolean-parameter-required",
1378+
"summary": "A route with required boolean",
1379+
"description": "This endpoint requires admin access",
1380+
"tags": [
1381+
"settings"
1382+
],
1383+
"security": [
1384+
{
1385+
"bearer_auth": []
1386+
},
1387+
{
1388+
"basic_auth": []
1389+
}
1390+
],
1391+
"parameters": [
1392+
{
1393+
"name": "yesOrNo",
1394+
"in": "query",
1395+
"description": "Boolean required",
1396+
"required": true,
1397+
"schema": {
1398+
"type": "integer",
1399+
"enum": [
1400+
0,
1401+
1
1402+
]
1403+
}
1404+
},
1405+
{
1406+
"name": "apiVersion",
1407+
"in": "path",
1408+
"required": true,
1409+
"schema": {
1410+
"type": "string",
1411+
"enum": [
1412+
"v2"
1413+
],
1414+
"default": "v2"
1415+
}
1416+
},
1417+
{
1418+
"name": "OCS-APIRequest",
1419+
"in": "header",
1420+
"description": "Required to be true for the API request to pass",
1421+
"required": true,
1422+
"schema": {
1423+
"type": "boolean",
1424+
"default": true
1425+
}
1426+
}
1427+
],
1428+
"responses": {
1429+
"200": {
1430+
"description": "Admin settings updated",
1431+
"content": {
1432+
"application/json": {
1433+
"schema": {
1434+
"type": "object",
1435+
"required": [
1436+
"ocs"
1437+
],
1438+
"properties": {
1439+
"ocs": {
1440+
"type": "object",
1441+
"required": [
1442+
"meta",
1443+
"data"
1444+
],
1445+
"properties": {
1446+
"meta": {
1447+
"$ref": "#/components/schemas/OCSMeta"
1448+
},
1449+
"data": {}
1450+
}
1451+
}
1452+
}
1453+
}
1454+
}
1455+
}
1456+
}
1457+
}
1458+
}
1459+
},
1460+
"/ocs/v2.php/apps/notifications/api/{apiVersion}/boolean-false": {
1461+
"post": {
1462+
"operationId": "settings-boolean-parameter-default-false",
1463+
"summary": "A route with boolean defaulting to false",
1464+
"description": "This endpoint requires admin access",
1465+
"tags": [
1466+
"settings"
1467+
],
1468+
"security": [
1469+
{
1470+
"bearer_auth": []
1471+
},
1472+
{
1473+
"basic_auth": []
1474+
}
1475+
],
1476+
"parameters": [
1477+
{
1478+
"name": "yesOrNo",
1479+
"in": "query",
1480+
"description": "Booleandefaulting to false",
1481+
"schema": {
1482+
"type": "integer",
1483+
"default": 0,
1484+
"enum": [
1485+
0,
1486+
1
1487+
]
1488+
}
1489+
},
1490+
{
1491+
"name": "apiVersion",
1492+
"in": "path",
1493+
"required": true,
1494+
"schema": {
1495+
"type": "string",
1496+
"enum": [
1497+
"v2"
1498+
],
1499+
"default": "v2"
1500+
}
1501+
},
1502+
{
1503+
"name": "OCS-APIRequest",
1504+
"in": "header",
1505+
"description": "Required to be true for the API request to pass",
1506+
"required": true,
1507+
"schema": {
1508+
"type": "boolean",
1509+
"default": true
1510+
}
1511+
}
1512+
],
1513+
"responses": {
1514+
"200": {
1515+
"description": "Admin settings updated",
1516+
"content": {
1517+
"application/json": {
1518+
"schema": {
1519+
"type": "object",
1520+
"required": [
1521+
"ocs"
1522+
],
1523+
"properties": {
1524+
"ocs": {
1525+
"type": "object",
1526+
"required": [
1527+
"meta",
1528+
"data"
1529+
],
1530+
"properties": {
1531+
"meta": {
1532+
"$ref": "#/components/schemas/OCSMeta"
1533+
},
1534+
"data": {}
1535+
}
1536+
}
1537+
}
1538+
}
1539+
}
1540+
}
1541+
}
1542+
}
1543+
}
1544+
},
1545+
"/ocs/v2.php/apps/notifications/api/{apiVersion}/boolean-true": {
1546+
"post": {
1547+
"operationId": "settings-boolean-parameter-default-true",
1548+
"summary": "A route with boolean defaulting to true",
1549+
"description": "This endpoint requires admin access",
1550+
"tags": [
1551+
"settings"
1552+
],
1553+
"security": [
1554+
{
1555+
"bearer_auth": []
1556+
},
1557+
{
1558+
"basic_auth": []
1559+
}
1560+
],
1561+
"parameters": [
1562+
{
1563+
"name": "yesOrNo",
1564+
"in": "query",
1565+
"description": "Booleandefaulting to true",
1566+
"schema": {
1567+
"type": "integer",
1568+
"default": 1,
1569+
"enum": [
1570+
0,
1571+
1
1572+
]
1573+
}
1574+
},
1575+
{
1576+
"name": "apiVersion",
1577+
"in": "path",
1578+
"required": true,
1579+
"schema": {
1580+
"type": "string",
1581+
"enum": [
1582+
"v2"
1583+
],
1584+
"default": "v2"
1585+
}
1586+
},
1587+
{
1588+
"name": "OCS-APIRequest",
1589+
"in": "header",
1590+
"description": "Required to be true for the API request to pass",
1591+
"required": true,
1592+
"schema": {
1593+
"type": "boolean",
1594+
"default": true
1595+
}
1596+
}
1597+
],
1598+
"responses": {
1599+
"200": {
1600+
"description": "Admin settings updated",
1601+
"content": {
1602+
"application/json": {
1603+
"schema": {
1604+
"type": "object",
1605+
"required": [
1606+
"ocs"
1607+
],
1608+
"properties": {
1609+
"ocs": {
1610+
"type": "object",
1611+
"required": [
1612+
"meta",
1613+
"data"
1614+
],
1615+
"properties": {
1616+
"meta": {
1617+
"$ref": "#/components/schemas/OCSMeta"
1618+
},
1619+
"data": {}
1620+
}
1621+
}
1622+
}
1623+
}
1624+
}
1625+
}
1626+
}
1627+
}
1628+
}
13741629
}
13751630
},
13761631
"tags": []

0 commit comments

Comments
 (0)