BigW Consortium Gitlab

personal_access_token_spec.rb 2.4 KB
Newer Older
1 2 3
require 'spec_helper'

describe PersonalAccessToken, models: true do
4 5
  describe '.build' do
    let(:personal_access_token) { build(:personal_access_token) }
6
    let(:invalid_personal_access_token) { build(:personal_access_token, :invalid) }
7 8 9

    it 'is a valid personal access token' do
      expect(personal_access_token).to be_valid
10 11
    end

12 13 14 15 16
    it 'ensures that the token is generated' do
      invalid_personal_access_token.save!

      expect(invalid_personal_access_token).to be_valid
      expect(invalid_personal_access_token.token).not_to be_nil
17 18
    end
  end
19

20 21
  describe ".active?" do
    let(:active_personal_access_token) { build(:personal_access_token) }
22 23
    let(:revoked_personal_access_token) { build(:personal_access_token, :revoked) }
    let(:expired_personal_access_token) { build(:personal_access_token, :expired) }
24 25 26 27 28 29 30 31 32 33 34 35 36

    it "returns false if the personal_access_token is revoked" do
      expect(revoked_personal_access_token).not_to be_active
    end

    it "returns false if the personal_access_token is expired" do
      expect(expired_personal_access_token).not_to be_active
    end

    it "returns true if the personal_access_token is not revoked and not expired" do
      expect(active_personal_access_token).to be_active
    end
  end
37

38 39 40 41 42 43 44 45 46 47
  describe 'revoke!' do
    let(:active_personal_access_token) { create(:personal_access_token) }

    it 'revokes the token' do
      active_personal_access_token.revoke!

      expect(active_personal_access_token.revoked?).to be true
    end
  end

48 49 50 51 52 53 54 55 56 57
  context "validations" do
    let(:personal_access_token) { build(:personal_access_token) }

    it "requires at least one scope" do
      personal_access_token.scopes = []

      expect(personal_access_token).not_to be_valid
      expect(personal_access_token.errors[:scopes].first).to eq "can't be blank"
    end

58 59 60 61 62 63
    it "allows creating a token with API scopes" do
      personal_access_token.scopes = [:api, :read_user]

      expect(personal_access_token).to be_valid
    end

64 65 66 67 68 69 70
    it "allows creating a token with read_registry scope" do
      personal_access_token.scopes = [:read_registry]

      expect(personal_access_token).to be_valid
    end

    it "rejects creating a token with unavailable scopes" do
71 72 73
      personal_access_token.scopes = [:openid, :api]

      expect(personal_access_token).not_to be_valid
74
      expect(personal_access_token.errors[:scopes].first).to eq "can only contain available scopes"
75 76
    end
  end
77
end