lita-digitalocean 0.0.1 → 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.
@@ -0,0 +1,44 @@
1
+ require "spec_helper"
2
+
3
+ describe Lita::Handlers::Digitalocean::Size, lita_handler: true do
4
+ it { routes_command("do sizes list").to(:list) }
5
+
6
+ let(:client) { instance_double( "::DigitalOcean::API", sizes: client_sizes) }
7
+ let(:client_sizes) { instance_double("::DigitalOcean::Resource::Size") }
8
+
9
+ before do
10
+ Lita.config.handlers.digitalocean = Lita::Config.new
11
+ Lita.config.handlers.digitalocean.tap do |config|
12
+ config.client_id = "CLIENT_ID"
13
+ config.api_key = "API_KEY"
14
+ end
15
+
16
+ allow(Lita::Authorization).to receive(:user_in_group?).with(
17
+ user,
18
+ :digitalocean_admins
19
+ ).and_return(true)
20
+
21
+ allow(::DigitalOcean::API).to receive(:new).and_return(client)
22
+ end
23
+
24
+ let(:do_sizes) do
25
+ {
26
+ status: "OK",
27
+ sizes: [
28
+ { id: 33, name: "512MB", slug: "512mb" },
29
+ { id: 34, name: "1GB", slug: "1gb" }
30
+ ]
31
+ }
32
+ end
33
+
34
+ describe "#list" do
35
+ it "responds with a list of all sizes" do
36
+ allow(client_sizes).to receive(:list).and_return(do_sizes)
37
+ send_command("do sizes list")
38
+ expect(replies).to eq([
39
+ 'ID: 33, Name: 512MB, Slug: 512mb',
40
+ 'ID: 34, Name: 1GB, Slug: 1gb'
41
+ ])
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,119 @@
1
+ require "spec_helper"
2
+
3
+ describe Lita::Handlers::Digitalocean::SSHKey, lita_handler: true do
4
+ it { routes_command("do ssh keys add 'foo bar' 'ssh-rsa abcdefg'").to(:add) }
5
+ it { routes_command("do ssh keys delete 123").to(:delete) }
6
+ it do
7
+ routes_command(
8
+ "do ssh keys edit 123 --name foo --public-key 'ssh-rsa changed'"
9
+ ).to(:edit)
10
+ end
11
+ it { routes_command("do ssh keys list").to(:list) }
12
+ it { routes_command("do ssh keys show 123").to(:show) }
13
+
14
+ let(:client) { instance_double("::DigitalOcean::API", ssh_keys: client_ssh_keys) }
15
+ let(:client_ssh_keys) { instance_double("::DigitalOcean::Resource::SSHKey") }
16
+
17
+ before do
18
+ Lita.config.handlers.digitalocean = Lita::Config.new
19
+ Lita.config.handlers.digitalocean.tap do |config|
20
+ config.client_id = "CLIENT_ID"
21
+ config.api_key = "API_KEY"
22
+ end
23
+
24
+ allow(Lita::Authorization).to receive(:user_in_group?).with(
25
+ user,
26
+ :digitalocean_admins
27
+ ).and_return(true)
28
+
29
+ allow(::DigitalOcean::API).to receive(:new).and_return(client)
30
+ end
31
+
32
+ let(:do_list) do
33
+ {
34
+ status: "OK",
35
+ ssh_keys: [
36
+ { id: 123, name: "My Key" },
37
+ { id: 456, name: "Your Key" }
38
+ ]
39
+ }
40
+ end
41
+
42
+ let(:do_list_empty) do
43
+ {
44
+ status: "OK",
45
+ ssh_keys: []
46
+ }
47
+ end
48
+
49
+ let(:do_key) do
50
+ {
51
+ status: "OK",
52
+ ssh_key: {
53
+ id: 123,
54
+ name: "My Key",
55
+ ssh_pub_key: "ssh-rsa abcdefg"
56
+ }
57
+ }
58
+ end
59
+
60
+ describe "#add" do
61
+ it "responds with the details of the new key" do
62
+ allow(client_ssh_keys).to receive(:add).with(
63
+ name: "My Key",
64
+ ssh_pub_key: "ssh-rsa abcdefg"
65
+ ).and_return(do_key)
66
+ send_command("do ssh keys add 'My Key' 'ssh-rsa abcdefg'")
67
+ expect(replies.last).to eq("Created new SSH key: 123 (My Key): ssh-rsa abcdefg")
68
+ end
69
+
70
+ it "responds with an error message if name or public key is missing" do
71
+ send_command("do ssh keys add foo")
72
+ expect(replies.last).to eq("Format: do ssh keys add NAME PUBLIC_KEY")
73
+ end
74
+ end
75
+
76
+ describe "#delete" do
77
+ let(:do_delete) { { status: "OK" } }
78
+
79
+ it "responds with a success message" do
80
+ allow(client_ssh_keys).to receive(:delete).with("123").and_return(do_delete)
81
+ send_command("do ssh keys delete 123")
82
+ expect(replies.last).to eq("Deleted SSH key: 123")
83
+ end
84
+ end
85
+
86
+ describe "#edit" do
87
+ it "responds with the edited key's values" do
88
+ allow(client_ssh_keys).to receive(:edit).with(
89
+ "123",
90
+ name: "My Key",
91
+ ssh_pub_key: "ssh-rsa abcdefg"
92
+ ).and_return(do_key)
93
+ send_command(%{do ssh keys edit 123 --name 'My Key' --public-key "ssh-rsa abcdefg"})
94
+ expect(replies.last).to eq("Updated SSH key: 123 (My Key): ssh-rsa abcdefg")
95
+ end
96
+ end
97
+
98
+ describe "#list" do
99
+ it "returns a list of key IDs and names" do
100
+ allow(client_ssh_keys).to receive(:list).and_return(do_list)
101
+ send_command("do ssh keys list")
102
+ expect(replies).to eq(["123 (My Key)", "456 (Your Key)"])
103
+ end
104
+
105
+ it "returns an empty state message if there are no SSH keys" do
106
+ allow(client_ssh_keys).to receive(:list).and_return(do_list_empty)
107
+ send_command("do ssh keys list")
108
+ expect(replies.last).to eq("No SSH keys have been added yet.")
109
+ end
110
+ end
111
+
112
+ describe "#show" do
113
+ it "responds with the public key" do
114
+ allow(client_ssh_keys).to receive(:show).with("123").and_return(do_key)
115
+ send_command("do ssh keys show 123")
116
+ expect(replies.last).to eq("123 (My Key): ssh-rsa abcdefg")
117
+ end
118
+ end
119
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-digitalocean
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jimmy Cuadra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-11 00:00:00.000000000 Z
11
+ date: 2014-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
19
+ version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.1'
26
+ version: '3.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: lita-keyword-arguments
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: digital_ocean
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: 1.3.0
47
+ version: 1.5.0
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: 1.3.0
54
+ version: 1.5.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -123,9 +137,24 @@ files:
123
137
  - Rakefile
124
138
  - lib/lita-digitalocean.rb
125
139
  - lib/lita/handlers/digitalocean.rb
140
+ - lib/lita/handlers/digitalocean/base.rb
141
+ - lib/lita/handlers/digitalocean/domain.rb
142
+ - lib/lita/handlers/digitalocean/domain_record.rb
143
+ - lib/lita/handlers/digitalocean/droplet.rb
144
+ - lib/lita/handlers/digitalocean/image.rb
145
+ - lib/lita/handlers/digitalocean/region.rb
146
+ - lib/lita/handlers/digitalocean/size.rb
147
+ - lib/lita/handlers/digitalocean/ssh_key.rb
126
148
  - lita-digitalocean.gemspec
127
149
  - locales/en.yml
128
- - spec/lita/handlers/digitalocean_spec.rb
150
+ - spec/lita/handlers/digitalocean/base_spec.rb
151
+ - spec/lita/handlers/digitalocean/domain_record_spec.rb
152
+ - spec/lita/handlers/digitalocean/domain_spec.rb
153
+ - spec/lita/handlers/digitalocean/droplet_spec.rb
154
+ - spec/lita/handlers/digitalocean/image_spec.rb
155
+ - spec/lita/handlers/digitalocean/region_spec.rb
156
+ - spec/lita/handlers/digitalocean/size_spec.rb
157
+ - spec/lita/handlers/digitalocean/ssh_key_spec.rb
129
158
  - spec/spec_helper.rb
130
159
  homepage: https://github.com/jimmycuadra/lita-digitalocean
131
160
  licenses:
@@ -153,5 +182,12 @@ signing_key:
153
182
  specification_version: 4
154
183
  summary: A Lita handler for managing DigitalOcean services.
155
184
  test_files:
156
- - spec/lita/handlers/digitalocean_spec.rb
185
+ - spec/lita/handlers/digitalocean/base_spec.rb
186
+ - spec/lita/handlers/digitalocean/domain_record_spec.rb
187
+ - spec/lita/handlers/digitalocean/domain_spec.rb
188
+ - spec/lita/handlers/digitalocean/droplet_spec.rb
189
+ - spec/lita/handlers/digitalocean/image_spec.rb
190
+ - spec/lita/handlers/digitalocean/region_spec.rb
191
+ - spec/lita/handlers/digitalocean/size_spec.rb
192
+ - spec/lita/handlers/digitalocean/ssh_key_spec.rb
157
193
  - spec/spec_helper.rb
@@ -1,130 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Lita::Handlers::Digitalocean, lita_handler: true do
4
- it { routes_command("do ssh keys add 'foo bar' 'ssh-rsa abcdefg'").to(:ssh_keys_add) }
5
- it { routes_command("do ssh keys delete 123").to(:ssh_keys_delete) }
6
- it do
7
- routes_command(
8
- "do ssh keys edit 123 name=foo public_key='ssh-rsa changed'"
9
- ).to(:ssh_keys_edit)
10
- end
11
- it { routes_command("do ssh keys list").to(:ssh_keys_list) }
12
- it { routes_command("do ssh keys show 123").to(:ssh_keys_show) }
13
-
14
- let(:client) do
15
- instance_double(
16
- "::DigitalOcean::API",
17
- ssh_keys: client_ssh_keys
18
- )
19
- end
20
-
21
- let(:client_ssh_keys) { instance_double("::DigitalOcean::Resource::SSHKey") }
22
-
23
- before do
24
- Lita.config.handlers.digitalocean.tap do |config|
25
- config.client_id = "CLIENT_ID"
26
- config.api_key = "API_KEY"
27
- end
28
-
29
- allow(Lita::Authorization).to receive(:user_in_group?).with(
30
- user,
31
- :digitalocean_admins
32
- ).and_return(true)
33
-
34
- allow(::DigitalOcean::API).to receive(:new).and_return(client)
35
- end
36
-
37
- describe "ssh key commands" do
38
- let(:do_list) do
39
- instance_double(
40
- "Hashie::Rash",
41
- status: "OK",
42
- ssh_keys: [
43
- instance_double("Hashie::Rash", id: 123, name: "My Key"),
44
- instance_double("Hashie::Rash", id: 456, name: "Your Key"),
45
- ]
46
- )
47
- end
48
-
49
- let(:do_list_empty) do
50
- instance_double(
51
- "Hashie::Rash",
52
- status: "OK",
53
- ssh_keys: []
54
- )
55
- end
56
-
57
- let(:do_key) do
58
- instance_double(
59
- "Hashie::Rash",
60
- status: "OK",
61
- ssh_key: instance_double(
62
- "Hashie::Rash",
63
- id: 123,
64
- name: "My Key",
65
- ssh_pub_key: "ssh-rsa abcdefg"
66
- )
67
- )
68
- end
69
-
70
- let(:do_delete) { instance_double("Hashie::Rash", status: "OK") }
71
-
72
- describe "#ssh_keys_add" do
73
- it "responds with the details of the new key" do
74
- allow(client_ssh_keys).to receive(:add).with(
75
- name: "My Key",
76
- ssh_pub_key: "ssh-rsa abcdefg"
77
- ).and_return(do_key)
78
- send_command("do ssh keys add 'My Key' 'ssh-rsa abcdefg'")
79
- expect(replies.last).to eq("Created new SSH key: 123 (My Key): ssh-rsa abcdefg")
80
- end
81
-
82
- it "responds with an error message if name or public key is missing" do
83
- send_command("do ssh keys add foo")
84
- expect(replies.last).to eq("Format: do ssh keys add NAME PUBLIC_KEY")
85
- end
86
- end
87
-
88
- describe "#ssh_keys_delete" do
89
- it "responds with a success message" do
90
- allow(client_ssh_keys).to receive(:delete).with("123").and_return(do_delete)
91
- send_command("do ssh keys delete 123")
92
- expect(replies.last).to eq("Deleted SSH key: 123")
93
- end
94
- end
95
-
96
- describe "#ssh_keys_edit" do
97
- it "responds with the edited key's values" do
98
- allow(client_ssh_keys).to receive(:edit).with(
99
- "123",
100
- name: "My Key",
101
- ssh_pub_key: "ssh-rsa abcdefg"
102
- ).and_return(do_key)
103
- send_command(%{do ssh keys edit 123 name='My Key' public_key="ssh-rsa abcdefg"})
104
- expect(replies.last).to eq("Updated SSH key: 123 (My Key): ssh-rsa abcdefg")
105
- end
106
- end
107
-
108
- describe "#ssh_keys_list" do
109
- it "returns a list of key IDs and names" do
110
- allow(client_ssh_keys).to receive(:list).and_return(do_list)
111
- send_command("do ssh keys list")
112
- expect(replies).to eq(["123 (My Key)", "456 (Your Key)"])
113
- end
114
-
115
- it "returns an empty state message if there are no SSH keys" do
116
- allow(client_ssh_keys).to receive(:list).and_return(do_list_empty)
117
- send_command("do ssh keys list")
118
- expect(replies.last).to eq("No SSH keys have been added yet.")
119
- end
120
- end
121
-
122
- describe "#ssh_keys_show" do
123
- it "responds with the public key" do
124
- allow(client_ssh_keys).to receive(:show).with("123").and_return(do_key)
125
- send_command("do ssh keys show 123")
126
- expect(replies.last).to eq("123 (My Key): ssh-rsa abcdefg")
127
- end
128
- end
129
- end
130
- end