/simplesamlphp/tests/lib/SimpleSAML/Locale/LanguageTest.php

https://github.com/UMMS-Biocore/dolphinnext · PHP · 181 lines · 109 code · 25 blank · 47 comment · 0 complexity · 0481d34386ad8e9978ec90a8b7ec0f7d MD5 · raw file

  1. <?php
  2. declare(strict_types=1);
  3. namespace SimpleSAML\Test\Locale;
  4. use PHPUnit\Framework\TestCase;
  5. use SimpleSAML\Configuration;
  6. use SimpleSAML\Locale\Language;
  7. class LanguageTest extends TestCase
  8. {
  9. /**
  10. * Test SimpleSAML\Locale\Language::getDefaultLanguage().
  11. * @return void
  12. */
  13. public function testGetDefaultLanguage(): void
  14. {
  15. // test default
  16. $c = Configuration::loadFromArray([]);
  17. $l = new Language($c);
  18. $this->assertEquals('en', $l->getDefaultLanguage());
  19. // test defaults coming from configuration
  20. $c = Configuration::loadFromArray([
  21. 'language.available' => ['en', 'es', 'nn'],
  22. 'language.default' => 'es',
  23. ]);
  24. $l = new Language($c);
  25. $this->assertEquals('es', $l->getDefaultLanguage());
  26. }
  27. /**
  28. * Test SimpleSAML\Locale\Language::getLanguageCookie().
  29. * @return void
  30. */
  31. public function testGetLanguageCookie(): void
  32. {
  33. // test it works when no cookie is set
  34. Configuration::loadFromArray([], '', 'simplesaml');
  35. $this->assertNull(Language::getLanguageCookie());
  36. // test that it works fine with defaults
  37. Configuration::loadFromArray([], '', 'simplesaml');
  38. $_COOKIE['language'] = 'en';
  39. $this->assertEquals('en', Language::getLanguageCookie());
  40. // test that it works with non-defaults
  41. Configuration::loadFromArray([
  42. 'language.available' => ['en', 'es', 'nn'],
  43. 'language.cookie.name' => 'xyz'
  44. ], '', 'simplesaml');
  45. $_COOKIE['xyz'] = 'Es'; // test values are converted to lowercase too
  46. $this->assertEquals('es', Language::getLanguageCookie());
  47. }
  48. /**
  49. * Test SimpleSAML\Locale\Language::getLanguageList().
  50. * @return void
  51. */
  52. public function testGetLanguageListNoConfig(): void
  53. {
  54. // test default
  55. $c = Configuration::loadFromArray([], '', 'simplesaml');
  56. $l = new Language($c);
  57. $l->setLanguage('en');
  58. $this->assertEquals(['en' => true], $l->getLanguageList());
  59. }
  60. /**
  61. * Test SimpleSAML\Locale\Language::getLanguageList().
  62. * @return void
  63. */
  64. public function testGetLanguageListCorrectConfig(): void
  65. {
  66. // test langs from from language_names
  67. $c = Configuration::loadFromArray([
  68. 'language.available' => ['en', 'nn', 'es'],
  69. ], '', 'simplesaml');
  70. $l = new Language($c);
  71. $l->setLanguage('es');
  72. $this->assertEquals([
  73. 'en' => false,
  74. 'es' => true,
  75. 'nn' => false,
  76. ], $l->getLanguageList());
  77. }
  78. /**
  79. * Test SimpleSAML\Locale\Language::getLanguageList().
  80. * @return void
  81. */
  82. public function testGetLanguageListIncorrectConfig(): void
  83. {
  84. // test non-existent langs
  85. $c = Configuration::loadFromArray([
  86. 'language.available' => ['foo', 'bar'],
  87. ], '', 'simplesaml');
  88. $l = new Language($c);
  89. $l->setLanguage('foo');
  90. $this->assertEquals(['en' => true], $l->getLanguageList());
  91. }
  92. /**
  93. * Test SimpleSAML\Locale\Language::getLanguageParameterName().
  94. * @return void
  95. */
  96. public function testGetLanguageParameterName(): void
  97. {
  98. // test for default configuration
  99. $c = Configuration::loadFromArray([], '', 'simplesaml');
  100. $l = new Language($c);
  101. $this->assertEquals('language', $l->getLanguageParameterName());
  102. // test for valid configuration
  103. $c = Configuration::loadFromArray([
  104. 'language.parameter.name' => 'xyz'
  105. ], '', 'simplesaml');
  106. $l = new Language($c);
  107. $this->assertEquals('xyz', $l->getLanguageParameterName());
  108. }
  109. /**
  110. * Test SimpleSAML\Locale\Language::isLanguageRTL().
  111. * @return void
  112. */
  113. public function testIsLanguageRTL(): void
  114. {
  115. // test defaults
  116. $c = Configuration::loadFromArray([], '', 'simplesaml');
  117. $l = new Language($c);
  118. $l->setLanguage('en');
  119. $this->assertFalse($l->isLanguageRTL());
  120. // test non-defaults, non-RTL
  121. $c = Configuration::loadFromArray([
  122. 'language.rtl' => ['foo', 'bar'],
  123. ], '', 'simplesaml');
  124. $l = new Language($c);
  125. $l->setLanguage('en');
  126. $this->assertFalse($l->isLanguageRTL());
  127. // test non-defaults, RTL
  128. $c = Configuration::loadFromArray([
  129. 'language.available' => ['en', 'nn', 'es'],
  130. 'language.rtl' => ['nn', 'es'],
  131. ], '', 'simplesaml');
  132. $l = new Language($c);
  133. $l->setLanguage('es');
  134. $this->assertTrue($l->isLanguageRTL());
  135. }
  136. /**
  137. * Test SimpleSAML\Locale\Language::setLanguage().
  138. * @return void
  139. */
  140. public function testSetLanguage(): void
  141. {
  142. // test with valid configuration, no cookies set
  143. $c = Configuration::loadFromArray([
  144. 'language.available' => ['en', 'nn', 'es'],
  145. 'language.parameter.name' => 'xyz',
  146. 'language.parameter.setcookie' => false,
  147. ], '', 'simplesaml');
  148. $_GET['xyz'] = 'Es'; // test also that lang code is transformed to lower caps
  149. $l = new Language($c);
  150. $this->assertEquals('es', $l->getLanguage());
  151. // test with valid configuration, no cookies, language set unavailable
  152. $_GET['xyz'] = 'unavailable';
  153. $l = new Language($c);
  154. $this->assertEquals('en', $l->getLanguage());
  155. }
  156. }