function AlignFilterTest::testAlignFilter in Entity Embed 7
Same name and namespace in other branches
- 7.2 entity_embed.test \AlignFilterTest::testAlignFilter()
Tests the embed_button administration functionality.
File
- ./entity_embed.test, line 352 
- Test integration for the entity_embed module.
Class
- AlignFilterTest
- Tests the align filter.
Code
function testAlignFilter() {
  // Setup dummy filter object.
  $filter = new stdClass();
  $filter->callback = '_entity_embed_filter_align';
  // No data-align attribute.
  $tests = array(
    '<img src="llama.jpg" />' => array(
      '<img src="llama.jpg" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  // Data-align attribute: all 3 allowed values.
  $tests = array(
    '<img src="llama.jpg" data-align="left" />' => array(
      '<img src="llama.jpg" class="align-left" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  $tests = array(
    '<img src="llama.jpg" data-align="center" />' => array(
      '<img src="llama.jpg" class="align-center" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  $tests = array(
    '<img src="llama.jpg" data-align="right" />' => array(
      '<img src="llama.jpg" class="align-right" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  // Data-align attribute: a disallowed value.
  $tests = array(
    '<img src="llama.jpg" data-align="left foobar" />' => array(
      '<img src="llama.jpg" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  // Empty data-align attribute.
  $tests = array(
    '<img src="llama.jpg" data-align="" />' => array(
      '<img src="llama.jpg" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  // Ensure the filter also works with uncommon yet valid attribute quoting.
  $tests = array(
    '<img src=llama.jpg data-align=right />' => array(
      '<img src="llama.jpg" class="align-right" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  // Security test: attempt to inject an additional class.
  $tests = array(
    '<img src="llama.jpg" data-align="center another-class-here" />' => array(
      '<img src="llama.jpg" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
  // Security test: attempt an XSS.
  $tests = array(
    '<img src="llama.jpg" data-align="center \'onclick=\'alert(foo);" />' => array(
      '<img src="llama.jpg" />' => TRUE,
    ),
  );
  $this
    ->assertFilteredString($filter, $tests);
}