|
|
<?php
|
|
|
namespace p3k\WebSub\Tests;
|
|
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
use p3k\WebSub\Client;
|
|
|
|
|
|
class SubscribeTest extends TestCase {
|
|
|
|
|
|
public function testSubscribePostsFormEncodedRequest() {
|
|
|
$http = new FakeHTTP(['POST' => ['code' => 202]]);
|
|
|
$client = new Client($http);
|
|
|
|
|
|
$response = $client->subscribe('https://hub.example/', 'https://example.com/feed', 'https://reader.example/callback');
|
|
|
|
|
|
$this->assertSame(202, $response['code']);
|
|
|
$this->assertCount(1, $http->requests);
|
|
|
$this->assertSame('https://hub.example/', $http->requests[0]['url']);
|
|
|
parse_str($http->requests[0]['body'], $params);
|
|
|
$this->assertSame([
|
|
|
'hub_mode' => 'subscribe',
|
|
|
'hub_topic' => 'https://example.com/feed',
|
|
|
'hub_callback' => 'https://reader.example/callback',
|
|
|
], $params);
|
|
|
$this->assertStringContainsString('hub.mode=subscribe', $http->requests[0]['body']);
|
|
|
}
|
|
|
|
|
|
public function testSubscribeIncludesLeaseSecondsAndSecret() {
|
|
|
$http = new FakeHTTP();
|
|
|
$client = new Client($http);
|
|
|
|
|
|
$client->subscribe('https://hub.example/', 'https://example.com/feed', 'https://reader.example/callback', [
|
|
|
'lease_seconds' => 86400,
|
|
|
'secret' => 's3cret',
|
|
|
]);
|
|
|
|
|
|
$body = $http->requests[0]['body'];
|
|
|
$this->assertStringContainsString('hub.lease_seconds=86400', $body);
|
|
|
$this->assertStringContainsString('hub.secret=s3cret', $body);
|
|
|
}
|
|
|
|
|
|
public function testUnsubscribePostsFormEncodedRequest() {
|
|
|
$http = new FakeHTTP();
|
|
|
$client = new Client($http);
|
|
|
|
|
|
$client->unsubscribe('https://hub.example/', 'https://example.com/feed', 'https://reader.example/callback');
|
|
|
|
|
|
$this->assertSame('https://hub.example/', $http->requests[0]['url']);
|
|
|
$this->assertSame(
|
|
|
'hub.mode=unsubscribe&hub.topic=https%3A%2F%2Fexample.com%2Ffeed&hub.callback=https%3A%2F%2Freader.example%2Fcallback',
|
|
|
$http->requests[0]['body']
|
|
|
);
|
|
|
}
|
|
|
|
|
|
}
|