namespace Shaarli\Front\Controller\Visitor;
-use PHPUnit\Framework\TestCase;
use Shaarli\Bookmark\BookmarkFilter;
+use Shaarli\TestCase;
use Slim\Http\Request;
use Slim\Http\Response;
static::assertSame('templateName', $render);
+ static::assertSame('templateName', $this->assignedValues['_PAGE_']);
+ static::assertSame('templateName', $this->assignedValues['template']);
+
static::assertSame(10, $this->assignedValues['linkcount']);
static::assertSame(5, $this->assignedValues['privateLinkcount']);
static::assertSame(['error'], $this->assignedValues['plugin_errors']);
*/
public function testRedirectFromRefererDefault(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
*/
public function testRedirectFromRefererWithUnmatchedLoopTerm(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
*/
public function testRedirectFromRefererWithMatchingLoopTermInPath(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
*/
public function testRedirectFromRefererWithMatchingLoopTermInQueryParam(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
*/
public function testRedirectFromRefererWithMatchingLoopTermInQueryValue(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
*/
public function testRedirectFromRefererWithLoopTermInDomain(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
*/
public function testRedirectFromRefererWithMatchingClearedParam(): void
{
- $this->container->environment['HTTP_REFERER'] = 'http://shaarli.tld/subfolder/controller?query=param&other=2';
+ $this->container->environment['HTTP_REFERER'] = 'http://shaarli/subfolder/controller?query=param&other=2';
$response = new Response();
static::assertSame(302, $result->getStatusCode());
static::assertSame(['/subfolder/controller?other=2'], $result->getHeader('location'));
}
+
+ /**
+ * Test redirectFromReferer() - From another domain -> we ignore the given referrer.
+ */
+ public function testRedirectExternalReferer(): void
+ {
+ $this->container->environment['HTTP_REFERER'] = 'http://other.domain.tld/controller?query=param&other=2';
+
+ $response = new Response();
+
+ $result = $this->controller->redirectFromReferer($this->request, $response, ['query'], ['query']);
+
+ static::assertSame(302, $result->getStatusCode());
+ static::assertSame(['/subfolder/'], $result->getHeader('location'));
+ }
+
+ /**
+ * Test redirectFromReferer() - From another domain -> we ignore the given referrer.
+ */
+ public function testRedirectExternalRefererExplicitDomainName(): void
+ {
+ $this->container->environment['SERVER_NAME'] = 'my.shaarli.tld';
+ $this->container->environment['HTTP_REFERER'] = 'http://your.shaarli.tld/controller?query=param&other=2';
+
+ $response = new Response();
+
+ $result = $this->controller->redirectFromReferer($this->request, $response, ['query'], ['query']);
+
+ static::assertSame(302, $result->getStatusCode());
+ static::assertSame(['/subfolder/'], $result->getHeader('location'));
+ }
}