Skip to content

Commit e501a91

Browse files
authored
* auth.extra_info now propagates through to the security schema as description (#727)
1 parent b32959d commit e501a91

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

src/Writing/OpenAPISpecWriter.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -403,18 +403,18 @@ protected function generateSecurityPartialSpec(): array
403403

404404
$location = $this->config->get('auth.in');
405405
$parameterName = $this->config->get('auth.name');
406-
406+
$description = $this->config->get('auth.extra_info');
407407
$scheme = match ($location) {
408408
'query', 'header' => [
409409
'type' => 'apiKey',
410410
'name' => $parameterName,
411411
'in' => $location,
412-
'description' => '',
412+
'description' => $description,
413413
],
414414
'bearer', 'basic' => [
415415
'type' => 'http',
416416
'scheme' => $location,
417-
'description' => '',
417+
'description' => $description,
418418
],
419419
default => [],
420420
};

tests/Unit/OpenAPISpecWriterTest.php

+18-3
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,22 @@ public function adds_authentication_details_correctly_as_security_info()
8080
$endpointData1 = $this->createMockEndpointData(['uri' => 'path1', 'httpMethods' => ['GET'], 'metadata.authenticated' => true]);
8181
$endpointData2 = $this->createMockEndpointData(['uri' => 'path1', 'httpMethods' => ['POST'], 'metadata.authenticated' => false]);
8282
$groups = [$this->createGroup([$endpointData1, $endpointData2])];
83-
84-
$config = array_merge($this->config, ['auth' => ['enabled' => true, 'in' => 'bearer']]);
83+
$extraInfo = "When stuck trying to authenticate, have a coffee!";
84+
$config = array_merge($this->config, [
85+
'auth' => [
86+
'enabled' => true,
87+
'in' => 'bearer',
88+
'extra_info' => $extraInfo,
89+
],
90+
]);
8591
$writer = new OpenAPISpecWriter(new DocumentationConfig($config));
8692
$results = $writer->generateSpecContent($groups);
8793

8894
$this->assertCount(1, $results['components']['securitySchemes']);
8995
$this->assertArrayHasKey('default', $results['components']['securitySchemes']);
9096
$this->assertEquals('http', $results['components']['securitySchemes']['default']['type']);
9197
$this->assertEquals('bearer', $results['components']['securitySchemes']['default']['scheme']);
98+
$this->assertEquals($extraInfo, $results['components']['securitySchemes']['default']['description']);
9299
$this->assertCount(1, $results['security']);
93100
$this->assertCount(1, $results['security'][0]);
94101
$this->assertArrayHasKey('default', $results['security'][0]);
@@ -97,13 +104,21 @@ public function adds_authentication_details_correctly_as_security_info()
97104
$this->assertCount(0, $results['paths']['/path1']['post']['security']);
98105

99106
// Next try: auth with a query parameter
100-
$config = array_merge($this->config, ['auth' => ['enabled' => true, 'in' => 'query', 'name' => 'token']]);
107+
$config = array_merge($this->config, [
108+
'auth' => [
109+
'enabled' => true,
110+
'in' => 'query',
111+
'name' => 'token',
112+
'extra_info' => $extraInfo,
113+
],
114+
]);
101115
$writer = new OpenAPISpecWriter(new DocumentationConfig($config));
102116
$results = $writer->generateSpecContent($groups);
103117

104118
$this->assertCount(1, $results['components']['securitySchemes']);
105119
$this->assertArrayHasKey('default', $results['components']['securitySchemes']);
106120
$this->assertEquals('apiKey', $results['components']['securitySchemes']['default']['type']);
121+
$this->assertEquals($extraInfo, $results['components']['securitySchemes']['default']['description']);
107122
$this->assertEquals($config['auth']['name'], $results['components']['securitySchemes']['default']['name']);
108123
$this->assertEquals('query', $results['components']['securitySchemes']['default']['in']);
109124
$this->assertCount(1, $results['security']);

0 commit comments

Comments
 (0)