Sha256: 0afcca603c51d1b56d54ebd329a967ad9b4548283d1091d1ce685c3b7a727fc6

Contents?: true

Size: 1.4 KB

Versions: 12

Compression:

Stored size: 1.4 KB

Contents

require 'spec_helper'
require 'secure_headers/headers/content_security_policy/script_hash_middleware'

module SecureHeaders
  describe ContentSecurityPolicy::ScriptHashMiddleware do

    let(:app) { double(:call => [200, headers, '']) }
    let(:env) { double }
    let(:headers) { double }

    let(:default_config) do
      {
        :disable_fill_missing => true,
        :default_src => 'https://*',
        :report_uri => '/csp_report',
        :script_src => 'inline eval https://* data:',
        :style_src => "inline https://* about:"
      }
    end

    def should_assign_header name, value
      expect(headers).to receive(:[]=).with(name, value)
    end

    def call_middleware(hashes = [])
      options = {
        :ua => USER_AGENTS[:chrome]
      }
      expect(env).to receive(:[]).with(HASHES_ENV_KEY).and_return(hashes)
      expect(env).to receive(:[]).with(ENV_KEY).and_return(
        :config => default_config,
        :options => options
      )
      ContentSecurityPolicy::ScriptHashMiddleware.new(app).call(env)
    end

    it "adds hashes stored in env to the header" do
      should_assign_header(HEADER_NAME + "-Report-Only", /script-src[^;]*'sha256-/)
      call_middleware(['sha256-abc123'])
    end

    it "leaves things alone when no hashes are saved to env" do
      should_assign_header(HEADER_NAME + "-Report-Only", /script-src[^;]*(?!'sha256-)/)
      call_middleware()
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
secure_headers-2.3.0 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.2.4 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.2.3 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.2.2 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.2.1 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.2.0 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.1.0 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.0.2 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.0.1 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.0.0 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.0.0.pre2 spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb
secure_headers-2.0.0.pre spec/lib/secure_headers/headers/content_security_policy/script_hash_middleware_spec.rb