summaryrefslogtreecommitdiff
path: root/spec/requests/api
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-02-27 18:56:54 +0000
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-03-01 13:11:11 +0000
commit2b474dc2b226460782413e634792cf83e791173b (patch)
treeaa4520aae3d0a1130a3349699a2e0c20f344aa39 /spec/requests/api
parent9f2e4742e354f5548b4956060f1bfa5ee3bd6657 (diff)
downloadgitlab-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.rb15
-rw-r--r--spec/requests/api/users_spec.rb67
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