Skip to content

Commit bdf005d

Browse files
committed
test: redaction
1 parent abca2dc commit bdf005d

File tree

11 files changed

+276
-4
lines changed

11 files changed

+276
-4
lines changed

src/Logger/Stores/DatabaseLogger.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function create(PendingRequest $request, Connector $connector): mixed
2323
'method' => $request->getRequest()->getMethod(),
2424
'endpoint' => $request->getRequest()->resolveEndpoint(),
2525
'request_headers' => $this->convertsRequestHeaders($request->getRequest()->headers(), $request),
26-
'request_query' => $this->convertsRequestHeaders($request->getRequest()->query(), $request),
26+
'request_query' => $this->convertsRequestQueryParameters($request->getRequest()->query(), $request),
2727
'request_body' => $this->convertsRequestBody($request->body(), $request),
2828
]);
2929

src/Logger/Stores/MemoryLogger.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public function create(PendingRequest $request, Connector $connector): mixed
5353
'method' => $request->getRequest()->getMethod(),
5454
'endpoint' => $request->getRequest()->resolveEndpoint(),
5555
'request_headers' => $this->convertsRequestHeaders($request->getRequest()->headers(), $request),
56-
'request_query' => $this->convertsRequestHeaders($request->getRequest()->query(), $request),
56+
'request_query' => $this->convertsRequestQueryParameters($request->getRequest()->query(), $request),
5757
'request_body' => $this->convertsRequestBody($request->body(), $request),
5858
'sent_at' => now(),
5959
];

src/Logger/Stores/ParsesRequestData.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,15 @@ protected function redact($data, Redactor $type, Request $request, Connector $co
9595
protected function redactDataFromPayload($payload, array $redactKeys): mixed
9696
{
9797
if (in_array('*', $redactKeys, true)) {
98-
return null;
98+
return 'redacted';
9999
}
100100

101101
if (is_array($payload)) {
102-
Arr::forget($payload, $redactKeys);
102+
foreach ($redactKeys as $key) {
103+
if (Arr::has($payload, $key)) {
104+
Arr::set($payload, $key, 'redacted');
105+
}
106+
}
103107
}
104108

105109
return $payload;
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests;
6+
7+
use Saloon\Contracts\Body\HasBody;
8+
use Saloon\Enums\Method;
9+
use Saloon\Traits\Body\HasJsonBody;
10+
11+
class GoogleSearchRedactRequest extends \Saloon\Http\Request implements HasBody
12+
{
13+
use HasJsonBody;
14+
15+
protected Method $method = Method::GET;
16+
17+
public function __construct(protected string $search) {}
18+
19+
public function defaultQuery(): array
20+
{
21+
return [
22+
'q' => $this->search,
23+
'secret' => 'could be redacted',
24+
'redact' => [
25+
'id' => 'should be redacted',
26+
],
27+
];
28+
}
29+
30+
public function defaultHeaders(): array
31+
{
32+
return [
33+
'Authorization' => 'should be redacted',
34+
'Custom' => 'possibly be redacted',
35+
'Saloon' => 'possibly be redacted',
36+
];
37+
}
38+
39+
public function resolveEndpoint(): string
40+
{
41+
return 'complete/search';
42+
}
43+
44+
public function defaultBody(): array
45+
{
46+
return [
47+
'auth' => [
48+
'username' => 'should be logged',
49+
'password' => 'should be redacted',
50+
],
51+
'redact' => 'should be redacted',
52+
];
53+
}
54+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests\Redaction;
6+
7+
use HappyDemon\SaloonUtils\Logger\Contracts\RedactsRequests;
8+
use HappyDemon\SaloonUtils\Logger\Enums\Redactor;
9+
use HappyDemon\SaloonUtils\Tests\Saloon\Requests\GoogleSearchRedactRequest;
10+
11+
class RedactBodyAllRequest extends GoogleSearchRedactRequest implements RedactsRequests
12+
{
13+
public function shouldRedact(): array
14+
{
15+
return [
16+
Redactor::BODY->value => ['*'],
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests\Redaction;
6+
7+
use HappyDemon\SaloonUtils\Logger\Contracts\RedactsRequests;
8+
use HappyDemon\SaloonUtils\Logger\Enums\Redactor;
9+
use HappyDemon\SaloonUtils\Tests\Saloon\Requests\GoogleSearchRedactRequest;
10+
11+
class RedactBodyRequest extends GoogleSearchRedactRequest implements RedactsRequests
12+
{
13+
public function shouldRedact(): array
14+
{
15+
return [
16+
Redactor::BODY->value => ['redact', 'auth.password'],
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests\Redaction;
6+
7+
use HappyDemon\SaloonUtils\Logger\Contracts\RedactsRequests;
8+
use HappyDemon\SaloonUtils\Logger\Enums\Redactor;
9+
use HappyDemon\SaloonUtils\Tests\Saloon\Requests\GoogleSearchRedactRequest;
10+
11+
class RedactHeadersAllRequest extends GoogleSearchRedactRequest implements RedactsRequests
12+
{
13+
public function shouldRedact(): array
14+
{
15+
return [
16+
Redactor::HEADERS->value => ['*'],
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests\Redaction;
6+
7+
use HappyDemon\SaloonUtils\Logger\Contracts\RedactsRequests;
8+
use HappyDemon\SaloonUtils\Logger\Enums\Redactor;
9+
use HappyDemon\SaloonUtils\Tests\Saloon\Requests\GoogleSearchRedactRequest;
10+
11+
class RedactHeadersRequest extends GoogleSearchRedactRequest implements RedactsRequests
12+
{
13+
public function shouldRedact(): array
14+
{
15+
return [
16+
Redactor::HEADERS->value => ['Authorization', 'Saloon'],
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests\Redaction;
6+
7+
use HappyDemon\SaloonUtils\Logger\Contracts\RedactsRequests;
8+
use HappyDemon\SaloonUtils\Logger\Enums\Redactor;
9+
use HappyDemon\SaloonUtils\Tests\Saloon\Requests\GoogleSearchRedactRequest;
10+
11+
class RedactQueryAllRequest extends GoogleSearchRedactRequest implements RedactsRequests
12+
{
13+
public function shouldRedact(): array
14+
{
15+
return [
16+
Redactor::QUERY->value => ['*'],
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HappyDemon\SaloonUtils\Tests\Saloon\Requests\Redaction;
6+
7+
use HappyDemon\SaloonUtils\Logger\Contracts\RedactsRequests;
8+
use HappyDemon\SaloonUtils\Logger\Enums\Redactor;
9+
use HappyDemon\SaloonUtils\Tests\Saloon\Requests\GoogleSearchRedactRequest;
10+
11+
class RedactQueryRequest extends GoogleSearchRedactRequest implements RedactsRequests
12+
{
13+
public function shouldRedact(): array
14+
{
15+
return [
16+
Redactor::QUERY->value => ['secret'],
17+
];
18+
}
19+
}

0 commit comments

Comments
 (0)