diff options
author | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-02-27 18:56:54 +0000 |
---|---|---|
committer | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-03-01 13:11:11 +0000 |
commit | 2b474dc2b226460782413e634792cf83e791173b (patch) | |
tree | aa4520aae3d0a1130a3349699a2e0c20f344aa39 /spec/requests/api | |
parent | 9f2e4742e354f5548b4956060f1bfa5ee3bd6657 (diff) | |
download | gitlab-ce-2b474dc2b226460782413e634792cf83e791173b.tar.gz |
refactors finder and correlated code
Diffstat (limited to 'spec/requests/api')
-rw-r--r-- | spec/requests/api/personal_access_tokens_spec.rb | 15 | ||||
-rw-r--r-- | spec/requests/api/users_spec.rb | 67 |
2 files changed, 41 insertions, 41 deletions
diff --git a/spec/requests/api/personal_access_tokens_spec.rb b/spec/requests/api/personal_access_tokens_spec.rb index 98c8794efa4..4037ce483ea 100644 --- a/spec/requests/api/personal_access_tokens_spec.rb +++ b/spec/requests/api/personal_access_tokens_spec.rb @@ -5,8 +5,10 @@ describe API::PersonalAccessTokens, api: true do let(:user) { create(:user) } let(:not_found_token) { (PersonalAccessToken.maximum('id') || 0) + 10 } + let(:finder) { PersonalAccessTokensFinder.new(user: user, impersonation: false) } describe "GET /personal_access_tokens" do + let!(:active_impersonation_token) { create(:impersonation_personal_access_token, user: user) } let!(:active_personal_access_token) { create(:personal_access_token, user: user) } let!(:revoked_personal_access_token) { create(:revoked_personal_access_token, user: user) } let!(:expired_personal_access_token) { create(:expired_personal_access_token, user: user) } @@ -16,7 +18,7 @@ describe API::PersonalAccessTokens, api: true do expect(response).to have_http_status(200) expect(json_response).to be_an Array - expect(json_response.size).to eq(user.personal_access_tokens.count) + expect(json_response.size).to eq(finder.execute.count) json_personal_access_token = json_response.detect do |personal_access_token| personal_access_token['id'] == active_personal_access_token.id @@ -27,18 +29,24 @@ describe API::PersonalAccessTokens, api: true do end it 'returns an array of active personal access tokens if active is set to true' do + finder.params[:state] = 'active' + get api("/personal_access_tokens?state=active", user) expect(response).to have_http_status(200) expect(json_response).to be_an Array + expect(json_response.size).to eq(finder.execute.count) expect(json_response).to all(include('active' => true)) end it 'returns an array of inactive personal access tokens if active is set to false' do + finder.params[:state] = 'inactive' + get api("/personal_access_tokens?state=inactive", user) expect(response).to have_http_status(200) expect(json_response).to be_an Array + expect(json_response.size).to eq(finder.execute.count) expect(json_response).to all(include('active' => false)) end end @@ -46,7 +54,7 @@ describe API::PersonalAccessTokens, api: true do describe 'POST /personal_access_tokens' do let(:name) { 'my new pat' } let(:expires_at) { '2016-12-28' } - let(:scopes) { ['api', 'read_user'] } + let(:scopes) { %w(api read_user) } it 'returns validation error if personal access token miss some attributes' do post api("/personal_access_tokens", user) @@ -73,7 +81,8 @@ describe API::PersonalAccessTokens, api: true do expect(json_response['active']).to eq(false) expect(json_response['revoked']).to eq(false) expect(json_response['token']).to be_present - expect(PersonalAccessToken.find(personal_access_token_id)).not_to be_nil + expect(json_response['impersonation']).not_to be_present + expect(finder.execute(id: personal_access_token_id)).not_to be_nil end end diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb index f5b6d30b9f6..39c94edd44a 100644 --- a/spec/requests/api/users_spec.rb +++ b/spec/requests/api/users_spec.rb @@ -12,6 +12,7 @@ describe API::Users, api: true do let(:ldap_blocked_user) { create(:omniauth_user, provider: 'ldapmain', state: 'ldap_blocked') } let(:not_existing_user_id) { (User.maximum('id') || 0 ) + 10 } let(:not_existing_pat_id) { (PersonalAccessToken.maximum('id') || 0 ) + 10 } + let(:finder) { PersonalAccessTokensFinder.new(user: user) } describe "GET /users" do context "when unauthenticated" do @@ -1178,41 +1179,60 @@ describe API::Users, api: true do expect(json_response['message']).to eq('403 Forbidden') end - it 'returns an array of non impersonated personal access tokens' do + it 'returns an array of all impersonated and non-impersonated tokens' do get api("/users/#{user.id}/personal_access_tokens", admin) expect(response).to have_http_status(200) + expect(response).to include_pagination_headers expect(json_response).to be_an Array - expect(json_response.size).to eq(user.personal_access_tokens.count) + expect(json_response.size).to eq(finder.execute.count) + end + + it 'returns an array of non impersonated personal access tokens' do + finder.params[:impersonation] = false + + get api("/users/#{user.id}/personal_access_tokens?impersonation=false", admin) + + expect(response).to have_http_status(200) + expect(response).to include_pagination_headers + expect(json_response).to be_an Array + expect(json_response.size).to eq(finder.execute.count) expect(json_response.detect do |personal_access_token| personal_access_token['id'] == active_personal_access_token.id end['token']).to eq(active_personal_access_token.token) end it 'returns an array of active personal access tokens if active is set to true' do - get api("/users/#{user.id}/personal_access_tokens?state=active", admin) + finder.params.merge!(state: 'active', impersonation: false) + + get api("/users/#{user.id}/personal_access_tokens?state=active&impersonation=false", admin) expect(response).to have_http_status(200) + expect(response).to include_pagination_headers expect(json_response).to be_an Array - expect(json_response.size).to eq(user.personal_access_tokens.active.count) + expect(json_response.size).to eq(finder.execute.count) expect(json_response).to all(include('active' => true)) end it 'returns an array of inactive personal access tokens if active is set to false' do - get api("/users/#{user.id}/personal_access_tokens?state=inactive", admin) + finder.params.merge!(state: 'inactive', impersonation: false) + get api("/users/#{user.id}/personal_access_tokens?impersonation=false&state=inactive", admin) expect(response).to have_http_status(200) expect(json_response).to be_an Array - expect(json_response.size).to eq(user.personal_access_tokens.inactive.count) + expect(json_response.size).to eq(finder.execute.count) expect(json_response).to all(include('active' => false)) end it 'returns an array of impersonation personal access tokens if impersonation is set to true' do + finder.params[:impersonation] = true + get api("/users/#{user.id}/personal_access_tokens?impersonation=true", admin) expect(response).to have_http_status(200) + expect(response).to include_pagination_headers expect(json_response).to be_an Array - expect(json_response.size).to eq(user.personal_access_tokens.impersonation.count) + expect(json_response.size).to eq(finder.execute.count) expect(json_response).to all(include('impersonation' => true)) end end @@ -1220,7 +1240,7 @@ describe API::Users, api: true do describe 'POST /users/:id/personal_access_tokens' do let(:name) { 'my new pat' } let(:expires_at) { '2016-12-28' } - let(:scopes) { ['api', 'read_user'] } + let(:scopes) { %w(api read_user) } let(:impersonation) { true } it 'returns validation error if personal access token misses some attributes' do @@ -1265,7 +1285,7 @@ describe API::Users, api: true do expect(json_response['revoked']).to be_falsey expect(json_response['token']).to be_present expect(json_response['impersonation']).to eq(impersonation) - expect(PersonalAccessToken.with_impersonation_tokens.find(json_response['id'])).not_to be_nil + expect(finder.execute(id: json_response['id'])).not_to be_nil end end @@ -1301,19 +1321,6 @@ describe API::Users, api: true do expect(json_response['token']).to be_present expect(json_response['impersonation']).to be_falsey end - - it 'does not return an impersonation token without the specified field' do - get api("/users/#{user.id}/personal_access_tokens/#{impersonation_token.id}", admin) - - expect(response).to have_http_status(404) - end - - it 'returns an impersonation token' do - get api("/users/#{user.id}/personal_access_tokens/#{impersonation_token.id}?impersonation=true", admin) - - expect(response).to have_http_status(200) - expect(json_response['impersonation']).to be_truthy - end end describe 'DELETE /users/:id/personal_access_tokens/:personal_access_token_id' do @@ -1348,21 +1355,5 @@ describe API::Users, api: true do expect(personal_access_token.revoked).to be_falsey expect(personal_access_token.reload.revoked).to be_truthy end - - it 'does not find impersonated token without specified field' do - delete api("/users/#{user.id}/personal_access_tokens/#{impersonation_token.id}", admin) - - expect(response).to have_http_status(404) - expect(impersonation_token.revoked).to be_falsey - expect(impersonation_token.reload.revoked).to be_falsey - end - - it 'revokes an impersonation token' do - delete api("/users/#{user.id}/personal_access_tokens/#{impersonation_token.id}?impersonation=true", admin) - - expect(response).to have_http_status(204) - expect(impersonation_token.revoked).to be_falsey - expect(impersonation_token.reload.revoked).to be_truthy - end end end |