bitbucket_rest_api2 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +7 -0
- data/README.md +169 -0
- data/lib/bitbucket_rest_api.rb +90 -0
- data/lib/bitbucket_rest_api/api.rb +106 -0
- data/lib/bitbucket_rest_api/api/actions.rb +35 -0
- data/lib/bitbucket_rest_api/api_factory.rb +30 -0
- data/lib/bitbucket_rest_api/authorization.rb +34 -0
- data/lib/bitbucket_rest_api/client.rb +56 -0
- data/lib/bitbucket_rest_api/configuration.rb +106 -0
- data/lib/bitbucket_rest_api/connection.rb +98 -0
- data/lib/bitbucket_rest_api/constants.rb +58 -0
- data/lib/bitbucket_rest_api/core_ext/array.rb +7 -0
- data/lib/bitbucket_rest_api/core_ext/hash.rb +46 -0
- data/lib/bitbucket_rest_api/deprecation.rb +39 -0
- data/lib/bitbucket_rest_api/error.rb +38 -0
- data/lib/bitbucket_rest_api/error/bad_events.rb +9 -0
- data/lib/bitbucket_rest_api/error/bad_request.rb +12 -0
- data/lib/bitbucket_rest_api/error/blank_value.rb +9 -0
- data/lib/bitbucket_rest_api/error/client_error.rb +20 -0
- data/lib/bitbucket_rest_api/error/forbidden.rb +12 -0
- data/lib/bitbucket_rest_api/error/internal_server_error.rb +12 -0
- data/lib/bitbucket_rest_api/error/invalid_options.rb +18 -0
- data/lib/bitbucket_rest_api/error/no_events.rb +9 -0
- data/lib/bitbucket_rest_api/error/not_found.rb +12 -0
- data/lib/bitbucket_rest_api/error/required_params.rb +18 -0
- data/lib/bitbucket_rest_api/error/service_error.rb +19 -0
- data/lib/bitbucket_rest_api/error/service_unavailable.rb +12 -0
- data/lib/bitbucket_rest_api/error/unauthorized.rb +12 -0
- data/lib/bitbucket_rest_api/error/unknown_value.rb +18 -0
- data/lib/bitbucket_rest_api/error/unprocessable_entity.rb +12 -0
- data/lib/bitbucket_rest_api/error/validations.rb +18 -0
- data/lib/bitbucket_rest_api/invitations.rb +15 -0
- data/lib/bitbucket_rest_api/issues.rb +230 -0
- data/lib/bitbucket_rest_api/issues/comments.rb +118 -0
- data/lib/bitbucket_rest_api/issues/components.rb +106 -0
- data/lib/bitbucket_rest_api/issues/milestones.rb +107 -0
- data/lib/bitbucket_rest_api/normalizer.rb +27 -0
- data/lib/bitbucket_rest_api/parameter_filter.rb +32 -0
- data/lib/bitbucket_rest_api/repos.rb +264 -0
- data/lib/bitbucket_rest_api/repos/changesets.rb +54 -0
- data/lib/bitbucket_rest_api/repos/commits.rb +40 -0
- data/lib/bitbucket_rest_api/repos/default_reviewers.rb +59 -0
- data/lib/bitbucket_rest_api/repos/download.rb +21 -0
- data/lib/bitbucket_rest_api/repos/following.rb +39 -0
- data/lib/bitbucket_rest_api/repos/forks.rb +69 -0
- data/lib/bitbucket_rest_api/repos/keys.rb +87 -0
- data/lib/bitbucket_rest_api/repos/pull_request.rb +160 -0
- data/lib/bitbucket_rest_api/repos/services.rb +103 -0
- data/lib/bitbucket_rest_api/repos/sources.rb +39 -0
- data/lib/bitbucket_rest_api/repos/webhooks.rb +96 -0
- data/lib/bitbucket_rest_api/request.rb +76 -0
- data/lib/bitbucket_rest_api/request/basic_auth.rb +31 -0
- data/lib/bitbucket_rest_api/request/jsonize.rb +46 -0
- data/lib/bitbucket_rest_api/request/oauth.rb +53 -0
- data/lib/bitbucket_rest_api/response.rb +28 -0
- data/lib/bitbucket_rest_api/response/helpers.rb +21 -0
- data/lib/bitbucket_rest_api/response/jsonize.rb +30 -0
- data/lib/bitbucket_rest_api/response/mashify.rb +24 -0
- data/lib/bitbucket_rest_api/response/raise_error.rb +31 -0
- data/lib/bitbucket_rest_api/response/xmlize.rb +26 -0
- data/lib/bitbucket_rest_api/result.rb +140 -0
- data/lib/bitbucket_rest_api/user.rb +101 -0
- data/lib/bitbucket_rest_api/users.rb +24 -0
- data/lib/bitbucket_rest_api/users/account.rb +53 -0
- data/lib/bitbucket_rest_api/utils/url.rb +56 -0
- data/lib/bitbucket_rest_api/validations.rb +25 -0
- data/lib/bitbucket_rest_api/validations/format.rb +24 -0
- data/lib/bitbucket_rest_api/validations/presence.rb +25 -0
- data/lib/bitbucket_rest_api/validations/required.rb +44 -0
- data/lib/bitbucket_rest_api/validations/token.rb +43 -0
- data/lib/bitbucket_rest_api/version.rb +11 -0
- data/spec/bitbucket_rest_api/api/actions_spec.rb +17 -0
- data/spec/bitbucket_rest_api/api_factory_spec.rb +30 -0
- data/spec/bitbucket_rest_api/api_spec.rb +86 -0
- data/spec/bitbucket_rest_api/authorization_spec.rb +72 -0
- data/spec/bitbucket_rest_api/client_spec.rb +15 -0
- data/spec/bitbucket_rest_api/core_ext/array_spec.rb +12 -0
- data/spec/bitbucket_rest_api/core_ext/hash_spec.rb +49 -0
- data/spec/bitbucket_rest_api/deprecation_spec.rb +30 -0
- data/spec/bitbucket_rest_api/error/bad_events_spec.rb +10 -0
- data/spec/bitbucket_rest_api/error/blank_value_spec.rb +13 -0
- data/spec/bitbucket_rest_api/error/no_events_spec.rb +10 -0
- data/spec/bitbucket_rest_api/invitations_spec.rb +21 -0
- data/spec/bitbucket_rest_api/issues/comments_spec.rb +89 -0
- data/spec/bitbucket_rest_api/issues/components_spec.rb +88 -0
- data/spec/bitbucket_rest_api/issues/milestones_spec.rb +88 -0
- data/spec/bitbucket_rest_api/issues_spec.rb +90 -0
- data/spec/bitbucket_rest_api/normalizer_spec.rb +30 -0
- data/spec/bitbucket_rest_api/parameter_filter_spec.rb +41 -0
- data/spec/bitbucket_rest_api/repos/changesets_spec.rb +43 -0
- data/spec/bitbucket_rest_api/repos/commits_spec.rb +20 -0
- data/spec/bitbucket_rest_api/repos/default_reviewers_spec.rb +64 -0
- data/spec/bitbucket_rest_api/repos/download_spec.rb +9 -0
- data/spec/bitbucket_rest_api/repos/following_spec.rb +52 -0
- data/spec/bitbucket_rest_api/repos/forks_spec.rb +45 -0
- data/spec/bitbucket_rest_api/repos/keys_spec.rb +72 -0
- data/spec/bitbucket_rest_api/repos/pull_request_spec.rb +288 -0
- data/spec/bitbucket_rest_api/repos/sources_spec.rb +77 -0
- data/spec/bitbucket_rest_api/repos/webhooks_spec.rb +245 -0
- data/spec/bitbucket_rest_api/repos_spec.rb +157 -0
- data/spec/bitbucket_rest_api/request/jsonize_spec.rb +18 -0
- data/spec/bitbucket_rest_api/request/oauth_spec.rb +27 -0
- data/spec/bitbucket_rest_api/request_spec.rb +81 -0
- data/spec/bitbucket_rest_api/response/jsonize_spec.rb +12 -0
- data/spec/bitbucket_rest_api/response/mashify_spec.rb +32 -0
- data/spec/bitbucket_rest_api/response/raise_error_spec.rb +41 -0
- data/spec/bitbucket_rest_api/user_spec.rb +77 -0
- data/spec/bitbucket_rest_api/utils/url_spec.rb +33 -0
- data/spec/bitbucket_rest_api/validations/format_spec.rb +29 -0
- data/spec/bitbucket_rest_api/validations/presence_spec.rb +12 -0
- data/spec/bitbucket_rest_api/validations/required_spec.rb +43 -0
- data/spec/bitbucket_rest_api/validations/token_spec.rb +16 -0
- data/spec/bitbucket_rest_api_spec.rb +17 -0
- data/spec/spec_helper.rb +24 -0
- metadata +373 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
3
|
+
module BitBucket
|
4
|
+
module Utils
|
5
|
+
module Url
|
6
|
+
extend self
|
7
|
+
|
8
|
+
DEFAULT_QUERY_SEP = /[&;] */n
|
9
|
+
|
10
|
+
KEY_VALUE_SEP = '='.freeze
|
11
|
+
|
12
|
+
def escape(s) CGI.escape s.to_s end
|
13
|
+
|
14
|
+
def unescape(s) CGI.unescape s.to_s end
|
15
|
+
|
16
|
+
def build_query(params)
|
17
|
+
params.map { |k, v|
|
18
|
+
if v.class == Array
|
19
|
+
build_query(v.map { |x| [k, x] })
|
20
|
+
else
|
21
|
+
v.nil? ? escape(k) : "#{escape(k)}=#{escape(v)}"
|
22
|
+
end
|
23
|
+
}.join("&")
|
24
|
+
end
|
25
|
+
|
26
|
+
def parse_query(query_string)
|
27
|
+
return '' if query_string.nil? || query_string.empty?
|
28
|
+
params = {}
|
29
|
+
|
30
|
+
query_string.split(DEFAULT_QUERY_SEP).each do |part|
|
31
|
+
k, v = part.split(KEY_VALUE_SEP, 2).map { |el| unescape(el) }
|
32
|
+
|
33
|
+
if cur = params[k]
|
34
|
+
if cur.class == Array
|
35
|
+
params[k] << v
|
36
|
+
else
|
37
|
+
params[k] = [cur, v]
|
38
|
+
end
|
39
|
+
else
|
40
|
+
params[k] = v
|
41
|
+
end
|
42
|
+
end
|
43
|
+
params
|
44
|
+
end
|
45
|
+
|
46
|
+
def parse_query_for_param(query_string, name)
|
47
|
+
parse_query(query_string).each do |key, val|
|
48
|
+
return val.first if (name == key) && val.is_a?(Array)
|
49
|
+
return val if (name == key)
|
50
|
+
end
|
51
|
+
return nil
|
52
|
+
end
|
53
|
+
|
54
|
+
end # Url
|
55
|
+
end # Utils
|
56
|
+
end # BitBucket
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module BitBucket
|
4
|
+
module Validations
|
5
|
+
extend AutoloadHelper
|
6
|
+
|
7
|
+
autoload_all 'bitbucket_rest_api/validations',
|
8
|
+
:Presence => 'presence',
|
9
|
+
:Token => 'token',
|
10
|
+
:Format => 'format',
|
11
|
+
:Required => 'required'
|
12
|
+
|
13
|
+
include Presence
|
14
|
+
include Format
|
15
|
+
include Token
|
16
|
+
include Required
|
17
|
+
|
18
|
+
VALID_API_KEYS = [
|
19
|
+
'page',
|
20
|
+
'per_page',
|
21
|
+
'jsonp_callback'
|
22
|
+
]
|
23
|
+
|
24
|
+
end # Validation
|
25
|
+
end # BitBucket
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module BitBucket
|
4
|
+
module Validations
|
5
|
+
module Format
|
6
|
+
|
7
|
+
# Ensures that value for a given key is of the correct form whether
|
8
|
+
# matching regular expression or set of predefined values.
|
9
|
+
#
|
10
|
+
def assert_valid_values(permitted, params)
|
11
|
+
params.each do |k, v|
|
12
|
+
next unless permitted.keys.include?(k)
|
13
|
+
if permitted[k].is_a?(Array) && !permitted[k].include?(params[k])
|
14
|
+
raise BitBucket::Error::UnknownValue.new(k,v, permitted[k].join(', '))
|
15
|
+
|
16
|
+
elsif permitted[k].is_a?(Regexp) && !(permitted[k] =~ params[k])
|
17
|
+
raise BitBucket::Error::UnknownValue.new(k,v, permitted[k])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end # Format
|
23
|
+
end # Validations
|
24
|
+
end # BitBucket
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module BitBucket
|
4
|
+
module Validations
|
5
|
+
module Presence
|
6
|
+
|
7
|
+
# Ensures that essential arguments are present before request is made
|
8
|
+
#
|
9
|
+
def _validate_presence_of(*params)
|
10
|
+
params.each do |param|
|
11
|
+
raise ArgumentError, "parameter cannot be nil" if param.nil?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
# Check if user or repository parameters are passed
|
17
|
+
#
|
18
|
+
def _validate_user_repo_params(user_name, repo_name)
|
19
|
+
raise ArgumentError, "[user] parameter cannot be nil" if user_name.nil?
|
20
|
+
raise ArgumentError, "[repo] parameter cannot be nil" if repo_name.nil?
|
21
|
+
end
|
22
|
+
|
23
|
+
end # Presence
|
24
|
+
end # Validations
|
25
|
+
end # BitBucket
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module BitBucket
|
4
|
+
module Validations
|
5
|
+
module Required
|
6
|
+
|
7
|
+
# Validate all keys present in a provided hash against required set,
|
8
|
+
# on mismatch raise BitBucket::Error::RequiredParams
|
9
|
+
# Note that keys need to be in the same format i.e. symbols or strings,
|
10
|
+
# otherwise the comparison will fail.
|
11
|
+
#
|
12
|
+
def assert_required_keys(required, provided)
|
13
|
+
result = required.all? do |key|
|
14
|
+
provided.has_deep_key? key
|
15
|
+
end
|
16
|
+
if !result
|
17
|
+
raise BitBucket::Error::RequiredParams.new(provided, required)
|
18
|
+
end
|
19
|
+
result
|
20
|
+
end
|
21
|
+
|
22
|
+
# Validate that required values are not blank
|
23
|
+
# the *required are colon separated strings
|
24
|
+
# e.g. 'source:branch:name' tests value of params[:source][:branch][:name]
|
25
|
+
#
|
26
|
+
def assert_required_values_present(params, *required)
|
27
|
+
required.each do |encoded_string|
|
28
|
+
keys = parse_values(encoded_string)
|
29
|
+
value = keys.inject(params) { |params, key| params[key] }
|
30
|
+
if value.is_a?(String)
|
31
|
+
if value.empty?
|
32
|
+
raise BitBucket::Error::BlankValue.new(encoded_string)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def parse_values(string)
|
39
|
+
string.split(':')
|
40
|
+
end
|
41
|
+
|
42
|
+
end # Required
|
43
|
+
end # Validations
|
44
|
+
end # BitBucket
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# TODO: Set token required calls
|
4
|
+
|
5
|
+
module BitBucket
|
6
|
+
module Validations
|
7
|
+
module Token
|
8
|
+
|
9
|
+
TOKEN_REQUIRED = [
|
10
|
+
'get /user',
|
11
|
+
'get /user/emails',
|
12
|
+
'get /user/followers',
|
13
|
+
'get /user/following',
|
14
|
+
'get /user/keys',
|
15
|
+
'get /user/repos',
|
16
|
+
'patch /user',
|
17
|
+
'post /user/emails',
|
18
|
+
'post /user/keys',
|
19
|
+
'post /user/repos'
|
20
|
+
]
|
21
|
+
|
22
|
+
TOKEN_REQUIRED_REGEXP = [
|
23
|
+
/repos\/.*\/.*\/comments/,
|
24
|
+
]
|
25
|
+
|
26
|
+
# Ensures that required authentication token is present before
|
27
|
+
# request is sent.
|
28
|
+
#
|
29
|
+
def validates_token_for(method, path)
|
30
|
+
return true unless TOKEN_REQUIRED.grep("#{method} #{path}").empty?
|
31
|
+
|
32
|
+
token_required = false
|
33
|
+
TOKEN_REQUIRED_REGEXP.each do |regex|
|
34
|
+
if "#{method} #{path}" =~ regex
|
35
|
+
token_required = true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
return token_required
|
39
|
+
end
|
40
|
+
|
41
|
+
end # Token
|
42
|
+
end # Validations
|
43
|
+
end # BitBucket
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::API, '#actions' do
|
4
|
+
let(:api) { BitBucket::Repos::Keys }
|
5
|
+
|
6
|
+
context 'when class' do
|
7
|
+
it "lists all available actions for an api" do
|
8
|
+
expect(api.actions).to match_array([:actions, :all, :create, :delete, :edit, :list])
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'when instance' do
|
13
|
+
it "lists all available actions for an api" do
|
14
|
+
expect(api.new.actions).to match_array([:actions, :all, :create, :delete, :edit, :list])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe BitBucket::ApiFactory do
|
6
|
+
|
7
|
+
subject(:factory) { described_class }
|
8
|
+
|
9
|
+
context '#new' do
|
10
|
+
it 'throws error if klass type is ommitted' do
|
11
|
+
expect { factory.new nil }.to raise_error(ArgumentError)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'instantiates a new object' do
|
15
|
+
expect(factory.new('Issues')).to be_a BitBucket::Issues
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context '#create_instance' do
|
20
|
+
it 'creates class instance' do
|
21
|
+
expect(factory.create_instance('User', {})).to be_kind_of(BitBucket::User)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context '#convert_to_constant' do
|
26
|
+
it 'knows how to convert nested classes' do
|
27
|
+
expect(factory.convert_to_constant('Repos::Changesets')).to eql(BitBucket::Repos::Changesets)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end # BitBucket::ApiFactory
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::API do
|
4
|
+
let(:setup_options) { { user: 'test_user' } }
|
5
|
+
let(:bitbucket_api) { described_class.new(setup_options) }
|
6
|
+
after do
|
7
|
+
[:user, :login, :password].each do |key|
|
8
|
+
bitbucket_api.send "clear_#{key}".to_sym
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#new' do
|
13
|
+
it 'passes options to bitbucket' do
|
14
|
+
described_class.new(setup_options)
|
15
|
+
|
16
|
+
expect(bitbucket_api.user).to eq(setup_options[:user])
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'valid options' do
|
20
|
+
it 'sets valid options' do
|
21
|
+
setup_options = {
|
22
|
+
login: 'johnwick',
|
23
|
+
password: 'password'
|
24
|
+
}
|
25
|
+
bitbucket_api = described_class.new(setup_options)
|
26
|
+
|
27
|
+
expect(bitbucket_api.login).to eq('johnwick')
|
28
|
+
expect(bitbucket_api.password).to eq('password')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'ignores invalid options' do
|
32
|
+
setup_options = {
|
33
|
+
invalid_option: 'invalid option'
|
34
|
+
}
|
35
|
+
|
36
|
+
bitbucket_api = described_class.new(setup_options)
|
37
|
+
|
38
|
+
expect{ bitbucket_api.invalid_option }.to raise_error(NoMethodError)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#method_missing' do
|
44
|
+
let(:setup_options) { { user: 'test_user' } }
|
45
|
+
|
46
|
+
it 'responds to attribute query' do
|
47
|
+
expect(bitbucket_api.user?).to eq(true)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'clears the attributes' do
|
51
|
+
bitbucket_api.clear_user
|
52
|
+
|
53
|
+
expect(bitbucket_api.user).to be_nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#_update_user_repo_params' do
|
58
|
+
it 'sets the username and repo_name' do
|
59
|
+
bitbucket_api._update_user_repo_params('test_user1', 'test_repo')
|
60
|
+
|
61
|
+
expect(bitbucket_api.user).to eq('test_user1')
|
62
|
+
expect(bitbucket_api.repo).to eq('test_repo')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#_merge_user_into_params!' do
|
67
|
+
let(:params) { {} }
|
68
|
+
|
69
|
+
it 'takes a hash and merges user into it' do
|
70
|
+
bitbucket_api._merge_user_into_params!(params)
|
71
|
+
|
72
|
+
expect(params).to include('user')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#_merge_user_repo_into_params!' do
|
77
|
+
let(:params) { {} }
|
78
|
+
|
79
|
+
it 'takes a hash and merges user into it' do
|
80
|
+
new_params = bitbucket_api._merge_user_repo_into_params!(params)
|
81
|
+
|
82
|
+
expect(new_params).to include('user')
|
83
|
+
expect(new_params).to include('repo')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitBucket::Authorization do
|
4
|
+
let(:oauth_api) { BitBucket::API.new(oauth_token: 'example_oauth_token') }
|
5
|
+
let(:basic_auth_api) { BitBucket::API.new(basic_auth: 'example_login:example_password') }
|
6
|
+
let(:basic_auth_api_hash) do
|
7
|
+
BitBucket::API.new(
|
8
|
+
basic_auth: { login: 'example_login', password: 'example_password' })
|
9
|
+
end
|
10
|
+
let(:login_and_password_api) do
|
11
|
+
BitBucket::API.new(
|
12
|
+
login: 'example_login',
|
13
|
+
password: 'example_password',
|
14
|
+
basic_auth: nil
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#authenticated?' do
|
19
|
+
context 'oauth authentication' do
|
20
|
+
it 'should return true if oauth is used' do
|
21
|
+
expect(oauth_api.authenticated?).to eq(true)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'basic authentication' do
|
26
|
+
it 'should return true if basic authentication is used' do
|
27
|
+
expect(basic_auth_api.authenticated?).to eq(true)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#basic_authed?' do
|
33
|
+
context 'with basic_auth' do
|
34
|
+
it 'should return true if basic_auth is set' do
|
35
|
+
expect(basic_auth_api.basic_authed?).to eq(true)
|
36
|
+
expect(basic_auth_api_hash.basic_authed?).to eq(true)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'with login and password' do
|
41
|
+
it 'should return true if a login and password are set' do
|
42
|
+
expect(login_and_password_api.basic_authed?).to eq(true)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#authentication' do
|
48
|
+
context 'with basic_auth as a string' do
|
49
|
+
it 'should return a hash containing the value for :basic_auth' do
|
50
|
+
expectation = { basic_auth: 'example_login:example_password' }
|
51
|
+
|
52
|
+
expect(basic_auth_api.authentication).to eq(expectation)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'with basic_auth as a hash' do
|
57
|
+
it 'should return a hash containing the value for :basic_auth' do
|
58
|
+
expectation = { basic_auth: { login: 'example_login', password: 'example_password'} }
|
59
|
+
|
60
|
+
expect(basic_auth_api_hash.authentication).to eq(expectation)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'with login and password' do
|
65
|
+
it 'should return a hash containing values for :login and :password' do
|
66
|
+
expectation = { login: 'example_login', password: 'example_password' }
|
67
|
+
|
68
|
+
expect(login_and_password_api.authentication).to eq(expectation)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|