qiita_team_services 0.3.2 → 0.3.3

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: 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