Blame view

vendor/ezyang/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/HostTest.php 1.82 KB
70f4f18b   Administrator   first_commit
1
2
3
4
5
6
7
8
9
10
11
12
13
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
57
58
59
60
61
  <?php
  
  // takes a URI formatted host and validates it
  
  
  class HTMLPurifier_AttrDef_URI_HostTest extends HTMLPurifier_AttrDefHarness
  {
  
      public function test()
      {
          $this->def = new HTMLPurifier_AttrDef_URI_Host();
  
          $this->assertDef('[2001:DB8:0:0:8:800:200C:417A]'); // IPv6
          $this->assertDef('124.15.6.89'); // IPv4
          $this->assertDef('www.google.com'); // reg-name
  
          // more domain name tests
          $this->assertDef('test.');
          $this->assertDef('sub.test.');
          $this->assertDef('.test', false);
          $this->assertDef('ff');
          $this->assertDef('1f', false);
          $this->assertDef('-f', false);
          $this->assertDef('f1');
          $this->assertDef('f-', false);
          $this->assertDef('sub.ff');
          $this->assertDef('sub.1f', false);
          $this->assertDef('sub.-f', false);
          $this->assertDef('sub.f1');
          $this->assertDef('sub.f-', false);
          $this->assertDef('ff.top');
          $this->assertDef('1f.top');
          $this->assertDef('-f.top', false);
          $this->assertDef('ff.top');
          $this->assertDef('f1.top');
          $this->assertDef('f1_f2.ex.top', false);
          $this->assertDef('f-.top', false);
  
          $this->assertDef("\xE4\xB8\xAD\xE6\x96\x87.com.cn", false);
  
      }
  
      public function testIDNA()
      {
          if (!$GLOBALS['HTMLPurifierTest']['Net_IDNA2']) {
              return false;
          }
          $this->config->set('Core.EnableIDNA', true);
          $this->assertDef("\xE4\xB8\xAD\xE6\x96\x87.com.cn", "xn--fiq228c.com.cn");
          $this->assertDef("\xe2\x80\x85.com", false); // rejected
      }
  
      function testAllowUnderscore() {
          $this->config->set('Core.AllowHostnameUnderscore', true);
          $this->assertDef("foo_bar.example.com");
          $this->assertDef("foo_.example.com", false);
      }
  
  }
  
  // vim: et sw=4 sts=4