diff options
Diffstat (limited to 'spec/controllers/profiles/personal_access_tokens_controller_spec.rb')
-rw-r--r-- | spec/controllers/profiles/personal_access_tokens_controller_spec.rb | 95 |
1 files changed, 23 insertions, 72 deletions
diff --git a/spec/controllers/profiles/personal_access_tokens_controller_spec.rb b/spec/controllers/profiles/personal_access_tokens_controller_spec.rb index 8dee0490fd6..044ce8f397a 100644 --- a/spec/controllers/profiles/personal_access_tokens_controller_spec.rb +++ b/spec/controllers/profiles/personal_access_tokens_controller_spec.rb @@ -3,11 +3,11 @@ require 'spec_helper' RSpec.describe Profiles::PersonalAccessTokensController do - let(:user) { create(:user) } + let(:access_token_user) { create(:user) } let(:token_attributes) { attributes_for(:personal_access_token) } before do - sign_in(user) + sign_in(access_token_user) end describe '#create' do @@ -49,13 +49,27 @@ RSpec.describe Profiles::PersonalAccessTokensController do end end + describe 'GET /-/profile/personal_access_tokens' do + let(:get_access_tokens) do + get :index + response + end + + subject(:get_access_tokens_with_page) do + get :index, params: { page: 1 } + response + end + + it_behaves_like 'GET access tokens are paginated and ordered' + end + describe '#index' do - let!(:active_personal_access_token) { create(:personal_access_token, user: user) } + let!(:active_personal_access_token) { create(:personal_access_token, user: access_token_user) } before do # Impersonation and inactive personal tokens are ignored - create(:personal_access_token, :impersonation, user: user) - create(:personal_access_token, :revoked, user: user) + create(:personal_access_token, :impersonation, user: access_token_user) + create(:personal_access_token, :revoked, user: access_token_user) get :index end @@ -63,7 +77,7 @@ RSpec.describe Profiles::PersonalAccessTokensController do active_personal_access_tokens_detail = ::PersonalAccessTokenSerializer.new.represent([active_personal_access_token]) - expect(assigns(:active_personal_access_tokens).to_json).to eq(active_personal_access_tokens_detail.to_json) + expect(assigns(:active_access_tokens).to_json).to eq(active_personal_access_tokens_detail.to_json) end it "sets PAT name and scopes" do @@ -86,73 +100,10 @@ RSpec.describe Profiles::PersonalAccessTokensController do expect(response).to have_gitlab_http_status(:not_found) end - context "access_token_pagination feature flag is enabled" do - before do - stub_feature_flags(access_token_pagination: true) - allow(Kaminari.config).to receive(:default_per_page).and_return(1) - create(:personal_access_token, user: user) - end - - it "returns paginated response" do - get :index, params: { page: 1 } - expect(assigns(:active_personal_access_tokens).count).to eq(1) - end - - it 'adds appropriate headers' do - get :index, params: { page: 1 } - expect_header('X-Per-Page', '1') - expect_header('X-Page', '1') - expect_header('X-Next-Page', '2') - expect_header('X-Total', '2') - end - end - - context "tokens returned are ordered" do - let(:expires_1_day_from_now) { 1.day.from_now.to_date } - let(:expires_2_day_from_now) { 2.days.from_now.to_date } - - before do - create(:personal_access_token, user: user, name: "Token1", expires_at: expires_1_day_from_now) - create(:personal_access_token, user: user, name: "Token2", expires_at: expires_2_day_from_now) - end - - it "orders token list ascending on expires_at" do - get :index - - first_token = assigns(:active_personal_access_tokens).first.as_json - expect(first_token['name']).to eq("Token1") - expect(first_token['expires_at']).to eq(expires_1_day_from_now.strftime("%Y-%m-%d")) - end - - it "orders tokens on id in case token has same expires_at" do - create(:personal_access_token, user: user, name: "Token3", expires_at: expires_1_day_from_now) - - get :index - - first_token = assigns(:active_personal_access_tokens).first.as_json - expect(first_token['name']).to eq("Token3") - expect(first_token['expires_at']).to eq(expires_1_day_from_now.strftime("%Y-%m-%d")) - - second_token = assigns(:active_personal_access_tokens).second.as_json - expect(second_token['name']).to eq("Token1") - expect(second_token['expires_at']).to eq(expires_1_day_from_now.strftime("%Y-%m-%d")) - end - end - - context "access_token_pagination feature flag is disabled" do - before do - stub_feature_flags(access_token_pagination: false) - create(:personal_access_token, user: user) - end + it 'returns tokens for json format' do + get :index, params: { format: :json } - it "returns all tokens in system" do - get :index, params: { page: 1 } - expect(assigns(:active_personal_access_tokens).count).to eq(2) - end + expect(json_response.count).to eq(1) end end - - def expect_header(header_name, header_val) - expect(response.headers[header_name]).to eq(header_val) - end end |