qiita_team_services 0.3.2 → 0.3.3

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: fa60f5f85d9c9deceb8a8403f680042891c72fcb
4
- data.tar.gz: 3bc9e9b9b9c9b2ee382a74b0469fd44924f9cd94
3
+ metadata.gz: 6d4c5b560eeb0143ee323479dd0ca493af868401
4
+ data.tar.gz: 76b0e85c196621822b0450b9a60f35cdeb54a84f
5
5
  SHA512:
6
- metadata.gz: 17827eede279cc56a83a4c816e3901af1ce8316b0aa3a3a72ff2d6180c739464b6721550269b232e555fbee45a9ec1812b39cdbe99050397845a6cd0c479c290
7
- data.tar.gz: 7769a578f0078ea5b46afcabc3d3cdae36f8b1f1664a6d23f540631e6e1deabd2e86db95dad8c46dae4325ecaa44a0875e889f3f78cc40744639d559dfe2f13b
6
+ metadata.gz: dec92fbde534b8681234212e2166d45ac262c6e1610ddd701113c3b46e7261e9060f037a4c33a7a8a5c20ef4ed6f0a0261385cf4ad7f8564da91da6358770d01
7
+ data.tar.gz: 658d390c292f958e6ea41ca29eb69262db05e3de447fa965150570cb586f5928bb02864f189596ae012369dd0d3b97938737d459e8b15a295f87af9d8f5aac87
@@ -32,3 +32,14 @@ en:
32
32
  webhook:
33
33
  url: URL
34
34
  token: Token
35
+ activemodel:
36
+ errors:
37
+ models:
38
+ qiita/team/services/hooks/slack_v2:
39
+ attributes:
40
+ webhook_url:
41
+ not_slack_url: is not a valid Slack hook url.
42
+ qiita/team/services/hooks/webhook:
43
+ attributes:
44
+ url:
45
+ invalid_scheme: must be a http or https url.
@@ -33,3 +33,14 @@ ja:
33
33
  webhook:
34
34
  url: URL
35
35
  token: トークン
36
+ activemodel:
37
+ errors:
38
+ models:
39
+ qiita/team/services/hooks/slack_v2:
40
+ attributes:
41
+ webhook_url:
42
+ not_slack_url: は正しいSlack URLではありません。
43
+ qiita/team/services/hooks/webhook:
44
+ attributes:
45
+ url:
46
+ invalid_scheme: はhttpかhttpsでなければなりません。
@@ -8,7 +8,10 @@ module Qiita::Team::Services
8
8
 
9
9
  define_property :webhook_url
10
10
 
11
- validates :webhook_url, presence: true
11
+ validates :webhook_url, presence: true,
12
+ format: { with: %r{\Ahttps://hooks\.slack\.com},
13
+ message: :not_slack_url,
14
+ allow_blank: true }
12
15
 
13
16
  private
14
17
 
@@ -1,3 +1,4 @@
1
+ require "activemodel-url_validator"
1
2
  require "securerandom"
2
3
 
3
4
  require "qiita/team/services/hooks/base"
@@ -11,7 +12,10 @@ module Qiita::Team::Services
11
12
  define_property :token
12
13
 
13
14
  validates :token, format: %r{\A[A-Za-z0-9+/=]{20,40}\z}
14
- validates :url, presence: true
15
+ validates :url, presence: true,
16
+ url: { scheme: ['http', 'https'],
17
+ message: :invalid_scheme,
18
+ allow_blank: true }
15
19
 
16
20
  # @note Override {Qiita::Team::Services::Hooks::Base.service_name}.
17
21
  def self.service_name
@@ -1,3 +1,3 @@
1
1
  module Qiita::Team::Services
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.files = `git ls-files -z`.split("\x0")
23
23
  spec.require_paths = ["lib"]
24
24
 
25
+ spec.add_dependency "activemodel-url_validator"
25
26
  spec.add_dependency "faraday", "~> 0.9"
26
27
  spec.add_dependency "faraday_middleware", "~> 0.10"
27
28
  spec.add_dependency "rails", "~> 4.2"
@@ -34,7 +34,7 @@ describe Qiita::Team::Services::Hooks::ChatworkV1 do
34
34
  end
35
35
  end
36
36
 
37
- let(:hook) do
37
+ subject(:hook) do
38
38
  described_class.new(properties)
39
39
  end
40
40
 
@@ -27,7 +27,7 @@ describe Qiita::Team::Services::Hooks::HipchatV1 do
27
27
  end
28
28
  end
29
29
 
30
- let(:hook) do
30
+ subject(:hook) do
31
31
  described_class.new(properties)
32
32
  end
33
33
 
@@ -21,7 +21,7 @@ describe Qiita::Team::Services::Hooks::SlackV1 do
21
21
  end
22
22
  end
23
23
 
24
- let(:hook) do
24
+ subject(:hook) do
25
25
  described_class.new(properties)
26
26
  end
27
27
 
@@ -51,5 +51,5 @@ describe Qiita::Team::Services::Hooks::SlackV1 do
51
51
  end
52
52
 
53
53
  it_behaves_like "hook"
54
- it_behaves_like "Slack hook"
54
+ it_behaves_like "Slack hook", hook: :hook
55
55
  end
@@ -21,7 +21,7 @@ describe Qiita::Team::Services::Hooks::SlackV2 do
21
21
  end
22
22
  end
23
23
 
24
- let(:hook) do
24
+ subject(:hook) do
25
25
  described_class.new(properties)
26
26
  end
27
27
 
@@ -46,5 +46,25 @@ describe Qiita::Team::Services::Hooks::SlackV2 do
46
46
  end
47
47
 
48
48
  it_behaves_like "hook"
49
- it_behaves_like "Slack hook"
49
+ it_behaves_like "Slack hook", hook: :hook
50
+
51
+ describe "#valid?" do
52
+ subject { hook.valid? }
53
+
54
+ context "when url starts with https://hooks.slack.com/" do
55
+ let(:webhook_url) do
56
+ "https://hooks.slack.com/services/foo/bar"
57
+ end
58
+
59
+ it { should be true }
60
+ end
61
+
62
+ context "when url does not start with https://hooks.slack.com/" do
63
+ let(:webhook_url) do
64
+ "http://hooks.slack.com/services/foo/bar"
65
+ end
66
+
67
+ it { should be false }
68
+ end
69
+ end
50
70
  end
@@ -1,5 +1,5 @@
1
1
  describe Qiita::Team::Services::Hooks::Webhook, :versioning do
2
- let(:hook) do
2
+ subject(:hook) do
3
3
  described_class.new(properties)
4
4
  end
5
5
 
@@ -462,4 +462,40 @@ describe Qiita::Team::Services::Hooks::Webhook, :versioning do
462
462
  expect(request).to have_been_made
463
463
  end
464
464
  end
465
+
466
+ describe "#valid?" do
467
+ subject { hook.valid? }
468
+
469
+ context "when url is http" do
470
+ let(:url) do
471
+ FFaker::Internet.uri(:http)
472
+ end
473
+
474
+ it { should be true }
475
+ end
476
+
477
+ context "when url is http" do
478
+ let(:url) do
479
+ FFaker::Internet.uri(:https)
480
+ end
481
+
482
+ it { should be true }
483
+ end
484
+
485
+ context "when url is ftp" do
486
+ let(:url) do
487
+ FFaker::Internet.uri(:ftp)
488
+ end
489
+
490
+ it { should be false }
491
+ end
492
+
493
+ context "when url is not a URI" do
494
+ let(:url) do
495
+ "example.com"
496
+ end
497
+
498
+ it { should be false }
499
+ end
500
+ end
465
501
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
+ require "faraday"
1
2
  require "ffaker"
2
3
  require "pry"
3
4
  require "webmock/rspec"
4
- require "faraday"
5
5
  require "qiita_team_services"
6
6
 
7
7
  Dir.glob("spec/support/{helpers,matchers}/*.rb").each do |filepath|
@@ -29,7 +29,7 @@ module Qiita::Team::Services
29
29
  ].freeze
30
30
 
31
31
  included do
32
- shared_examples "Slack hook" do
32
+ shared_examples "Slack hook" do |hook:|
33
33
  describe ".service_name" do
34
34
  subject do
35
35
  described_class.service_name
@@ -48,11 +48,11 @@ module Qiita::Team::Services
48
48
 
49
49
  describe "#ping" do
50
50
  subject do
51
- hook.ping
51
+ send(hook).ping
52
52
  end
53
53
 
54
54
  it "sends message with proper attachments" do
55
- expect(hook).to receive(:send_message) do |request_body|
55
+ expect(send(hook)).to receive(:send_message) do |request_body|
56
56
  expect(request_body).to match_slack_attachments_request
57
57
  end.once
58
58
  subject
@@ -74,11 +74,11 @@ module Qiita::Team::Services
74
74
  EXPECTED_AVAILABLE_EVENT_NAMES.each do |event_name|
75
75
  describe "##{event_name}" do
76
76
  subject do
77
- hook.public_send(event_name, public_send("#{event_name}_event"))
77
+ send(hook).public_send(event_name, public_send("#{event_name}_event"))
78
78
  end
79
79
 
80
80
  it "sends message with proper attachments" do
81
- expect(hook).to receive(:send_message) do |request_body|
81
+ expect(send(hook)).to receive(:send_message) do |request_body|
82
82
  expect(request_body).to match_slack_attachments_request
83
83
  end.once
84
84
  subject
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita_team_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuku Takahashi
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel-url_validator
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: faraday
15
29
  requirement: !ruby/object:Gem::Requirement