lita-pagerduty 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -1
- data/.rubocop.yml +6 -5
- data/README.md +11 -9
- data/Rakefile +4 -2
- data/lib/exceptions.rb +11 -0
- data/lib/lita-pagerduty.rb +7 -29
- data/lib/lita/commands/ack.rb +15 -0
- data/lib/lita/commands/ack_all.rb +21 -0
- data/lib/lita/commands/ack_mine.rb +26 -0
- data/lib/lita/commands/base.rb +75 -0
- data/lib/lita/commands/forget.rb +13 -0
- data/lib/lita/commands/identify.rb +13 -0
- data/lib/lita/commands/incident.rb +13 -0
- data/lib/lita/commands/incidents_all.rb +18 -0
- data/lib/lita/commands/incidents_mine.rb +23 -0
- data/lib/lita/commands/notes.rb +15 -0
- data/lib/lita/commands/on_call_list.rb +13 -0
- data/lib/lita/commands/on_call_lookup.rb +41 -0
- data/lib/lita/commands/pager_me.rb +48 -0
- data/lib/lita/commands/resolve.rb +15 -0
- data/lib/lita/commands/resolve_all.rb +21 -0
- data/lib/lita/commands/resolve_mine.rb +26 -0
- data/lib/lita/handlers/commands.yml +30 -0
- data/lib/lita/handlers/pagerduty.rb +57 -0
- data/lib/pagerduty.rb +94 -0
- data/lib/store.rb +20 -0
- data/lita-pagerduty.gemspec +1 -2
- data/locales/en.yml +2 -2
- data/spec/lita/handlers/ack_all_spec.rb +26 -0
- data/spec/lita/handlers/ack_id_spec.rb +23 -0
- data/spec/lita/handlers/ack_mine_spec.rb +38 -0
- data/spec/lita/handlers/forget_spec.rb +22 -0
- data/spec/lita/handlers/identify_email_spec.rb +22 -0
- data/spec/lita/handlers/incident_id_spec.rb +23 -0
- data/spec/lita/handlers/incidents_all_spec.rb +31 -0
- data/spec/lita/handlers/incidents_mine_spec.rb +35 -0
- data/spec/lita/handlers/notes_spec.rb +29 -0
- data/spec/lita/handlers/on_call_list_spec.rb +21 -0
- data/spec/lita/handlers/on_call_lookup_spec.rb +29 -0
- data/spec/lita/handlers/pager_me_spec.rb +56 -0
- data/spec/lita/handlers/resolve_all_spec.rb +26 -0
- data/spec/lita/handlers/resolve_id_spec.rb +21 -0
- data/spec/lita/handlers/resolve_mine_spec.rb +38 -0
- data/spec/pagerduty_spec.rb +106 -0
- data/spec/spec_helper.rb +3 -189
- data/templates/.gitkeep +0 -0
- metadata +57 -35
- data/lib/lita/handlers/pagerduty_ack.rb +0 -77
- data/lib/lita/handlers/pagerduty_incident.rb +0 -68
- data/lib/lita/handlers/pagerduty_note.rb +0 -50
- data/lib/lita/handlers/pagerduty_resolve.rb +0 -77
- data/lib/lita/handlers/pagerduty_utility.rb +0 -136
- data/lib/pagerduty_helper/incident.rb +0 -64
- data/lib/pagerduty_helper/regex.rb +0 -8
- data/lib/pagerduty_helper/utility.rb +0 -43
- data/spec/lita/handlers/pagerduty_ack_spec.rb +0 -95
- data/spec/lita/handlers/pagerduty_incident_spec.rb +0 -103
- data/spec/lita/handlers/pagerduty_note_spec.rb +0 -43
- data/spec/lita/handlers/pagerduty_resolve_spec.rb +0 -95
- data/spec/lita/handlers/pagerduty_utility_spec.rb +0 -59
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Lita::Handlers::PagerdutyIncident, lita_handler: true do
|
4
|
-
include_context 'basic fixtures'
|
5
|
-
|
6
|
-
it do
|
7
|
-
is_expected.to route_command('pager incidents all').to(:incidents_all)
|
8
|
-
is_expected.to route_command('pager incidents mine').to(:incidents_mine)
|
9
|
-
is_expected.to route_command('pager incident ABC123').to(:incident)
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '#incidents_all' do
|
13
|
-
describe 'when there are open incidents' do
|
14
|
-
it 'shows a list of incidents' do
|
15
|
-
expect(Pagerduty).to receive(:new) { incidents }
|
16
|
-
send_command('pager incidents all')
|
17
|
-
expect(replies.last).to eq('ABC789: "Still broke", assigned to: '\
|
18
|
-
'bar@example.com, url: https://acme.pagerduty.com/incidents/ABC789')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe 'when there are no open incidents' do
|
23
|
-
it 'shows a warning' do
|
24
|
-
expect(Pagerduty).to receive(:new) { no_incidents }
|
25
|
-
send_command('pager incidents all')
|
26
|
-
expect(replies.last).to eq('No triggered, open, or acknowledged ' \
|
27
|
-
'incidents')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '#incidents_mine' do
|
33
|
-
describe 'when there are open incidents for the user' do
|
34
|
-
it 'shows a list of incidents' do
|
35
|
-
bar = Lita::User.create(123, name: 'bar')
|
36
|
-
expect(Pagerduty).to receive(:new) { incidents }
|
37
|
-
send_command('pager identify bar@example.com', as: bar)
|
38
|
-
send_command('pager incidents mine', as: bar)
|
39
|
-
expect(replies.last).to eq('ABC789: "Still broke", assigned to: ' \
|
40
|
-
'bar@example.com, url: https://acme.pagerduty.com/incidents/ABC789')
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe 'when there are no open incidents for the user' do
|
45
|
-
it 'shows no incidents' do
|
46
|
-
foo = Lita::User.create(123, name: 'foo')
|
47
|
-
expect(Pagerduty).to receive(:new) { incidents }
|
48
|
-
send_command('pager identify foo@example.com', as: foo)
|
49
|
-
send_command('pager incidents mine', as: foo)
|
50
|
-
expect(replies.last).to eq('You have no triggered, open, or ' \
|
51
|
-
'acknowledged incidents')
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe 'when the user has not identified themselves' do
|
56
|
-
it 'shows a warning' do
|
57
|
-
send_command('pager incidents mine')
|
58
|
-
expect(replies.last).to eq('You have not identified yourself (use ' \
|
59
|
-
'the help command for more info)')
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe '#incident' do
|
65
|
-
describe 'when the incident exists' do
|
66
|
-
it 'shows incident details' do
|
67
|
-
expect(Pagerduty).to receive(:new) { new_incident }
|
68
|
-
send_command('pager incident ABC123')
|
69
|
-
expect(replies.last).to eq('ABC123: "something broke", ' \
|
70
|
-
'assigned to: foo@example.com, ' \
|
71
|
-
'url: https://acme.pagerduty.com/incidents/ABC123')
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe 'when the incident does not exist' do
|
76
|
-
it 'shows an error' do
|
77
|
-
expect(Pagerduty).to receive(:new) { no_incident }
|
78
|
-
send_command('pager incident ABC123')
|
79
|
-
expect(replies.last).to eq('ABC123: Incident not found')
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe 'when the incident id is longer than 6 characters' do
|
84
|
-
it 'shows the incident details' do
|
85
|
-
expect(Pagerduty).to receive(:new) { incident_with_long_id }
|
86
|
-
send_command('pager incident ABC123456789')
|
87
|
-
expect(replies.last).to eq('ABC123456789: "something broke", ' \
|
88
|
-
'assigned to: foo@example.com, ' \
|
89
|
-
'url: https://acme.pagerduty.com/incidents/ABC123456789')
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe 'when the incident is not assigned to anyone' do
|
94
|
-
it 'shows incident details with none user' do
|
95
|
-
expect(Pagerduty).to receive(:new) { incident_without_assigned_user }
|
96
|
-
send_command('pager incident ABC456')
|
97
|
-
expect(replies.last).to eq('ABC456: "something broke", ' \
|
98
|
-
'assigned to: none, ' \
|
99
|
-
'url: https://acme.pagerduty.com/incidents/ABC456')
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Lita::Handlers::PagerdutyNote, lita_handler: true do
|
4
|
-
include_context 'basic fixtures'
|
5
|
-
|
6
|
-
it do
|
7
|
-
is_expected.to route_command('pager notes ABC123').to(:notes)
|
8
|
-
is_expected.to route_command('pager note ABC123 some text').to(:note)
|
9
|
-
end
|
10
|
-
|
11
|
-
describe '#notes' do
|
12
|
-
describe 'when the incident has notes' do
|
13
|
-
it 'shows incident notes' do
|
14
|
-
expect(Pagerduty).to receive(:new) { incident_with_notes }
|
15
|
-
send_command('pager notes ABC123')
|
16
|
-
expect(replies.last).to eq('ABC123: Hi! (foo@example.com)')
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe 'when the incident doesnt have notes' do
|
21
|
-
it 'shows no notes' do
|
22
|
-
expect(Pagerduty).to receive(:new) { new_incident }
|
23
|
-
send_command('pager notes ABC123')
|
24
|
-
expect(replies.last).to eq('ABC123: No notes')
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'when the incident does not exist' do
|
29
|
-
it 'shows an error' do
|
30
|
-
expect(Pagerduty).to receive(:new) { no_incident }
|
31
|
-
send_command('pager notes ABC123')
|
32
|
-
expect(replies.last).to eq('ABC123: Incident not found')
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe '#note' do
|
38
|
-
it 'shows a warning' do
|
39
|
-
send_command('pager note ABC123 some text')
|
40
|
-
expect(replies.last).to eq('Not implemented yet.')
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,95 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Lita::Handlers::PagerdutyResolve, lita_handler: true do
|
4
|
-
include_context 'basic fixtures'
|
5
|
-
|
6
|
-
it do
|
7
|
-
is_expected.to route_command('pager resolve all').to(:resolve_all)
|
8
|
-
is_expected.to route_command('pager resolve mine').to(:resolve_mine)
|
9
|
-
is_expected.to route_command('pager resolve ABC123').to(:resolve)
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '#resolve_all' do
|
13
|
-
describe 'when there are resolvable incidents' do
|
14
|
-
it 'shows them as resolved' do
|
15
|
-
expect(Pagerduty).to receive(:new).twice { incidents }
|
16
|
-
send_command('pager resolve all')
|
17
|
-
expect(replies.last).to eq('Resolved: ABC789')
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe 'when there are no resolvable incidents' do
|
22
|
-
it 'shows a warning' do
|
23
|
-
expect(Pagerduty).to receive(:new) { no_incidents }
|
24
|
-
send_command('pager resolve all')
|
25
|
-
expect(replies.last).to eq('No triggered, open, or acknowledged ' \
|
26
|
-
'incidents')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe '#resolve_mine' do
|
32
|
-
describe 'when there are resolvable incidents for the user' do
|
33
|
-
it 'shows them as acknowledged' do
|
34
|
-
bar = Lita::User.create(123, name: 'bar')
|
35
|
-
expect(Pagerduty).to receive(:new).twice { incidents }
|
36
|
-
send_command('pager identify bar@example.com', as: bar)
|
37
|
-
send_command('pager resolve mine', as: bar)
|
38
|
-
expect(replies.last).to eq('Resolved: ABC789')
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe 'when there are no resolvable incidents for the user' do
|
43
|
-
it 'shows a warning' do
|
44
|
-
foo = Lita::User.create(123, name: 'foo')
|
45
|
-
expect(Pagerduty).to receive(:new) { incidents }
|
46
|
-
send_command('pager identify foo@example.com', as: foo)
|
47
|
-
send_command('pager resolve mine', as: foo)
|
48
|
-
expect(replies.last).to eq('You have no triggered, open, or ' \
|
49
|
-
'acknowledged incidents')
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe 'when the user has not identified themselves' do
|
54
|
-
it 'shows a warning' do
|
55
|
-
send_command('pager resolve mine')
|
56
|
-
expect(replies.last).to eq('You have not identified yourself (use ' \
|
57
|
-
'the help command for more info)')
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe '#resolve' do
|
63
|
-
describe 'when the incident has not been resolved' do
|
64
|
-
it 'shows the resolve' do
|
65
|
-
expect(Pagerduty).to receive(:new) { new_incident }
|
66
|
-
send_command('pager resolve ABC123')
|
67
|
-
expect(replies.last).to eq('ABC123: Incident resolved')
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe 'when the incident has already been resolved' do
|
72
|
-
it 'shows the warning' do
|
73
|
-
expect(Pagerduty).to receive(:new) { resolved_incident }
|
74
|
-
send_command('pager resolve ABC123')
|
75
|
-
expect(replies.last).to eq('ABC123: Incident already resolved')
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe 'when the incident does not exist' do
|
80
|
-
it 'shows an error' do
|
81
|
-
expect(Pagerduty).to receive(:new) { no_incident }
|
82
|
-
send_command('pager resolve ABC123')
|
83
|
-
expect(replies.last).to eq('ABC123: Incident not found')
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe 'when the incident cannot be resolved' do
|
88
|
-
it 'shows an error' do
|
89
|
-
expect(Pagerduty).to receive(:new) { unable_to_resolve_incident }
|
90
|
-
send_command('pager resolve ABC123')
|
91
|
-
expect(replies.last).to eq('ABC123: Unable to resolve incident')
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Lita::Handlers::PagerdutyUtility, lita_handler: true do
|
4
|
-
include_context 'basic fixtures'
|
5
|
-
|
6
|
-
it do
|
7
|
-
is_expected.to route_command('pager oncall').to(:on_call_list)
|
8
|
-
is_expected.to route_command('pager oncall ops').to(:on_call_lookup)
|
9
|
-
is_expected.to route_command('pager identify foobar@example.com').to(:identify)
|
10
|
-
is_expected.to route_command('pager forget').to(:forget)
|
11
|
-
is_expected.to route_command('pager me ops 12m').to(:pager_me)
|
12
|
-
end
|
13
|
-
|
14
|
-
before do
|
15
|
-
Lita.config.handlers.pagerduty.api_key = 'foo'
|
16
|
-
Lita.config.handlers.pagerduty.subdomain = 'bar'
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '#identify' do
|
20
|
-
describe 'when that email is new' do
|
21
|
-
it 'shows a successful identification' do
|
22
|
-
foo = Lita::User.create(123, name: 'foo')
|
23
|
-
send_command('pager identify foo@example.com', as: foo)
|
24
|
-
expect(replies.last).to eq('You have now been identified.')
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# TODO: It'd be great to validate this against the existing
|
29
|
-
# users on the PD account.
|
30
|
-
|
31
|
-
describe 'when that email exists already' do
|
32
|
-
it 'shows a warning' do
|
33
|
-
baz = Lita::User.create(321, name: 'baz')
|
34
|
-
send_command('pager identify baz@example.com', as: baz)
|
35
|
-
send_command('pager identify baz@example.com', as: baz)
|
36
|
-
expect(replies.last).to eq('You have already been identified!')
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '#forget' do
|
42
|
-
describe 'when that user is associated' do
|
43
|
-
it 'shows a successful forget' do
|
44
|
-
foo = Lita::User.create(123, name: 'foo')
|
45
|
-
send_command('pager identify foo@example.com', as: foo)
|
46
|
-
send_command('pager forget', as: foo)
|
47
|
-
expect(replies.last).to eq('Your email has now been forgotten.')
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe 'when that user is not associated' do
|
52
|
-
it 'shows a warning' do
|
53
|
-
foo = Lita::User.create(123, name: 'foo')
|
54
|
-
send_command('pager forget', as: foo)
|
55
|
-
expect(replies.last).to eq('No email on record for you.')
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|