require 'spec_helper' describe Auth0::Api::V2::Rules do attr_reader :client, :enabled_rule, :disabled_rule before(:all) do @client = Auth0Client.new(v2_creds) suffix = "#{entity_suffix}#{Faker::Lorem.word}" script = 'function (user, context, callback) { callback(null, user, context);}' stage = 'login_success' sleep 1 @enabled_rule = client.create_rule("Enabled Rule #{suffix}", script, nil, true, stage) sleep 1 @disabled_rule = client.create_rule("Disabled Rule #{suffix}", script, nil, false, stage) end after(:all) do rules = client.rules rules.each do |rule| client.delete_rule(rule['id']) end end describe '.rules' do let(:rules) do client.rules end it do expect(rules.size).to be > 0 end context '#filters' do it do sleep 0.5 expect(client.rules(enabled: true).size).to be >= 1 end it do sleep 0.5 expect(client.rules(enabled: false).size).to be >= 1 end it do sleep 0.5 expect(client.rules(enabled: true, fields: [:script, :order].join(',')).first).to(include('script', 'order')) end it do sleep 0.5 expect(client.rules(enabled: true, fields: [:script].join(',')).first).to_not(include('order', 'name')) end it do sleep 0.5 rule_1 = client.rules(fields: :name, page: 0, per_page: 2) sleep 0.5 rule_2 = client.rules(fields: :name, page: 1, per_page: 1) expect(rule_1.last).to eq(rule_2.first) end end end describe '.rule' do it do expect(client.rule(enabled_rule['id'])).to( include('stage' => enabled_rule['stage'], 'order' => enabled_rule['order'], 'script' => enabled_rule['script']) ) end context '#filters' do let(:rule_include) do client.rule(enabled_rule['id'], fields: [:stage, :order, :script].join(',')) end let(:rule_not_include) do client.rule(enabled_rule['id'], fields: :stage, include_fields: false) end it do expect(rule_include).to(include('stage', 'order', 'script')) end it do expect(rule_not_include).to(include('order', 'script')) expect(rule_not_include).to_not(include('stage')) end end end describe '.create_rule' do let(:name) { "#{Faker::Lorem.word}#{entity_suffix}" } let(:stage) { 'login_success' } let(:script) { 'function(test)' } let(:enabled) { false } let!(:rule) do client.create_rule(name, script, nil, enabled, stage) end it do expect(rule).to include('name' => name, 'stage' => stage, 'script' => script) end end describe '.delete_rule' do it do expect { client.delete_rule(enabled_rule['id']) }.to_not raise_error end it do expect { client.delete_rule '' }.to raise_error(Auth0::InvalidParameter) end end describe '.update_rule' do it do expect(client.update_rule(disabled_rule['id'], enabled: true)).to(include('enabled' => true)) end end end