Skip to content

Commit c9efdfb

Browse files
authored
Merge pull request #81 from RonasIT/45_fix_exception_when_setting_invalid_additional_path
#45: Check file existence when parsing additional doc files
2 parents 1acfdaa + 824514a commit c9efdfb

File tree

2 files changed

+34
-17
lines changed

2 files changed

+34
-17
lines changed

src/Services/SwaggerService.php

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -648,32 +648,36 @@ public function getDocFileContent()
648648
$additionalDocs = config('auto-doc.additional_paths', []);
649649

650650
foreach ($additionalDocs as $filePath) {
651-
$fileContent = json_decode(file_get_contents(base_path($filePath)), true);
651+
$fullFilePath = base_path($filePath);
652652

653-
$paths = array_keys($fileContent['paths']);
653+
if (file_exists($fullFilePath)) {
654+
$fileContent = json_decode(file_get_contents($fullFilePath), true);
654655

655-
foreach ($paths as $path) {
656-
$additionalDocPath = $fileContent['paths'][$path];
656+
$paths = array_keys($fileContent['paths']);
657657

658-
if (empty($documentation['paths'][$path])) {
659-
$documentation['paths'][$path] = $additionalDocPath;
660-
} else {
661-
$methods = array_keys($documentation['paths'][$path]);
662-
$additionalDocMethods = array_keys($additionalDocPath);
658+
foreach ($paths as $path) {
659+
$additionalDocPath = $fileContent['paths'][$path];
663660

664-
foreach ($additionalDocMethods as $method) {
665-
if (!in_array($method, $methods)) {
666-
$documentation['paths'][$path][$method] = $additionalDocPath[$method];
661+
if (empty($documentation['paths'][$path])) {
662+
$documentation['paths'][$path] = $additionalDocPath;
663+
} else {
664+
$methods = array_keys($documentation['paths'][$path]);
665+
$additionalDocMethods = array_keys($additionalDocPath);
666+
667+
foreach ($additionalDocMethods as $method) {
668+
if (!in_array($method, $methods)) {
669+
$documentation['paths'][$path][$method] = $additionalDocPath[$method];
670+
}
667671
}
668672
}
669673
}
670-
}
671674

672-
$definitions = array_keys($fileContent['definitions']);
675+
$definitions = array_keys($fileContent['definitions']);
673676

674-
foreach ($definitions as $definition) {
675-
if (empty($documentation['definitions'][$definition])) {
676-
$documentation['definitions'][$definition] = $fileContent['definitions'][$definition];
677+
foreach ($definitions as $definition) {
678+
if (empty($documentation['definitions'][$definition])) {
679+
$documentation['definitions'][$definition] = $fileContent['definitions'][$definition];
680+
}
677681
}
678682
}
679683
}

tests/AutoDocControllerTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,19 @@ public function testGetJSONDocumentationWithAdditionalPaths()
5050
$this->assertEqualsJsonFixture('tmp_data_with_additional_paths', $response->json());
5151
}
5252

53+
public function testGetJSONDocumentationWithInvalidAdditionalPath()
54+
{
55+
config([
56+
'auto-doc.additional_paths' => ['invalid_path/non_existent_file.json']
57+
]);
58+
59+
$response = $this->json('get', '/auto-doc/documentation');
60+
61+
$response->assertStatus(Response::HTTP_OK);
62+
63+
$response->assertJson($this->documentation);
64+
}
65+
5366
public function testGetJSONDocumentationWithGlobalPrefix()
5467
{
5568
$this->addGlobalPrefix();

0 commit comments

Comments
 (0)