txgh-server 3.0.0 → 3.1.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.
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.