Skip to content

Commit 26f54ff

Browse files
committed
Split and expand feature tests
1 parent 72f4053 commit 26f54ff

File tree

2 files changed

+88
-27
lines changed

2 files changed

+88
-27
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
4+
namespace Nipwaayoni\Tests\SnsHandler\Feature;
5+
6+
use Aws\Sns\MessageValidator;
7+
use Illuminate\Support\Facades\Event;
8+
use Nipwaayoni\SnsHandler\Events\SnsConfirmationRequestReceived;
9+
use Nipwaayoni\SnsHandler\Events\SnsMessageReceived;
10+
use Nipwaayoni\SnsHandler\NullMessageValidator;
11+
use Nipwaayoni\SnsHandler\ServiceProvider;
12+
use Nipwaayoni\SnsHandler\SnsMessage;
13+
use Nipwaayoni\Tests\SnsHandler\Events\SnsConfirmationRequestAlphaReceived;
14+
use Nipwaayoni\Tests\SnsHandler\Events\SnsConfirmationRequestBetaReceived;
15+
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageAlphaReceived;
16+
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageBetaReceived;
17+
use Nipwaayoni\Tests\SnsHandler\MakesSnsTests;
18+
19+
class SnsHandlerDefaultEventsTest extends \Nipwaayoni\Tests\SnsHandler\TestCase
20+
{
21+
use MakesSnsTests;
22+
23+
public function setUp(): void
24+
{
25+
parent::setUp();
26+
27+
Event::fake();
28+
29+
$this->app->bind(MessageValidator::class, NullMessageValidator::class);
30+
}
31+
32+
protected function getPackageProviders($app)
33+
{
34+
return [ServiceProvider::class];
35+
}
36+
37+
protected function getEnvironmentSetUp($app)
38+
{
39+
$app['config']->set('sns-handler.confirmation-events', [
40+
SnsConfirmationRequestReceived::class => ['*'],
41+
]);
42+
43+
$app['config']->set('sns-handler.message-events', [
44+
SnsMessageReceived::class => ['*'],
45+
]);
46+
}
47+
48+
public function testDispatchesDefaultConfirmationEvent(): void
49+
{
50+
$data = $this->makeSnsMessageData([
51+
'Type' => SnsMessage::SUBSCRIBE_TYPE,
52+
'Message' => json_encode(['id' => 123, 'color' => 'red'], true),
53+
'SubscribeURL' => 'https://aws.amazon.com/sns/register/abc123'
54+
]);
55+
56+
$response = $this->postJson('/api/sns/message', $data);
57+
58+
$this->assertEquals(200, $response->status());
59+
Event::assertDispatched(SnsConfirmationRequestReceived::class);
60+
Event::assertNotDispatched(SnsConfirmationRequestAlphaReceived::class);
61+
Event::assertNotDispatched(SnsConfirmationRequestBetaReceived::class);
62+
}
63+
64+
public function testDispatchesDefaultMessageEvent(): void
65+
{
66+
$data = $this->makeSnsMessageData([
67+
'Type' => SnsMessage::NOTIFICATION_TYPE,
68+
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:MyTopic',
69+
'Message' => 'Test message',
70+
]);
71+
72+
$response = $this->postJson('/api/sns/message', $data);
73+
74+
$this->assertEquals(200, $response->status());
75+
Event::assertDispatched(SnsMessageReceived::class);
76+
Event::assertNotDispatched(SnsMessageAlphaReceived::class);
77+
Event::assertNotDispatched(SnsMessageBetaReceived::class);
78+
}
79+
}

tests/Feature/SnsHandlerTest.php renamed to tests/Feature/SnsHandlerMappedEventsTest.php

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
use Nipwaayoni\Tests\SnsHandler\Events\SnsMessageBetaReceived;
1717
use Nipwaayoni\Tests\SnsHandler\MakesSnsTests;
1818

19-
class SnsHandlerTest extends \Nipwaayoni\Tests\SnsHandler\TestCase
19+
class SnsHandlerMappedEventsTest extends \Nipwaayoni\Tests\SnsHandler\TestCase
2020
{
2121
use MakesSnsTests;
2222

@@ -38,31 +38,13 @@ protected function getEnvironmentSetUp($app)
3838
{
3939
$app['config']->set('sns-handler.confirmation-events', [
4040
SnsConfirmationRequestAlphaReceived::class => ['arn:aws:sns:us-west-2:123456789012:AlphaTopic'],
41-
SnsConfirmationRequestReceived::class => ['*'],
4241
]);
4342

4443
$app['config']->set('sns-handler.message-events', [
4544
SnsMessageAlphaReceived::class => ['arn:aws:sns:us-west-2:123456789012:AlphaTopic'],
46-
SnsMessageReceived::class => ['*'],
4745
]);
4846
}
4947

50-
public function testDispatchesDefaultConfirmationEvent(): void
51-
{
52-
$data = $this->makeSnsMessageData([
53-
'Type' => SnsMessage::SUBSCRIBE_TYPE,
54-
'Message' => json_encode(['id' => 123, 'color' => 'red'], true),
55-
'SubscribeURL' => 'https://aws.amazon.com/sns/register/abc123'
56-
]);
57-
58-
$response = $this->postJson('/api/sns/message', $data);
59-
60-
$this->assertEquals(200, $response->status());
61-
Event::assertDispatched(SnsConfirmationRequestReceived::class);
62-
Event::assertNotDispatched(SnsConfirmationRequestAlphaReceived::class);
63-
Event::assertNotDispatched(SnsConfirmationRequestBetaReceived::class);
64-
}
65-
6648
public function testDispatchesMappedConfirmationEvent(): void
6749
{
6850
$data = $this->makeSnsMessageData([
@@ -79,34 +61,34 @@ public function testDispatchesMappedConfirmationEvent(): void
7961
Event::assertNotDispatched(SnsConfirmationRequestReceived::class);
8062
}
8163

82-
public function testDispatchesDefaultMessageEvent(): void
64+
public function testDispatchesMappedMessageEvent(): void
8365
{
8466
$data = $this->makeSnsMessageData([
8567
'Type' => SnsMessage::NOTIFICATION_TYPE,
86-
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:MyTopic',
68+
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:AlphaTopic',
8769
'Message' => 'Test message',
8870
]);
8971

9072
$response = $this->postJson('/api/sns/message', $data);
9173

9274
$this->assertEquals(200, $response->status());
93-
Event::assertDispatched(SnsMessageReceived::class);
94-
Event::assertNotDispatched(SnsMessageAlphaReceived::class);
75+
Event::assertDispatched(SnsMessageAlphaReceived::class);
76+
Event::assertNotDispatched(SnsMessageReceived::class);
9577
Event::assertNotDispatched(SnsMessageBetaReceived::class);
9678
}
9779

98-
public function testDispatchesMappedMessageEvent(): void
80+
public function testReturnsNotFoundForUnmappedMessageEvent(): void
9981
{
10082
$data = $this->makeSnsMessageData([
10183
'Type' => SnsMessage::NOTIFICATION_TYPE,
102-
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:AlphaTopic',
84+
'TopicArn' => 'arn:aws:sns:us-west-2:123456789012:BetaTopic',
10385
'Message' => 'Test message',
10486
]);
10587

10688
$response = $this->postJson('/api/sns/message', $data);
10789

108-
$this->assertEquals(200, $response->status());
109-
Event::assertDispatched(SnsMessageAlphaReceived::class);
90+
$this->assertEquals(404, $response->status());
91+
Event::assertNotDispatched(SnsMessageAlphaReceived::class);
11092
Event::assertNotDispatched(SnsMessageReceived::class);
11193
Event::assertNotDispatched(SnsMessageBetaReceived::class);
11294
}

0 commit comments

Comments
 (0)