ContentNegotiationTest.php 2.47 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
<?php

/**
 * @file
 * Contains Drupal\system\Tests\DrupalKernel\ContentNegotiationTest.
 */

namespace Drupal\system\Tests\DrupalKernel;

use Drupal\simpletest\WebTestBase;

/**
13
 * Tests content negotiation.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
 */
class ContentNegotiationTest extends WebTestBase {

  public static function getInfo() {
    return array(
      'name' => 'Content negotiation',
      'description' => 'Tests content negotiation.',
      'group' => 'DrupalKernel',
    );
  }

  /**
   * Verifies HTML responses for bogus Accept headers.
   *
   * Drupal does not fully support older browsers, but a page output is still
   * expected.
   *
   * @see http://drupal.org/node/1716790
   */
  function testBogusAcceptHeader() {
    $tests = array(
      // @see https://bugs.webkit.org/show_bug.cgi?id=27267
      'Firefox 3.5 (2009)' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
      'IE8 (2009)' => 'image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*',
      'Opera (2009)' => 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
      'Chrome (2009)' => 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
      // @see https://github.com/symfony/symfony/pull/564
      'Firefox 3.6 (2010)' => 'text/html,application/xhtml+xml,application/json,application/xml;q=0.9,*/*;q=0.8',
      'Safari (2010)' => '*/*',
      'Opera (2010)' => 'image/jpeg,image/gif,image/x-xbitmap,text/html,image/webp,image/png,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.1',
      // @see http://drupal.org/node/1716790
      'Safari (2010), iOS 4.2.1 (2012)' => 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
      'Android #1 (2012)' => 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
      'Android #2 (2012)' => 'text/xml,text/html,application/xhtml+xml,image/png,text/plain,*/*;q=0.8',
    );
    foreach ($tests as $case => $header) {
      $this->drupalGet('', array(), array('Accept: ' . $header));
      $this->assertNoText('Unsupported Media Type', '"Unsupported Media Type" not found for ' . $case);
      $this->assertText(t('Log in'), '"Log in" found for ' . $case);
    }
  }

}