Sha256: 4f109a4e8c8ffa720cc8a76e7f96c9f9c2d91faaaee36bfc9aceeeb8c76a2418

Contents?: true

Size: 1.63 KB

Versions: 9

Compression:

Stored size: 1.63 KB

Contents

require 'spec_helper'

describe 'sanitize all parameters used in sql' do

  before do
    Object.send(:remove_const, :T) rescue nil
    class T < Datatable::Base
      sql <<-SQL
        SELECT
          id,
          order_number,
          memo
        FROM
          orders
      SQL
      columns(
          {'orders.id'   => {:type => :integer}},
          {'orders.order_number' => {:type => :integer }},
          {'orders.memo' => {:type => :string }}
      )
    end

    @params = {
      "iColumns" =>	3,
      "bSearchable_0" => false,
      "bSearchable_1" => false,
      "bSearchable_2" => false,
      "bSortable_0" => false,
      "bSortable_1" => false,
      "bSortable_2" => false,
      "sSearch_0" => nil,
      "sSearch_1" => nil,
      "sSearch_2" => nil,
      "sSearch" => nil
    }
    Order.delete_all
    20.times{ Factory(:order) }
  end

  it "sanitize sSearch" do
    @params['sSearch'] = "'invalid sql"
    T.query(@params).to_json
    lambda{ T.query(@params) }.should_not raise_error
  end

  it "sanitize sSearch_#" do
    @params['bSearchable_2'] = true
    @params['sSearch_2'] = "'injected sql"
    T.query(@params)
    lambda{ T.query(@params) }.should_not raise_error
  end

  it "sanitize sSortDir_#" do
    @params['sSortDir_2'] = "'injected sql"
    T.query(@params).to_json
    lambda{ T.query(@params) }.should_not raise_error
  end

  it "sanitize iDisplayLength" do
    @params['iDisplayLength'] = "'injected sql"
    lambda{ T.query(@params) }.should_not raise_error
  end

  it "sanitize iDisplayStart" do
    @params['iDisplayStart'] = "'injected sql"
    lambda{ T.query(@params) }.should_not raise_error
  end





end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
datatable-0.2pre6 example_app/spec/datatables/query_params_spec.rb
datatable-0.2pre5 example_app/spec/datatables/query_params_spec.rb
datatable-0.2pre4 example_app/spec/datatables/query_params_spec.rb
datatable-0.2pre3 example_app/spec/datatables/query_params_spec.rb
datatable-0.2pre2 example_app/spec/datatables/query_params_spec.rb
datatable-0.2pre1 example_app/spec/datatables/query_params_spec.rb
datatable-0.1.1alpha4 example_app/spec/datatables/query_params_spec.rb
datatable-0.1.1alpha1 example_app/spec/datatables/query_params_spec.rb
datatable-0.1.0alpha2 example_app/spec/datatables/query_params_spec.rb