github-auth 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae6c8829c44543ade8a4ee209b00af812e1282d4
4
- data.tar.gz: b01479f59d0ee0626f6b8d53b0d5271b0c8d5115
3
+ metadata.gz: 8ed96df336ef90a6312aace8d6c3e2aa33be4bbe
4
+ data.tar.gz: ed9ff502f8ff004a45d1026fb4061035932031a0
5
5
  SHA512:
6
- metadata.gz: 7292a8368140bce7bac19bc704d0cccc0ddada1dbe3eeeb8603ac93907b1d294fd7facfac30069ff86776e2da31597bd025b1b15d10934ef701004633fa4bdcd
7
- data.tar.gz: f79c42a9d9c078e168111a3ade0ada1362362c167dbaa793c5702ce297a4bcb72d230af3a1f1fbeceb483a318603ba63aa5991b5753a95cf17b11bf81f7c8f48
6
+ metadata.gz: 928de18477f4ab0ed074741d2045594733175fa803bd0240429555012f1ea8ef03884fae4545c6f4208a80960663c618999cb3168b29d5d86034821d4f9a0a30
7
+ data.tar.gz: cdcf7345687a26546cff7980bc625721b41db2f7b81af0ced07f5e133007eaa6d372990f4e60e234fcb8715cc45c58196ca743670755fcbedb88d21247f103cf
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,13 @@
1
+ # Contributing
2
+
3
+ Want to contribute? Awesome! Thank you so much.
4
+
5
+ ## How?
6
+
7
+ 1. [Fork it](https://help.github.com/articles/fork-a-repo)
8
+ 2. Create a feature branch (`git checkout -b my-new-feature`)
9
+ 3. Commit changes, **with tests** (`git commit -am 'Add some feature'`)
10
+ 4. Run the tests (`bundle exec rake`)
11
+ 5. Push to the branch (`git push origin my-new-feature`)
12
+ 6. Create new [Pull
13
+ Request](https://help.github.com/articles/using-pull-requests)
data/README.md CHANGED
@@ -46,10 +46,33 @@ Removing 2 key(s) from '/Users/chris/.ssh/authorized_keys'
46
46
 
47
47
  ## Usage
48
48
 
49
+ ### Command Line
50
+
51
+ `gh-auth` can be used from the command line after the gem has been installed.
52
+
49
53
  ```bash
50
54
  usage: gh-auth [--version] [add|remove] <username>
51
55
  ```
52
56
 
57
+ ### In You Project
58
+
59
+ Want to add/remove keys in your project, but not on the command line? That's ok
60
+ too.
61
+
62
+ ```ruby
63
+ require 'github/auth'
64
+
65
+ # Add keys for GitHub user 'chrishunt'
66
+ Github::Auth::CLI.new(%w(
67
+ add chrishunt
68
+ )).execute
69
+
70
+ # Remove keys for GitHub user 'chrishunt'
71
+ Github::Auth::CLI.new(%w(
72
+ remove chrishunt
73
+ )).execute
74
+ ```
75
+
53
76
  ## Installation
54
77
 
55
78
  Install the `github-auth` gem:
@@ -176,10 +199,5 @@ If this isn't possible, then you can use a VPS provider like
176
199
  [Linode](http://www.linode.com) to setup a pairing machine in the cloud.
177
200
 
178
201
  ## Contributing
179
-
180
- 1. Fork it
181
- 2. Create your feature branch (`git checkout -b my-new-feature`)
182
- 3. Commit your changes, with tests (`git commit -am 'Add some feature'`)
183
- 4. Run the tests (`bundle exec rake spec`)
184
- 5. Push to the branch (`git push origin my-new-feature`)
185
- 6. Create new Pull Request
202
+ Please see the [Contributing
203
+ Document](https://github.com/chrishunt/github-auth/blob/master/CONTRIBUTING.md)
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
3
  require 'cane/rake_task'
4
+ require 'cane/hashcheck'
4
5
 
5
6
  desc 'Run all tests'
6
7
  RSpec::Core::RakeTask.new(:spec) do |task|
@@ -10,6 +11,7 @@ end
10
11
  desc 'Check code quality'
11
12
  Cane::RakeTask.new(:quality) do |task|
12
13
  task.abc_max = 9
14
+ task.use Cane::HashCheck
13
15
  end
14
16
 
15
17
  task default: :spec
data/github-auth.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'rspec'
24
24
  spec.add_development_dependency 'cane'
25
+ spec.add_development_dependency 'cane-hashcheck'
25
26
  spec.add_development_dependency 'coveralls'
26
27
  spec.add_development_dependency 'sinatra'
27
28
  spec.add_development_dependency 'thin'
@@ -50,7 +50,7 @@ module Github::Auth
50
50
 
51
51
  def keys_file_content_without(keys)
52
52
  keys_file_content.tap do |content|
53
- Array(keys).each { |k| content.gsub! /#{Regexp.escape(k)}( .*)?/, '' }
53
+ Array(keys).each {|k| content.gsub! /#{Regexp.escape k}( .*)?$\n?/, '' }
54
54
  content.strip!
55
55
  end
56
56
  end
@@ -1,5 +1,5 @@
1
1
  module Github
2
2
  module Auth
3
- VERSION = "0.4.1"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
@@ -5,7 +5,7 @@ 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) }
8
+ let(:keys) { %w(abc123 def456 ghi789) }
9
9
  let(:keys_file) { Tempfile.new 'authorized_keys' }
10
10
  let(:path) { keys_file.path }
11
11
 
@@ -40,8 +40,10 @@ describe Github::Auth::KeysFile do
40
40
  describe '#write!' do
41
41
  it 'writes each key to the keys file' do
42
42
  subject.write! keys
43
- file_content = keys_file.read
44
- keys.each { |key| expect(file_content).to include key }
43
+
44
+ keys_file.read.tap do |keys_file_content|
45
+ keys.each { |key| expect(keys_file_content).to include key }
46
+ end
45
47
  end
46
48
 
47
49
  context 'with a single key' do
@@ -100,60 +102,75 @@ describe Github::Auth::KeysFile do
100
102
  keys_file.rewind
101
103
  end
102
104
 
103
- context 'when the keys file has the key' do
104
- let(:key) { keys[0] }
105
- let(:other_key) { keys[1] }
106
-
105
+ shared_examples_for 'a successful key removal' do
107
106
  it 'removes the key from the keys file' do
108
107
  subject.delete! key
108
+
109
109
  expect(keys_file.read).to_not include key
110
110
  end
111
111
 
112
- it 'does not remove the other key from the keys file' do
112
+ it 'does not remove the other keys from the keys file' do
113
113
  subject.delete! key
114
- expect(keys_file.read).to include other_key
114
+
115
+ keys_file.read.tap do |keys_file_content|
116
+ keys.reject { |other_key| other_key =~ /#{key}/ }.each do |key|
117
+ expect(keys_file_content).to include key
118
+ end
119
+ end
115
120
  end
116
121
 
117
- it 'does not leave blank lines' do
118
- subject.delete! [key, other_key]
119
- blank_lines = keys_file.readlines.select { |line| line =~ /^$\n/ }
122
+ it 'does not leave a blank line' do
123
+ subject.delete! key
120
124
 
121
- expect(blank_lines).to be_empty
125
+ expect(
126
+ keys_file.readlines.select { |line| line =~ /^$\n/ }
127
+ ).to be_empty
122
128
  end
123
129
  end
124
130
 
125
- context 'when the keys file does not have the key' do
126
- let(:key) { 'not-in-the-keys-file' }
131
+ context 'when the key is at the beginning of the keys file' do
132
+ let(:key) { keys.first }
127
133
 
128
- it 'does not modify the keys file' do
129
- original_keys_file = keys_file.read
130
- keys_file.rewind
134
+ it_should_behave_like 'a successful key removal'
135
+ end
131
136
 
132
- subject.delete! key
137
+ context 'when the key is in the middle of the keys file' do
138
+ let(:key) { keys[1] }
133
139
 
134
- expect(keys_file.read).to eq original_keys_file
135
- end
140
+ it_should_behave_like 'a successful key removal'
141
+ end
142
+
143
+ context 'when the key is at the end of the keys file' do
144
+ let(:key) { keys.last }
145
+
146
+ it_should_behave_like 'a successful key removal'
136
147
  end
137
148
 
138
149
  context 'when the key has a comment' do
139
- let(:key) { 'WW6dx9mW/paKl9pznYypl+X617WHP' }
150
+ let(:keys) {[ 'abc123', "#{key} #{comment}", 'ghi789' ]}
151
+ let(:key) { 'def456' }
140
152
  let(:comment) { 'this is a comment' }
141
- let(:keys) { ["#{key} #{comment}", 'def456'] }
142
- let(:other_key) { keys[1] }
143
153
 
144
- it 'removes the key from the keys file' do
145
- subject.delete! key
146
- expect(keys_file.read).to_not include key
147
- end
154
+ it_should_behave_like 'a successful key removal'
148
155
 
149
156
  it 'removes the comment from the keys file' do
150
157
  subject.delete! key
158
+
151
159
  expect(keys_file.read).to_not include comment
152
160
  end
161
+ end
153
162
 
154
- it 'does not remove the other key from the keys file' do
155
- subject.delete! key
156
- expect(keys_file.read).to include other_key
163
+ context 'when the keys file does not have the key' do
164
+ let(:key) { 'not-in-the-keys-file' }
165
+
166
+ it 'does not modify the keys file' do
167
+ keys_file.read.tap do |original_keys_file_content|
168
+ keys_file.rewind
169
+
170
+ subject.delete! key
171
+
172
+ expect(keys_file.read).to eq original_keys_file_content
173
+ end
157
174
  end
158
175
  end
159
176
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-28 00:00:00.000000000 Z
11
+ date: 2013-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: cane-hashcheck
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: coveralls
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +146,7 @@ extra_rdoc_files: []
132
146
  files:
133
147
  - .gitignore
134
148
  - .travis.yml
149
+ - CONTRIBUTING.md
135
150
  - Gemfile
136
151
  - LICENSE.txt
137
152
  - README.md