Sha256: 3a1a731318f57c58626c448db37e0da8cf7627afad2f14a055bc2affc5cae97e

Contents?: true

Size: 1.81 KB

Versions: 8

Compression:

Stored size: 1.81 KB

Contents

require 'spec_helper'

module Spree
  describe LegacyUser, :type => :model do
    let(:user) { LegacyUser.new }

    it "can generate an API key" do
      expect(user).to receive(:save!)
      expect { user.generate_spree_api_key! }.to change(user, :spree_api_key).to be_present
    end

    it "can generate an API key without persisting" do
      expect(user).not_to receive(:save!)
      expect { user.generate_spree_api_key }.to change(user, :spree_api_key).to be_present
    end

    it "can clear an API key" do
      user.spree_api_key = 'abc123'
      expect(user).to receive(:save!)
      expect { user.clear_spree_api_key! }.to change(user, :spree_api_key).to be_blank
    end

    it "can clear an api key without persisting" do
      user.spree_api_key = 'abc123'
      expect(user).not_to receive(:save!)
      expect { user.clear_spree_api_key }.to change(user, :spree_api_key).to be_blank
    end

    context "admin role auto-api-key grant" do # so the admin user can do admin api actions
      let(:user) { create(:user) }
      before { expect(user.spree_roles).to be_blank }
      subject { user.spree_roles << role }

      context "admin role" do
        let(:role) { create(:role, name: "admin") }

        context "the user has no api key" do
          before { user.clear_spree_api_key! }
          it { expect { subject }.to change { user.reload.spree_api_key }.from(nil) }
        end

        context "the user already has an api key" do
          before { user.generate_spree_api_key! }
          it { expect { subject }.not_to change { user.reload.spree_api_key } }
        end
      end

      context "non-admin role" do
        let(:role) { create(:role, name: "foo") }
        before { user.clear_spree_api_key! }
        it { expect { subject }.not_to change { user.reload.spree_api_key } }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
solidus_api-1.1.4 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.3 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.2 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.1 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.0 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.0.pre2 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.0.pre1 spec/models/spree/legacy_user_spec.rb
solidus_api-1.1.0.beta1 spec/models/spree/legacy_user_spec.rb