github-auth 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ed96df336ef90a6312aace8d6c3e2aa33be4bbe
4
- data.tar.gz: ed9ff502f8ff004a45d1026fb4061035932031a0
3
+ metadata.gz: 13910bb7a77151c5be95f4fda4fcd3dde4e2bd67
4
+ data.tar.gz: 3ad56d064832e34b9510745ca8f3514e59e3a0ac
5
5
  SHA512:
6
- metadata.gz: 928de18477f4ab0ed074741d2045594733175fa803bd0240429555012f1ea8ef03884fae4545c6f4208a80960663c618999cb3168b29d5d86034821d4f9a0a30
7
- data.tar.gz: cdcf7345687a26546cff7980bc625721b41db2f7b81af0ced07f5e133007eaa6d372990f4e60e234fcb8715cc45c58196ca743670755fcbedb88d21247f103cf
6
+ metadata.gz: a4a4de892ab9447007bf7ea946502d5f61393676585bb0b03876d25684ac89fe849bd206a80d08345a01f94a62a8027e287377ac3dea77e300e4f4f6f47ab922
7
+ data.tar.gz: b7fe980cc445036dc62c743dd778794f4647fd13432d3912be7ac68ce8a961185c4d41f80515be4e1162b7ceea44609337dad8d043d451c92602b8ec639fabc2
@@ -13,9 +13,12 @@ module Github::Auth
13
13
  end
14
14
 
15
15
  def write!(keys)
16
- append_keys_file do |keys_file|
17
- Array(keys).each do |key|
18
- keys_file.write "\n#{key}" unless keys_file_content.include? key
16
+ Array(keys).each do |key|
17
+ unless keys_file_content.include? key
18
+ append_keys_file do |keys_file|
19
+ keys_file.write "\n" unless keys_file_content.empty?
20
+ keys_file.write key
21
+ end
19
22
  end
20
23
  end
21
24
  end
@@ -36,6 +39,10 @@ module Github::Auth
36
39
  with_keys_file 'w', block
37
40
  end
38
41
 
42
+ def keys_file_content
43
+ with_keys_file 'r', Proc.new { |keys_file| keys_file.read }
44
+ end
45
+
39
46
  def with_keys_file(mode, block)
40
47
  File.open(path, mode) { |keys_file| block.call keys_file }
41
48
  rescue Errno::EACCES => e
@@ -44,10 +51,6 @@ module Github::Auth
44
51
  raise FileDoesNotExistError.new e
45
52
  end
46
53
 
47
- def keys_file_content
48
- File.read path
49
- end
50
-
51
54
  def keys_file_content_without(keys)
52
55
  keys_file_content.tap do |content|
53
56
  Array(keys).each {|k| content.gsub! /#{Regexp.escape k}( .*)?$\n?/, '' }
@@ -1,5 +1,5 @@
1
1
  module Github
2
2
  module Auth
3
- VERSION = "0.5.0"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
@@ -5,7 +5,6 @@ require 'github/auth/keys_file'
5
5
  describe Github::Auth::KeysFile do
6
6
  subject { described_class.new path: path }
7
7
 
8
- let(:keys) { %w(abc123 def456 ghi789) }
9
8
  let(:keys_file) { Tempfile.new 'authorized_keys' }
10
9
  let(:path) { keys_file.path }
11
10
 
@@ -38,39 +37,60 @@ describe Github::Auth::KeysFile do
38
37
  end
39
38
 
40
39
  describe '#write!' do
41
- it 'writes each key to the keys file' do
42
- subject.write! keys
40
+ shared_examples_for 'a successful key addition' do
41
+ it 'writes the key to the keys file' do
42
+ subject.write! keys
43
+
44
+ keys_file.read.tap do |keys_file_content|
45
+ keys.each { |key| expect(keys_file_content).to include key }
46
+ end
47
+ end
43
48
 
44
- keys_file.read.tap do |keys_file_content|
45
- keys.each { |key| expect(keys_file_content).to include key }
49
+ it 'does not leave a blank line' do
50
+ subject.write! keys
51
+
52
+ expect(
53
+ keys_file.readlines.select { |line| line =~ /^$\n/ }
54
+ ).to be_empty
46
55
  end
47
56
  end
48
57
 
58
+ context 'with many keys' do
59
+ let(:keys) { %w(abc123 def456 ghi789) }
60
+
61
+ it_should_behave_like 'a successful key addition'
62
+ end
63
+
49
64
  context 'with a single key' do
50
- let(:key) { 'abc123' }
65
+ let(:keys) { %w(abc123) }
51
66
 
52
- it 'writes the single key to the keys file' do
53
- subject.write! key
54
- expect(keys_file.read).to include key
55
- end
67
+ it_should_behave_like 'a successful key addition'
56
68
  end
57
69
 
58
70
  context 'with existing keys in the keys file' do
59
- let(:existing_keys) { %w(ghi789 jkl123) }
71
+ let(:existing_keys) { %w(abc123 def456 ghi789) }
72
+ let(:keys) { %w(jkl012) }
60
73
 
61
74
  before do
62
75
  keys_file.write existing_keys.join("\n")
63
76
  keys_file.rewind
64
77
  end
65
78
 
79
+ it_should_behave_like 'a successful key addition'
80
+
66
81
  it 'preserves the existing keys' do
67
82
  subject.write! keys
68
- file_lines = keys_file.readlines
69
- existing_keys.each { |key| expect(file_lines).to include "#{key}\n" }
83
+
84
+ keys_file.read.tap do |keys_file_content|
85
+ existing_keys.each do |key|
86
+ expect(keys_file_content).to include "#{key}\n"
87
+ end
88
+ end
70
89
  end
71
90
 
72
91
  it 'does not write duplicate keys into the keys file' do
73
92
  subject.write! existing_keys.first
93
+
74
94
  expect(keys_file.readlines.count).to eq existing_keys.count
75
95
  end
76
96
  end
@@ -80,7 +100,7 @@ describe Github::Auth::KeysFile do
80
100
 
81
101
  it 'raises PermissionDeniedError' do
82
102
  expect {
83
- subject.write! keys
103
+ subject.write! %w(abc123 def456)
84
104
  }.to raise_error Github::Auth::KeysFile::PermissionDeniedError
85
105
  end
86
106
  end
@@ -90,13 +110,15 @@ describe Github::Auth::KeysFile do
90
110
 
91
111
  it 'raises FileDoesNotExistError' do
92
112
  expect {
93
- subject.write! keys
113
+ subject.write! %w(abc123 def456)
94
114
  }.to raise_error Github::Auth::KeysFile::FileDoesNotExistError
95
115
  end
96
116
  end
97
117
  end
98
118
 
99
119
  describe '#delete!' do
120
+ let(:keys) { %w(abc123 def456 ghi789) }
121
+
100
122
  before do
101
123
  keys_file.write keys.join("\n")
102
124
  keys_file.rewind
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hunt