txgh-server 3.0.0 → 3.1.0

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: 759f65691df917f6705c476c987285b4941b9343
4
- data.tar.gz: ba32bd6e35a211fa01757d30609949fb48006f4f
3
+ metadata.gz: 4c9f1fb77b7c74f24d52f7c465388f5ede398508
4
+ data.tar.gz: b85ae41e96ce548b1954d71b9deec88d1f6dc69b
5
5
  SHA512:
6
- metadata.gz: e5683453efde01a21ed1b3f9410a8ae11509764aeeee0323f320d0c4cb86ffa20526b6cb45b3bd04a9ecbce344fbee910cc4bb69a678bd5606381891e8362ec9
7
- data.tar.gz: 07b1d539ddb62965a186b4987e7b4d1e315018e42a4dcd7e0af149877cc7d60df7ae18e7105d4e68629b844038c02b9acaa3178fd5ac451daca1e913cbfd98af
6
+ metadata.gz: 31eec7e52a4d1d04fb7b6dae903afb050e8a68ebbebea4d64c13bace9e6494b1ba314c011e9bfbefa77a5c1a4889994e0f4654c671281d621d05078fb483501e
7
+ data.tar.gz: 79d896e7ad7719183151f1420cdba37a175d0b4f493058abc2c490700cdc618f6849fe1d29e7a48f14ef4c61a9ea398eb5f51175713fdf3dce059d1f3dac5e0a
@@ -1,3 +1,3 @@
1
1
  module TxghServer
2
- VERSION = '3.0.0'
2
+ VERSION = '3.1.0'
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'uri'
2
3
 
3
4
  module TxghServer
4
5
  module Webhooks
@@ -92,7 +93,12 @@ module TxghServer
92
93
 
93
94
  def payload
94
95
  @payload ||= Txgh::Utils.deep_symbolize_keys(
95
- JSON.parse(raw_payload)
96
+ case request.env['CONTENT_TYPE']
97
+ when 'application/json'
98
+ JSON.parse(raw_payload)
99
+ else
100
+ Hash[URI.decode_www_form(raw_payload)]
101
+ end
96
102
  )
97
103
  end
98
104
 
@@ -140,6 +140,8 @@ describe TxghServer::WebhookEndpoints do
140
140
  let(:payload) { params.to_json }
141
141
 
142
142
  before(:each) do
143
+ header('Content-Type', 'application/json')
144
+
143
145
  allow(TxghServer::Webhooks::Transifex::HookHandler).to(
144
146
  receive(:new) do |options|
145
147
  expect(options[:project].name).to eq(project_name)
@@ -66,6 +66,8 @@ describe 'hook integration tests', integration: true do
66
66
  end
67
67
 
68
68
  before(:each) do
69
+ header('Content-Type', 'application/json')
70
+
69
71
  allow(Txgh::Config::KeyManager).to(
70
72
  receive(:raw_config).and_return("raw://#{YAML.dump(base_config)}")
71
73
  )
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
  require 'helpers/nil_logger'
3
3
  require 'helpers/standard_txgh_setup'
4
4
  require 'helpers/test_request'
5
+ require 'uri'
5
6
 
6
7
  include TxghServer::Webhooks
7
8
 
@@ -11,10 +12,15 @@ describe Transifex::RequestHandler do
11
12
  let(:logger) { NilLogger.new }
12
13
  let(:body) { payload.to_json }
13
14
  let(:signature) { 'abc123' }
14
- let(:headers) { { TxghServer::TransifexRequestAuth::RACK_HEADER => signature } }
15
15
  let(:request) { TestRequest.new(body: body, headers: headers, request_method: 'POST') }
16
16
  let(:handler) { described_class.new(request, logger) }
17
17
  let(:payload) { { 'project' => project_name, 'resource' => resource_slug, 'language' => 'pt' } }
18
+ let(:headers) do
19
+ {
20
+ TxghServer::TransifexRequestAuth::RACK_HEADER => signature,
21
+ 'CONTENT_TYPE' => 'application/json'
22
+ }
23
+ end
18
24
 
19
25
  describe '#handle_request' do
20
26
  it 'publishes an event' do
@@ -52,6 +58,21 @@ describe Transifex::RequestHandler do
52
58
  expect_any_instance_of(Transifex::HookHandler).to receive(:execute).and_return(:response)
53
59
  expect(handler.handle_request).to eq(:response)
54
60
  end
61
+
62
+ # this is for legacy webhooks, new ones use JSON
63
+ context 'when the content type is www-form' do
64
+ let(:headers) { super().merge('CONTENT_TYPE' => 'application/x-www-form-encoded') }
65
+ let(:body) { URI.encode_www_form(payload) }
66
+
67
+ it 'handles the request successfully' do
68
+ Txgh.events.subscribe('transifex.webhook_received') { true }
69
+
70
+ expect(handler.handle_request.status).to eq(204)
71
+
72
+ event = Txgh.events.published_in('transifex.webhook_received').first
73
+ expect(event[:options][:payload]).to eq(Txgh::Utils.deep_symbolize_keys(payload))
74
+ end
75
+ end
55
76
  end
56
77
  end
57
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: txgh-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Jackowski
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-05 00:00:00.000000000 Z
12
+ date: 2018-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mime-types
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
172
  version: '0'
173
173
  requirements: []
174
174
  rubyforge_project:
175
- rubygems_version: 2.6.13
175
+ rubygems_version: 2.4.5.5
176
176
  signing_key:
177
177
  specification_version: 4
178
178
  summary: An HTTP server for interacting with txgh.