diff options
author | Thomas Bruederli <thomas@roundcube.net> | 2014-08-13 19:15:12 +0200 |
---|---|---|
committer | Thomas Bruederli <thomas@roundcube.net> | 2014-08-13 19:15:12 +0200 |
commit | 06fdaf88cb1a355e445294beba4a89d0209ac71e (patch) | |
tree | 53ce0a305a69773169b00bbeae92069d20d3403c /tests/RcmailFunc.php | |
parent | 48e340a82938a83ff337eadb7d6d64c2b13acffe (diff) |
Extend rcmail::url() to produce absolute and fully qualified URLs
Diffstat (limited to 'tests/RcmailFunc.php')
-rw-r--r-- | tests/RcmailFunc.php | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/RcmailFunc.php b/tests/RcmailFunc.php new file mode 100644 index 000000000..09b54b22c --- /dev/null +++ b/tests/RcmailFunc.php @@ -0,0 +1,85 @@ +<?php + +/** + * Test class to test rcmail class + * + * @package Tests + */ +class RcmailFunc extends PHPUnit_Framework_TestCase +{ + function setUp() + { + // set some HTTP env vars + $_SERVER['HTTP_HOST'] = 'mail.example.org'; + $_SERVER['SERVER_PORT'] = '443'; + $_SERVER['SCRIPT_NAME'] = '/sub/index.php'; + $_SERVER['HTTPS'] = true; + + rcmail::get_instance()->filename = ''; + } + + /** + * Class constructor + */ + function test_class() + { + $object = rcmail::get_instance(); + $this->assertInstanceOf('rcmail', $object, "Class singleton"); + } + + /** + * Test rcmail::url() + */ + function test_url() + { + $rcmail = rcmail::get_instance(); + $this->assertEquals( + './?_task=cli&_action=test', + $rcmail->url('test'), + "Action only" + ); + $this->assertEquals( + './?_task=cli&_action=test&_a=AA', + $rcmail->url(array('action' => 'test', 'a' => 'AA')), + "Unprefixed parameters" + ); + $this->assertEquals( + './?_task=cli&_action=test&_b=BB', + $rcmail->url(array('_action' => 'test', '_b' => 'BB', '_c' => null)), + "Prefixed parameters (skip empty)" + ); + $this->assertEquals( + '/sub/?_task=cli&_action=test&_mode=ABS', + $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true), + "Absolute URL" + ); + + $this->assertEquals( + 'https://mail.example.org/sub/?_task=calendar&_action=test&_mode=FQ', + $rcmail->url(array('task' => 'calendar', '_action' => 'test', '_mode' => 'FQ'), true, true), + "Fully Qualified URL" + ); + + // with different SCRIPT_NAME values + $_SERVER['SCRIPT_NAME'] = 'index.php'; + $this->assertEquals( + '/?_task=cli&_action=test&_mode=ABS', + $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true), + "Absolute URL (root)" + ); + $_SERVER['SCRIPT_NAME'] = ''; + $this->assertEquals( + '/?_task=cli&_action=test&_mode=ABS', + $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true), + "Absolute URL (root)" + ); + + $_SERVER['HTTPS'] = false; + $_SERVER['SERVER_PORT'] = '8080'; + $this->assertEquals( + 'http://mail.example.org:8080/?_task=cli&_action=test&_mode=ABS', + $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true, true), + "Full URL with port" + ); + } +} |