right_hook 0.2.2 → 0.2.3
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.
- data/lib/right_hook/authenticator.rb +11 -1
- data/lib/right_hook/version.rb +1 -1
- data/spec/authenticator_spec.rb +21 -1
- metadata +1 -1
@@ -25,7 +25,7 @@ module RightHook
|
|
25
25
|
# Create a new GitHub authorization with the given note.
|
26
26
|
# If one already exists with that note, it will not create a duplicate.
|
27
27
|
def create_authorization(note)
|
28
|
-
_client.create_authorization(scopes: %w(repo), note: note
|
28
|
+
_client.create_authorization(scopes: %w(repo), note: note).token
|
29
29
|
end
|
30
30
|
|
31
31
|
# Returns an array of all of the authorizations for the authenticated account.
|
@@ -33,6 +33,16 @@ module RightHook
|
|
33
33
|
_client.list_authorizations
|
34
34
|
end
|
35
35
|
|
36
|
+
# If there is already an authorization by this note, use it; otherwise create it
|
37
|
+
def find_or_create_authorization_by_note(note)
|
38
|
+
found_auth = list_authorizations.find {|auth| auth.note == note}
|
39
|
+
if found_auth
|
40
|
+
found_auth.token
|
41
|
+
else
|
42
|
+
create_authorization(note)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
36
46
|
private
|
37
47
|
attr_reader :_client
|
38
48
|
# Enforce use of build methods
|
data/lib/right_hook/version.rb
CHANGED
data/spec/authenticator_spec.rb
CHANGED
@@ -21,7 +21,7 @@ describe RightHook::Authenticator do
|
|
21
21
|
|
22
22
|
describe '#create_authorization' do
|
23
23
|
it 'delegates to create_authorization' do
|
24
|
-
Octokit::Client.any_instance.should_receive(:create_authorization).with(scopes: %w(repo), note: 'test note'
|
24
|
+
Octokit::Client.any_instance.should_receive(:create_authorization).with(scopes: %w(repo), note: 'test note').and_return(OpenStruct.new(token: 'my_token'))
|
25
25
|
|
26
26
|
expect(described_class.build('octocat', 'pass').create_authorization('test note')).to eq('my_token')
|
27
27
|
end
|
@@ -34,4 +34,24 @@ describe RightHook::Authenticator do
|
|
34
34
|
expect(described_class.build('octocat', 'pass').list_authorizations).to eq(:the_authorizations)
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
describe '#find_or_create_authorization_by_note' do
|
39
|
+
let(:auth) { OpenStruct.new(token: 'a token', note: 'the note')}
|
40
|
+
context 'when #list_authorizations has a note that is an exact match' do
|
41
|
+
before { Octokit::Client.any_instance.should_receive(:list_authorizations).and_return([auth]) }
|
42
|
+
it 'returns that authorization' do
|
43
|
+
authenticator = described_class.build('octocat', 'pass')
|
44
|
+
expect(authenticator.find_or_create_authorization_by_note('the note')).to eq('a token')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when #list_authorizations does not have a note that matches' do
|
49
|
+
before { Octokit::Client.any_instance.should_receive(:list_authorizations).and_return([]) }
|
50
|
+
before { Octokit::Client.any_instance.should_receive(:create_authorization).and_return(auth) }
|
51
|
+
it 'creates a new authorization' do
|
52
|
+
authenticator = described_class.build('octocat', 'pass')
|
53
|
+
expect(authenticator.find_or_create_authorization_by_note('the note')).to eq('a token')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
37
57
|
end
|