Sha256: 27387e4e041e3eb1a3f1f1cbf29c33f0b51b966ebe0966c73c4f3019703193a8

Contents?: true

Size: 1.4 KB

Versions: 13

Compression:

Stored size: 1.4 KB

Contents

require 'spec_helper'

describe Locomotive::Steam::Liquid::Drops::Params do

  let(:params)    { { 'foo' => '42' } }
  let(:drop)      { described_class.new(params) }

  it { expect(drop.liquid_method_missing('bar').to_s).to eq '' }

  it { expect(drop.liquid_method_missing('foo').to_s).to eq '42' }

  describe 'prevent XSS attack' do

    context 'passing data from Liquid to HTML' do

      let(:params) { { 'foo' => 'Hello<script>alert(document.cookie)</script>' } }

      it { expect(drop.liquid_method_missing('foo').to_s).to eq 'Hello&lt;script&gt;alert(document.cookie)&lt;/script&gt;' }

      context 'security is disabled' do

        it { expect(drop.liquid_method_missing('foo').html_safe).to eq 'Hello<script>alert(document.cookie)</script>' }

      end

    end

    context 'passing data from Liquid to Javascript' do

      let(:params) { { 'foo' => "'+alert(document.cookie)+'" } }

      it { expect(drop.liquid_method_missing('foo').to_s).to eq '&#39;+alert(document.cookie)+&#39;' }

    end

  end

  describe 'gives access to the Hash object through the unsafe method' do

    let(:params) { { 'foo' => 'hello', 'bar' => 'world' } }

    it 'expects to respond to []' do
      expect(drop.unsafe['foo']).to eq('hello')
    end

    it 'expects to respond to each_pair' do
      memo = []
      drop.unsafe.each_pair { |p| memo << p.last }
      expect(memo.join(' ')).to eq 'hello world'
    end

  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
locomotivecms_steam-1.8.0.alpha2 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.8.0.alpha1 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.7.1 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.7.0 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.6.1 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.6.0 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.6.0.rc1 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.6.0.beta1 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.5.3 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.5.2 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.5.1 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.5.0 spec/unit/liquid/drops/params_spec.rb
locomotivecms_steam-1.5.0.rc1 spec/unit/liquid/drops/params_spec.rb