Skip to content

Commit 47de3ec

Browse files
committed
Add tests to cover basic Topic to Event mapping
1 parent 53be1c3 commit 47de3ec

File tree

4 files changed

+88
-1
lines changed

4 files changed

+88
-1
lines changed

src/SnsBroker.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
use Illuminate\Support\Facades\Log;
99
use Nipwaayoni\SnsHandler\Events\SnsConfirmationRequestReceived;
1010
use Nipwaayoni\SnsHandler\Events\SnsMessageReceived;
11+
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageAlphaReceived;
12+
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageBetaReceived;
1113

1214
class SnsBroker
1315
{
@@ -74,7 +76,11 @@ private function getSubscriptionEvent(string $arn)
7476

7577
private function getNotificationEvent(string $arn)
7678
{
77-
$map = [SnsMessageReceived::class => ['*']];
79+
$map = [
80+
SnsMessageAlphaReceived::class => ['arn:aws:sns:us-west-2:123456789012:AlphaTopic'],
81+
SnsMessageBetaReceived::class => ['arn:aws:sns:us-west-2:123456789012:AlphaTopic'],
82+
SnsMessageReceived::class => ['*'],
83+
];
7884
return $this->arnMap($arn, $map);
7985
}
8086

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
4+
namespace Nipwaayoni\Tests\SnsHandler\Events;
5+
6+
use Illuminate\Broadcasting\InteractsWithSockets;
7+
use Illuminate\Foundation\Events\Dispatchable;
8+
use Nipwaayoni\SnsHandler\SnsMessage;
9+
10+
class SnsMessageAlphaReceived
11+
{
12+
use Dispatchable, InteractsWithSockets;
13+
14+
private $message;
15+
16+
public function __construct(SnsMessage $message)
17+
{
18+
$this->message = $message;
19+
}
20+
21+
public function message(): SnsMessage
22+
{
23+
return $this->message;
24+
}
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
4+
namespace Nipwaayoni\Tests\SnsHandler\Events;
5+
6+
use Illuminate\Broadcasting\InteractsWithSockets;
7+
use Illuminate\Foundation\Events\Dispatchable;
8+
use Nipwaayoni\SnsHandler\SnsMessage;
9+
10+
class SnsMessageBetaReceived
11+
{
12+
use Dispatchable, InteractsWithSockets;
13+
14+
private $message;
15+
16+
public function __construct(SnsMessage $message)
17+
{
18+
$this->message = $message;
19+
}
20+
21+
public function message(): SnsMessage
22+
{
23+
return $this->message;
24+
}
25+
}

tests/Unit/SnsBrokerTest.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use Nipwaayoni\SnsHandler\SnsHttpRequest;
1212
use Nipwaayoni\SnsHandler\SnsMessage;
1313
use Nipwaayoni\SnsHandler\SnsUnknownTopicArnException;
14+
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageAlphaReceived;
15+
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageBetaReceived;
1416
use PHPUnit\Framework\MockObject\MockObject;
1517
use Nipwaayoni\Tests\SnsHandler\MakesSnsTests;
1618
use Nipwaayoni\Tests\SnsHandler\TestCase;
@@ -112,4 +114,33 @@ public function testValidatesSnsMessage(): void
112114

113115
$this->broker->handleRequest($request);
114116
}
117+
118+
public function testDispatchMappedNotificationMessage(): void
119+
{
120+
$request = $this->createMock(SnsHttpRequest::class);
121+
$request->expects($this->once())->method('jsonContent')
122+
->willReturn($this->makeSnsMessageJson([
123+
'MessageId' => 'abc123',
124+
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:AlphaTopic'
125+
]));
126+
127+
$this->broker->handleRequest($request);
128+
Event::assertDispatched(SnsMessageAlphaReceived::class);
129+
Event::assertNotDispatched(SnsMessageReceived::class);
130+
}
131+
132+
public function testDispatchFirstMappedNotificationMessage(): void
133+
{
134+
$request = $this->createMock(SnsHttpRequest::class);
135+
$request->expects($this->once())->method('jsonContent')
136+
->willReturn($this->makeSnsMessageJson([
137+
'MessageId' => 'abc123',
138+
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:AlphaTopic'
139+
]));
140+
141+
$this->broker->handleRequest($request);
142+
Event::assertDispatched(SnsMessageAlphaReceived::class);
143+
Event::assertNotDispatched(SnsMessageBetaReceived::class);
144+
Event::assertNotDispatched(SnsMessageReceived::class);
145+
}
115146
}

0 commit comments

Comments
 (0)