# all files / test/unit/base/module/ Codeview.spec.js

100% Statements 32/32
100% Branches 0/0
100% Functions 5/5
100% Lines 32/32

    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
    62

    1×
    1×
    1×
    1×
    1×

    1×
    1×
    1×

    1×
    3×
    3×
    3×
    3×

    1×
    1×
    1×
    1×
    1×
    1×

    1×
    1×

    1×

    1×

    1×

    1×
    1×
    1×
    1×

    1×
    1×
    1×

    1×

     /**
     * Codeview.spec.js
     * (c) 2015~ Summernote Team
     * summernote may be freely distributed under the MIT license./
     */
    import chai from 'chai';
    import $ from 'jquery';
    import Context from '../../../../src/js/base/Context';
    import Codeview from '../../../../src/js/base/module/Codeview';
    import '../../../../src/js/bs4/settings';

    describe('Codeview', () => {
      var expect = chai.expect;
      var options, codeview, context;

      beforeEach(() => {
        options = $.extend({}, $.summernote.options);
        options.codeviewFilter = true;
        context = new Context($('<div><p>hello</p></div>'), options);
        codeview = new Codeview(context);
      });

      it('should toggle codeview mode', () => {
        expect(codeview.isActivated()).to.be.false;
        codeview.toggle();
        expect(codeview.isActivated()).to.be.true;
        codeview.toggle();
        expect(codeview.isActivated()).to.be.false;
      });

      it('should purify malicious codes', () => {
        expect(codeview.purify('<script>alert("summernote");</script>')).to.equalsIgnoreCase(
          'alert("summernote");'
        );
        expect(codeview.purify('<iframe frameborder="0" src="//www.youtube.com/embed/CXgsA98krxA" width="640" height="360" class="note-video-clip"></iframe>')).to.equalsIgnoreCase(
          '<iframe frameborder="0" src="//www.youtube.com/embed/CXgsA98krxA" width="640" height="360" class="note-video-clip"></iframe>'
        );
        expect(codeview.purify('<iframe frameborder="0" src="//www.fake-youtube.com/embed/CXgsA98krxA" width="640" height="360" class="note-video-clip">')).to.equalsIgnoreCase(
          ''
        );
        expect(codeview.purify('<iframe frameborder="0" src="//www.youtube.com/embed/CXgsA98krxA" width="640" height="360" class="note-video-clip"  src  =  "//www.fake-youtube.com/embed/CXgsA98krxA"/>')).to.equalsIgnoreCase(
          ''
        );
      });

      it('should purify can be customized', () => {
        codeview.options = options;
        codeview.options.codeviewIframeFilter = false;
        expect(codeview.purify('<iframe frameborder="0" src="//www.fake-youtube.com/embed/CXgsA98krxA" width="640" height="360" class="note-video-clip">')).to.equalsIgnoreCase(
          '<iframe frameborder="0" src="//www.fake-youtube.com/embed/CXgsA98krxA" width="640" height="360" class="note-video-clip">'
        );
        codeview.options = options;
        codeview.options.codeviewFilterRegex = /\d+/;
        expect(codeview.purify('<script>alert("summernote");</script>')).to.equalsIgnoreCase(
          '<script>alert("summernote");</script>'
        );
        expect(codeview.purify('<span>Tel: 012345678</span>')).to.equalsIgnoreCase(
          '<span>Tel: </span>'
        );
      });
    });