Skip to content

Commit e3a5bd1

Browse files
committed
refactor: WebhookTest
1 parent 0e68f89 commit e3a5bd1

File tree

1 file changed

+106
-151
lines changed

1 file changed

+106
-151
lines changed

tests/WebhookTest.php

Lines changed: 106 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<?php
22

3-
namespace Spatie\WebhookServer\Tests;
4-
53
use Illuminate\Support\Facades\Queue;
64
use Spatie\WebhookServer\CallWebhookJob;
75
use Spatie\WebhookServer\Exceptions\CouldNotCallWebhook;
@@ -10,194 +8,151 @@
108
use Spatie\WebhookServer\Exceptions\InvalidWebhookJob;
119
use Spatie\WebhookServer\WebhookCall;
1210

13-
class WebhookTest extends TestCase
14-
{
15-
public function setUp(): void
16-
{
17-
parent::setUp();
11+
use function PHPUnit\Framework\assertTrue;
1812

19-
Queue::fake();
20-
}
13+
beforeEach(function () {
14+
Queue::fake();
15+
});
2116

22-
/** @test */
23-
public function it_can_dispatch_a_job_that_calls_a_webhook()
24-
{
25-
$url = 'https://localhost';
26-
27-
WebhookCall::create()->url($url)->useSecret('123')->dispatch();
28-
29-
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
30-
$config = config('webhook-server');
31-
32-
$this->assertEquals($config['queue'], $job->queue);
33-
$this->assertEquals($url, $job->webhookUrl);
34-
$this->assertEquals($config['http_verb'], $job->httpVerb);
35-
$this->assertEquals($config['tries'], $job->tries);
36-
$this->assertEquals($config['timeout_in_seconds'], $job->requestTimeout);
37-
$this->assertEquals($config['backoff_strategy'], $job->backoffStrategyClass);
38-
$this->assertContains($config['signature_header_name'], array_keys($job->headers));
39-
$this->assertEquals($config['verify_ssl'], $job->verifySsl);
40-
$this->assertEquals($config['throw_exception_on_failure'], $job->throwExceptionOnFailure);
41-
$this->assertEquals($config['tags'], $job->tags);
42-
43-
return true;
44-
});
45-
}
46-
47-
/** @test */
48-
public function it_can_keep_default_config_headers_and_set_new_ones()
49-
{
50-
$url = 'https://localhost';
17+
it('can dispatch a job that calls a webhook', function () {
18+
$url = 'https://localhost';
5119

52-
WebhookCall::create()->url($url)
53-
->withHeaders(['User-Agent' => 'Spatie/Laravel-Webhook-Server'])
54-
->useSecret('123')
55-
->dispatch()
56-
;
20+
WebhookCall::create()->url($url)->useSecret('123')->dispatch();
5721

58-
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
59-
$config = config('webhook-server');
22+
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
23+
$config = config('webhook-server');
6024

61-
$this->assertArrayHasKey('Content-Type', $job->headers);
62-
$this->assertArrayHasKey('User-Agent', $job->headers);
25+
expect($job->queue)->toEqual($config['queue'])
26+
->and($job->webhookUrl)->toEqual($url)
27+
->and($job->httpVerb)->toEqual($config['http_verb'])
28+
->and($job->tries)->toEqual($config['tries'])
29+
->and($job->requestTimeout)->toEqual($config['timeout_in_seconds'])
30+
->and($job->backoffStrategyClass)->toEqual($config['backoff_strategy'])
31+
->and(array_keys($job->headers))->toContain($config['signature_header_name'])
32+
->and($job->verifySsl)->toEqual($config['verify_ssl'])
33+
->and($job->throwExceptionOnFailure)->toEqual($config['throw_exception_on_failure'])
34+
->and($job->tags)->toEqual($config['tags']);
6335

64-
return true;
65-
});
66-
}
36+
return true;
37+
});
38+
});
6739

68-
/** @test */
69-
public function it_can_override_default_config_headers()
70-
{
71-
$url = 'https://localhost';
40+
it('can keep default config headers and set new ones', function () {
41+
$url = 'https://localhost';
7242

73-
WebhookCall::create()->url($url)
74-
->withHeaders(['Content-Type' => 'text/plain'])
75-
->useSecret('123')
76-
->dispatch()
77-
;
43+
WebhookCall::create()->url($url)
44+
->withHeaders(['User-Agent' => 'Spatie/Laravel-Webhook-Server'])
45+
->useSecret('123')
46+
->dispatch();
7847

79-
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
80-
$config = config('webhook-server');
48+
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
49+
$config = config('webhook-server');
8150

82-
$this->assertArrayHasKey('Content-Type', $job->headers);
83-
$this->assertEquals('text/plain', $job->headers['Content-Type']);
51+
expect($job->headers)->toHaveKeys(['Content-Type', 'User-Agent']);
8452

85-
return true;
86-
});
87-
}
53+
return true;
54+
});
55+
});
8856

89-
/** @test */
90-
public function it_can_override_default_queue_connection()
91-
{
92-
$url = 'https://localhost';
57+
it('can override default config headers', function () {
58+
$url = 'https://localhost';
9359

94-
WebhookCall::create()->url($url)
95-
->onConnection('foo')
96-
->useSecret('123')
97-
->dispatch()
98-
;
60+
WebhookCall::create()->url($url)
61+
->withHeaders(['Content-Type' => 'text/plain'])
62+
->useSecret('123')
63+
->dispatch();
9964

100-
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
101-
$this->assertEquals('foo', $job->connection);
65+
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
66+
$config = config('webhook-server');
10267

103-
return true;
104-
});
105-
}
68+
expect($job->headers)->toHaveKey('Content-Type');
69+
expect($job->headers['Content-Type'])->toEqual('text/plain');
10670

107-
/** @test */
108-
public function it_will_throw_an_exception_when_calling_a_webhook_without_proving_an_url()
109-
{
110-
$this->expectException(CouldNotCallWebhook::class);
71+
return true;
72+
});
73+
});
11174

112-
WebhookCall::create()->dispatch();
113-
}
75+
it('can override default queue connection', function () {
76+
$url = 'https://localhost';
11477

115-
/** @test */
116-
public function it_will_throw_an_exception_when_no_secret_has_been_set()
117-
{
118-
$this->expectException(CouldNotCallWebhook::class);
78+
WebhookCall::create()->url($url)
79+
->onConnection('foo')
80+
->useSecret('123')
81+
->dispatch();
11982

120-
WebhookCall::create()->url('https://localhost')->dispatch();
121-
}
83+
Queue::assertPushed(CallWebhookJob::class, function (CallWebhookJob $job) use ($url) {
84+
$this->assertEquals('foo', $job->connection);
12285

123-
/** @test */
124-
public function it_will_not_throw_an_exception_if_there_is_not_secret_and_the_request_should_not_be_signed()
125-
{
126-
WebhookCall::create()->doNotSign()->url('https://localhost')->dispatch();
86+
return true;
87+
});
88+
});
12789

128-
$this->assertTrue(true);
129-
}
90+
it('will throw an exception when calling a webhook without proving an url', function () {
91+
WebhookCall::create()->dispatch();
92+
})->throws(CouldNotCallWebhook::class);
13093

131-
/** @test */
132-
public function it_will_throw_an_exception_when_using_an_invalid_backoff_strategy()
133-
{
134-
$this->expectException(InvalidBackoffStrategy::class);
94+
it('will throw an exception when no secret has been set', function () {
95+
WebhookCall::create()->url('https://localhost')->dispatch();
96+
})->throws(CouldNotCallWebhook::class);
13597

136-
WebhookCall::create()->useBackoffStrategy(static::class);
137-
}
98+
it('will not throw an exception if there is not secret and the request should not be signed', function () {
99+
WebhookCall::create()->doNotSign()->url('https://localhost')->dispatch();
138100

139-
/** @test */
140-
public function it_will_throw_and_exception_when_using_an_invalid_signer()
141-
{
142-
$this->expectException(InvalidSigner::class);
101+
assertTrue(true);
102+
});
143103

144-
WebhookCall::create()->signUsing(static::class);
145-
}
104+
it('will throw an exception when using an invalid backoff strategy', function () {
105+
WebhookCall::create()->useBackoffStrategy(static::class);
106+
})->throws(InvalidBackoffStrategy::class);
146107

147-
/** @test */
148-
public function it_will_throw_an_exception_when_using_an_invalid_webhook_job()
108+
it('will throw and exception when using an invalid signer', function () {
109+
WebhookCall::create()->signUsing(static::class);
110+
})->throws(InvalidSigner::class);
111+
112+
it('will throw an exception when using an invalid webhook job', function () {
113+
$invalidJob = new class
149114
{
150-
$this->expectException(InvalidWebhookJob::class);
115+
};
151116

152-
WebhookCall::create()->useJob(static::class);
153-
}
117+
WebhookCall::create()->useJob($invalidJob::class);
118+
})->throws(InvalidWebhookJob::class);
154119

155-
/** @test */
156-
public function it_can_get_the_uuid_property()
157-
{
158-
$webhookCall = WebhookCall::create()->uuid('my-unique-identifier');
120+
it('can get the UUID property', function () {
121+
$webhookCall = WebhookCall::create()->uuid('my-unique-identifier');
159122

160-
$this->assertIsString($webhookCall->getUuid());
161-
$this->assertSame('my-unique-identifier', $webhookCall->getUuid());
162-
}
123+
expect($webhookCall->getUuid())
124+
->toBeString()
125+
->toEqual('my-unique-identifier');
126+
});
163127

164-
/** @test */
165-
public function it_can_dispatch_a_job_that_calls_a_webhook_if_condition_true()
166-
{
167-
$url = 'https://localhost';
128+
it('can dispatch a job that calls a webhook if condition true', function () {
129+
$url = 'https://localhost';
168130

169-
WebhookCall::create()->url($url)->useSecret('123')->dispatchIf(true);
131+
WebhookCall::create()->url($url)->useSecret('123')->dispatchIf(true);
170132

171-
Queue::assertPushed(CallWebhookJob::class);
172-
}
133+
Queue::assertPushed(CallWebhookJob::class);
134+
});
173135

174-
/** @test */
175-
public function it_can_not_dispatch_a_job_that_calls_a_webhook_if_condition_false()
176-
{
177-
$url = 'https://localhost';
136+
it('can not dispatch a job that calls a webhook if condition false', function () {
137+
$url = 'https://localhost';
178138

179-
WebhookCall::create()->url($url)->useSecret('123')->dispatchIf(false);
139+
WebhookCall::create()->url($url)->useSecret('123')->dispatchIf(false);
180140

181-
Queue::assertNotPushed(CallWebhookJob::class);
182-
}
141+
Queue::assertNotPushed(CallWebhookJob::class);
142+
});
183143

184-
/** @test */
185-
public function it_can_not_dispatch_a_job_that_calls_a_webhook_unless_condition_true()
186-
{
187-
$url = 'https://localhost';
144+
it('cannot dispatch a job that calls a webhook unless condition true', function () {
145+
$url = 'https://localhost';
188146

189-
WebhookCall::create()->url($url)->useSecret('123')->dispatchUnless(true);
147+
WebhookCall::create()->url($url)->useSecret('123')->dispatchUnless(true);
190148

191-
Queue::assertNotPushed(CallWebhookJob::class);
192-
}
149+
Queue::assertNotPushed(CallWebhookJob::class);
150+
});
193151

194-
/** @test */
195-
public function it_can_dispatch_a_job_that_calls_a_webhook_unless_condition_false()
196-
{
197-
$url = 'https://localhost';
152+
it('can dispatch a job that calls a webhook unless condition false', function () {
153+
$url = 'https://localhost';
198154

199-
WebhookCall::create()->url($url)->useSecret('123')->dispatchUnless(false);
155+
WebhookCall::create()->url($url)->useSecret('123')->dispatchUnless(false);
200156

201-
Queue::assertPushed(CallWebhookJob::class);
202-
}
203-
}
157+
Queue::assertPushed(CallWebhookJob::class);
158+
});

0 commit comments

Comments
 (0)