diff --git a/lib/bitbucket_rest_api.rb b/lib/bitbucket_rest_api.rb index de13095..0b59d5e 100644 --- a/lib/bitbucket_rest_api.rb +++ b/lib/bitbucket_rest_api.rb @@ -77,7 +77,8 @@ def lookup_constant(const_name) :User => 'user', :Users => 'users', :Invitations => 'invitations', - :Teams => 'teams' + :Teams => 'teams', + :Privileges => 'privileges' #:Teams => 'teams', #:PullRequests => 'pull_requests', diff --git a/lib/bitbucket_rest_api/client.rb b/lib/bitbucket_rest_api/client.rb index bd594e0..d61357c 100644 --- a/lib/bitbucket_rest_api/client.rb +++ b/lib/bitbucket_rest_api/client.rb @@ -51,5 +51,9 @@ def user_api(options = {}) def invitations(options = {}) @invitations ||= ApiFactory.new "Invitations", options end + + def privileges(options = {}) + @privileges ||= ApiFactory.new 'Privileges', options + end end # Client end # BitBucket diff --git a/lib/bitbucket_rest_api/privileges.rb b/lib/bitbucket_rest_api/privileges.rb new file mode 100644 index 0000000..a8c5864 --- /dev/null +++ b/lib/bitbucket_rest_api/privileges.rb @@ -0,0 +1,22 @@ +# encoding: utf-8 + +module BitBucket + class Privileges < API + extend AutoloadHelper + + def initialize(options = { }) + super(options) + end + + def repo_list(user_name, repo_name, privilege_account = nil) + _update_user_repo_params(user_name, repo_name) + _validate_user_repo_params(user, repo) unless user? && repo? + + if privilege_account + get_request("/1.0/privileges/#{user_name}/#{repo_name}/#{privilege_account}") + else + get_request("/1.0/privileges/#{user_name}/#{repo_name}") + end + end + end +end diff --git a/spec/bitbucket_rest_api/privileges_spec.rb b/spec/bitbucket_rest_api/privileges_spec.rb new file mode 100644 index 0000000..0426927 --- /dev/null +++ b/spec/bitbucket_rest_api/privileges_spec.rb @@ -0,0 +1,37 @@ +require 'spec_helper' + +describe BitBucket::Privileges do + let(:repo) { BitBucket::Privileges.new } + + describe '.repo_list' do + context 'without privilege_account' do + before do + expect(repo).to receive(:request).with( + :get, + '/1.0/privileges/mock_username/mock_repo', + {}, + {} + ) + end + + it 'should send a GET request for the given repo' do + repo.repo_list('mock_username', 'mock_repo') + end + end + + context 'with privilege_account' do + before do + expect(repo).to receive(:request).with( + :get, + '/1.0/privileges/mock_username/mock_repo/mock_privilege_account', + {}, + {} + ) + end + + it 'should send a GET request for the given repo' do + repo.repo_list('mock_username', 'mock_repo', 'mock_privilege_account') + end + end + end +end