gas 0.1.8 → 1.0.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.
- data/bin/gas +70 -35
- data/bin/gas-add +7 -0
- data/bin/gas-delete +7 -0
- data/bin/gas-import +7 -0
- data/bin/gas-list +6 -0
- data/bin/gas-show +6 -0
- data/bin/gas-use +7 -0
- data/lib/gas.rb +67 -103
- data/lib/gas/git_config.rb +25 -0
- data/lib/gas/user.rb +11 -4
- data/lib/gas/users.rb +110 -0
- data/lib/gas/version.rb +2 -3
- data/spec/integration/gas_spec.rb +118 -0
- data/spec/integration/users_spec.rb +40 -0
- data/spec/spec_helper.rb +10 -141
- data/spec/unit/git_config_spec.rb +82 -0
- data/spec/unit/user_spec.rb +18 -0
- data/spec/unit/users_spec.rb +71 -0
- metadata +23 -112
- data/lib/gas/config.rb +0 -148
- data/lib/gas/gitconfig.rb +0 -46
- data/lib/gas/github_speaker.rb +0 -219
- data/lib/gas/prompter.rb +0 -169
- data/lib/gas/settings.rb +0 -28
- data/lib/gas/ssh.rb +0 -305
- data/spec/integration/ssh_spec.rb +0 -338
- data/spec/unit/config_spec.rb +0 -83
- data/spec/unit/gitconfig_spec.rb +0 -85
- data/spec/unit/github_speaker_spec.rb +0 -107
- data/spec/unit/settings_spec.rb +0 -56
data/spec/unit/config_spec.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
require './spec/spec_helper'
|
2
|
-
|
3
|
-
require './lib/gas'
|
4
|
-
|
5
|
-
describe Gas::Config do
|
6
|
-
|
7
|
-
before :each do
|
8
|
-
@name = 'Fredrik Wallgren'
|
9
|
-
@email = 'fredrik.wallgren@gmail.com'
|
10
|
-
@nickname = 'walle'
|
11
|
-
config = "[#{@nickname}]\n name = #{@name}\n email = #{@email}\n\n[user2]\n name = foo\n email = bar"
|
12
|
-
@config = Gas::Config.new nil, config
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should be able to parse users from config format' do
|
16
|
-
@config.users.count.should be 2
|
17
|
-
@config.users[0].name.should eq @name
|
18
|
-
@config.users[0].email.should eq @email
|
19
|
-
@config.users[0].nickname.should eq @nickname
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should output the users in the correct format' do
|
23
|
-
user1 = Gas::User.new 'Fredrik Wallgren', 'fredrik.wallgren@gmail.com', 'walle'
|
24
|
-
user2 = Gas::User.new 'foo', 'bar', 'user2'
|
25
|
-
users = [user1, user2]
|
26
|
-
config = Gas::Config.new users
|
27
|
-
|
28
|
-
stub(config).is_current_user { false }
|
29
|
-
|
30
|
-
config.to_s.should == " [walle]\n name = Fredrik Wallgren\n email = fredrik.wallgren@gmail.com\n [user2]\n name = foo\n email = bar"
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should be able to tell if a nickname exists' do
|
34
|
-
user1 = Gas::User.new 'Fredrik Wallgren', 'fredrik.wallgren@gmail.com', 'walle'
|
35
|
-
user2 = Gas::User.new 'foo', 'bar', 'user2'
|
36
|
-
users = [user1, user2]
|
37
|
-
config = Gas::Config.new users
|
38
|
-
config.exists?('walle').should be_true
|
39
|
-
config.exists?('foo').should be_false
|
40
|
-
config.exists?('user2').should be_true
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should be able to get a user from a nickname' do
|
44
|
-
user1 = Gas::User.new 'Fredrik Wallgren', 'fredrik.wallgren@gmail.com', 'walle'
|
45
|
-
user2 = Gas::User.new 'foo', 'bar', 'user2'
|
46
|
-
users = [user1, user2]
|
47
|
-
config = Gas::Config.new users
|
48
|
-
config.get('walle').should eq user1
|
49
|
-
config.get('user2').should eq user2
|
50
|
-
config['walle'].should eq user1
|
51
|
-
config['user2'].should eq user2
|
52
|
-
config[:walle].should eq user1
|
53
|
-
config[:user2].should eq user2
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'should be able to add users' do
|
57
|
-
user1 = Gas::User.new 'Fredrik Wallgren', 'fredrik.wallgren@gmail.com', 'walle'
|
58
|
-
user2 = Gas::User.new 'foo', 'bar', 'user2'
|
59
|
-
users = [user1]
|
60
|
-
config = Gas::Config.new users
|
61
|
-
config.users.count.should be 1
|
62
|
-
config.add user2
|
63
|
-
config.users.count.should be 2
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'should be able to delete users by nickname' do
|
67
|
-
user1 = Gas::User.new 'Fredrik Wallgren', 'fredrik.wallgren@gmail.com', 'walle'
|
68
|
-
user2 = Gas::User.new 'foo', 'bar', 'user2'
|
69
|
-
users = [user1, user2]
|
70
|
-
config = Gas::Config.new users
|
71
|
-
config.users.count.should be 2
|
72
|
-
config.delete 'walle'
|
73
|
-
config.users.count.should be 1
|
74
|
-
config.delete 'user2'
|
75
|
-
config.users.count.should be 0
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'should remove the ssh keys from .gas appropriately'
|
79
|
-
|
80
|
-
it 'should remove the keys from .ssh if present'
|
81
|
-
|
82
|
-
end
|
83
|
-
|
data/spec/unit/gitconfig_spec.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
require './spec/spec_helper'
|
2
|
-
|
3
|
-
require './lib/gas'
|
4
|
-
#require './lib/gas/user'
|
5
|
-
|
6
|
-
describe Gas::Gitconfig do
|
7
|
-
|
8
|
-
before :each do
|
9
|
-
@name = 'Fredrik Wallgren'
|
10
|
-
@email = 'fredrik.wallgren@gmail.com'
|
11
|
-
@nickname = 'Fred'
|
12
|
-
@gitconfig = Gas::Gitconfig.new
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should be able to get current user from gitconfig' do
|
16
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.name') { @name + "\n" }
|
17
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.email') { @email + "\n" }
|
18
|
-
|
19
|
-
user = @gitconfig.current_user
|
20
|
-
user.name.should eq @name
|
21
|
-
user.email.should eq @email
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'should return nil if no current user is present in gitconfig' do
|
25
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.name') { nil }
|
26
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.email') { nil }
|
27
|
-
|
28
|
-
@gitconfig.current_user.should be_nil
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
describe "Multiple users" do
|
33
|
-
|
34
|
-
before :each do
|
35
|
-
@user1 = Gas::User.new(@name, @email, @nickname) # create a primary user for testing
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should be able to set the current user" do
|
39
|
-
# setup the cli interrupt things...
|
40
|
-
mock_cli_call(@gitconfig, "git config --global user.name \"#{@user1.name}\"") { nil }
|
41
|
-
mock_cli_call(@gitconfig, "git config --global user.email \"#{@user1.email}\"") { nil }
|
42
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.name') { @user1.name + "\n" }
|
43
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.email') { @user1.email + "\n" }
|
44
|
-
|
45
|
-
@gitconfig.change_user @user1
|
46
|
-
|
47
|
-
user = @gitconfig.current_user
|
48
|
-
user.name.should eq @user1.name
|
49
|
-
user.email.should eq @user1.email
|
50
|
-
user.nickname.should eq @user1.nickname
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should be able to change the current user' do
|
54
|
-
name = 'Test Testsson'
|
55
|
-
email = 'test@testsson.com'
|
56
|
-
nickname = 'test'
|
57
|
-
|
58
|
-
# User 1 cli interrupt things...
|
59
|
-
mock_cli_call(@gitconfig, "git config --global user.name \"#{@name}\"") { nil }
|
60
|
-
mock_cli_call(@gitconfig, "git config --global user.email \"#{@email}\"") { nil }
|
61
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.name') { @name + "\n" }
|
62
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.email') { @email + "\n" }
|
63
|
-
|
64
|
-
@gitconfig.change_user @user1
|
65
|
-
|
66
|
-
user = @gitconfig.current_user
|
67
|
-
user.name.should eq @name
|
68
|
-
user.email.should eq @email # test that the user switch worked (paranoid, huh?)
|
69
|
-
|
70
|
-
# User 2 cli interrupt things...
|
71
|
-
mock_cli_call(@gitconfig, "git config --global user.name \"#{name}\"") { nil }
|
72
|
-
mock_cli_call(@gitconfig, "git config --global user.email \"#{email}\"") { nil }
|
73
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.name') { name + "\n" }
|
74
|
-
mock_cli_call(@gitconfig, 'git config --global --get user.email') { email + "\n" }
|
75
|
-
|
76
|
-
@user2 = Gas::User.new(name, email, nickname) # create user 2
|
77
|
-
@gitconfig.change_user @user2
|
78
|
-
|
79
|
-
user = @gitconfig.current_user
|
80
|
-
user.name.should eq name
|
81
|
-
user.email.should eq email # test that the user changed appropriately
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
require './spec/spec_helper'
|
2
|
-
require './lib/gas'
|
3
|
-
|
4
|
-
|
5
|
-
describe Gas::GithubSpeaker do
|
6
|
-
|
7
|
-
before :each do
|
8
|
-
config = "[#{@nickname}]\n name = #{@name}\n email = #{@email}\n\n[user2]\n name = foo\n email = bar"
|
9
|
-
@config = Gas::Config.new nil, config
|
10
|
-
@user = @config.users[0]
|
11
|
-
|
12
|
-
@username = "aTestGitAccount" # be VERY careful when plugging in your own testing account here...
|
13
|
-
@password = "plzdon'thackthetestaccount1" # It will delete ALL keys associated with that account if you run the tests
|
14
|
-
|
15
|
-
@sample_rsa = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDn74QR9yHb+hcid8iH3+FTaEwnKtwjttseJDbIA2PaivN2uvESrvHlp8Ss/cRox3fFu34QR5DpdOhlfULjTX7yKVuxhaNrAJaqg8rX8hgr9U1Botnyy1DBueEyyA3o1fxRkmwTf6FNnkt1BxWP635tD0lbmUubwaadXjQqPOf3Uw=="
|
16
|
-
|
17
|
-
VCR.use_cassette('instantiate_github_speaker') do
|
18
|
-
@github_speaker = Gas::GithubSpeaker.new(@user, @username, @password)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "test keys" do
|
23
|
-
|
24
|
-
describe "with no keys..." do
|
25
|
-
after :each do
|
26
|
-
delete_all_keys_in_github_account!(@github_speaker)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should post_key! all the way up to github" do
|
30
|
-
initial_length = 'VCR introduces scope =('
|
31
|
-
final_length = ''
|
32
|
-
|
33
|
-
VCR.use_cassette('get_keys-find_none') do
|
34
|
-
initial_length = get_keys(@username, @password).length
|
35
|
-
end
|
36
|
-
|
37
|
-
VCR.use_cassette('githubspeaker-post_key') do # this test has been saved under fixtures/install-delete-a-key.yml
|
38
|
-
@github_speaker.post_key! @sample_rsa
|
39
|
-
end
|
40
|
-
|
41
|
-
VCR.use_cassette('get_keys-find_one') do
|
42
|
-
final_length = get_keys(@username, @password).length
|
43
|
-
end
|
44
|
-
|
45
|
-
(final_length - initial_length).should be(1)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should expose an empty array when no keys..." do
|
49
|
-
VCR.use_cassette('check_keys-empty') do
|
50
|
-
@github_speaker.keys.empty?.should be_true
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should expose a key created..." do
|
55
|
-
VCR.use_cassette('github_speaker-post_key') do
|
56
|
-
@github_speaker.post_key! @sample_rsa
|
57
|
-
end
|
58
|
-
|
59
|
-
@github_speaker.keys.empty?.should be_false
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe "with a key" do
|
64
|
-
before :each do
|
65
|
-
VCR.use_cassette('github_speaker-post_key') do
|
66
|
-
@github_speaker.post_key! @sample_rsa
|
67
|
-
end
|
68
|
-
|
69
|
-
@key_id = @github_speaker.keys.first['id']
|
70
|
-
end
|
71
|
-
|
72
|
-
after :each do
|
73
|
-
delete_all_keys_in_github_account!(@github_speaker)
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should remove_key! from github" do
|
77
|
-
initial_length = ''
|
78
|
-
final_length = ''
|
79
|
-
|
80
|
-
VCR.use_cassette('get_keys-find_one') do
|
81
|
-
initial_length = get_keys(@username, @password).length
|
82
|
-
end
|
83
|
-
|
84
|
-
VCR.use_cassette('githubspeaker-remove_key') do
|
85
|
-
@github_speaker.remove_key! @sample_rsa
|
86
|
-
end
|
87
|
-
|
88
|
-
VCR.use_cassette('get_keys-find_none') do
|
89
|
-
final_length = get_keys(@username, @password).length
|
90
|
-
end
|
91
|
-
|
92
|
-
(final_length - initial_length).should be(-1)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "should remove a key from @keys" do
|
96
|
-
#require 'pry';binding.pry
|
97
|
-
Gas::GithubSpeaker.publicize_methods do
|
98
|
-
@github_speaker.remove_key_from_keys @key_id
|
99
|
-
end
|
100
|
-
|
101
|
-
@github_speaker.keys.empty?.should be_true
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
data/spec/unit/settings_spec.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require './spec/spec_helper'
|
2
|
-
|
3
|
-
require './lib/gas'
|
4
|
-
|
5
|
-
describe Gas::Settings do
|
6
|
-
|
7
|
-
before(:all) do
|
8
|
-
@subject = Gas::Settings.new
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'should respond to base_dir' do
|
12
|
-
@subject.should respond_to :base_dir
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should give default value for base_dir' do
|
16
|
-
@subject.base_dir.should == '~'
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'should respond to gas_dir' do
|
20
|
-
@subject.should respond_to :gas_dir
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should give default value for gas_dir' do
|
24
|
-
@subject.gas_dir.should == "#{@subject.base_dir}/.gas"
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should respond to ssh_dir' do
|
28
|
-
@subject.should respond_to :ssh_dir
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should give default value for ssh_dir' do
|
32
|
-
@subject.ssh_dir.should == "#{@subject.base_dir}/.ssh"
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should respond to github_server' do
|
36
|
-
@subject.should respond_to :github_server
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'should give default value for github_server' do
|
40
|
-
@subject.github_server.should == 'api.github.com'
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should be configurable' do
|
44
|
-
@subject.configure do |s|
|
45
|
-
s.base_dir = 'test'
|
46
|
-
s.gas_dir = 'foo'
|
47
|
-
s.ssh_dir = 'bar'
|
48
|
-
s.github_server = 'foobar'
|
49
|
-
end
|
50
|
-
@subject.base_dir.should eq 'test'
|
51
|
-
@subject.gas_dir.should eq "#{@subject.base_dir}/foo"
|
52
|
-
@subject.ssh_dir.should eq "#{@subject.base_dir}/bar"
|
53
|
-
@subject.github_server.should eq 'foobar'
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|