txgh-server 4.0.0.beta → 4.0.0.beta2

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.
@@ -0,0 +1,10 @@
1
+ [main]
2
+ host = https://www.transifex.com
3
+ lang_map =
4
+
5
+ # Create one such section per resource
6
+ [txgl-test.enyml]
7
+ file_filter = config/locales/<lang>.yml
8
+ source_file = config/locales/en.yml
9
+ source_lang = en
10
+ type = YML
@@ -7,8 +7,7 @@ require 'rack/test'
7
7
  require 'helpers/integration_setup'
8
8
  require 'uri'
9
9
  require 'yaml'
10
-
11
- include TxghServer
10
+ require_relative '../../lib/txgh-server/application'
12
11
 
13
12
  describe 'hook integration tests', integration: true do
14
13
  include Rack::Test::Methods
@@ -24,43 +23,14 @@ describe 'hook integration tests', integration: true do
24
23
  end
25
24
  end
26
25
 
27
- let(:base_config) do
28
- {
29
- 'github' => {
30
- 'repos' => {
31
- 'txgh-bot/txgh-test-resources' => {
32
- 'api_username' => 'txgh-bot',
33
- # github will auto-revoke a token if they notice it in one of your commits ;)
34
- 'api_token' => Base64.decode64('YjViYWY3Nzk5NTdkMzVlMmI0OGZmYjk4YThlY2M1ZDY0NzAwNWRhZA=='),
35
- 'push_source_to' => 'test-project-88',
36
- 'branch' => 'master',
37
- 'webhook_secret' => '18d3998f576dfe933357104b87abfd61'
38
- }
39
- }
40
- },
41
- 'transifex' => {
42
- 'projects' => {
43
- 'test-project-88' => {
44
- 'tx_config' => 'file://./config/tx.config',
45
- 'api_username' => 'txgh.bot',
46
- 'api_password' => '2aqFGW99fPRKWvXBPjbrxkdiR',
47
- 'push_translations_to' => 'txgh-bot/txgh-test-resources',
48
- 'webhook_secret' => 'fce95b1748fd638c22174d34200f10cf',
49
- 'languages' => ['el_GR']
50
- }
51
- }
52
- }
53
- }
54
- end
55
-
56
26
  before(:all) do
57
27
  VCR.configure do |config|
58
28
  config.filter_sensitive_data('<GITHUB_TOKEN>') do
59
- base_config['github']['repos']['txgh-bot/txgh-test-resources']['api_token']
29
+ base_config[git_source]['repos']['txgh-bot/txgh-test-resources']['api_token']
60
30
  end
61
31
 
62
32
  config.filter_sensitive_data('<TRANSIFEX_PASSWORD>') do
63
- base_config['transifex']['projects']['test-project-88']['api_password']
33
+ base_config['transifex']['projects'][project_name]['api_password']
64
34
  end
65
35
  end
66
36
  end
@@ -81,21 +51,22 @@ describe 'hook integration tests', integration: true do
81
51
  File.read(payload_path.join('github_postbody.json'))
82
52
  end
83
53
 
54
+ let(:gitlab_postbody) do
55
+ File.read(payload_path.join('gitlab_postbody.json'))
56
+ end
57
+
84
58
  let(:github_postbody_release) do
85
59
  File.read(payload_path.join('github_postbody_release.json'))
86
60
  end
87
61
 
88
- let(:project_name) { 'test-project-88' }
89
- let(:repo_name) { 'txgh-bot/txgh-test-resources' }
90
-
91
62
  let(:config) do
92
63
  Txgh::Config::KeyManager.config_from(project_name, repo_name)
93
64
  end
94
65
 
95
66
  def sign_github_request(body)
96
67
  header(
97
- GithubRequestAuth::GITHUB_HEADER,
98
- GithubRequestAuth.compute_signature(
68
+ TxghServer::GithubRequestAuth::GITHUB_HEADER,
69
+ TxghServer::GithubRequestAuth.compute_signature(
99
70
  body, config.git_repo.webhook_secret
100
71
  )
101
72
  )
@@ -123,38 +94,58 @@ describe 'hook integration tests', integration: true do
123
94
  expect(config.project_config).to_not be_nil
124
95
  end
125
96
 
126
- it 'verifies the transifex hook endpoint works' do
127
- VCR.use_cassette('transifex_hook_endpoint') do
128
- params = {
129
- 'project' => 'test-project-88', 'resource' => 'samplepo',
130
- 'language' => 'el_GR', 'translated' => 100
131
- }
97
+ context 'GitLab' do
98
+ let(:git_source) { 'gitlab' }
99
+ let(:repo_name) { 'idanci/txgl-test' }
100
+ let(:project_name) { 'txgl-test' }
132
101
 
133
- payload = params.to_json
102
+ it 'verifies the gitlab hook endpoint works' do
103
+ VCR.use_cassette('gitlab_hook_endpoint') do
104
+ header 'X-Gitlab-Token', base_config[git_source]['repos'][repo_name]['webhook_secret']
105
+ header 'X-GitLab-Event', 'Push Hook'
106
+ header 'content-type', 'application/x-www-form-urlencoded'
107
+ post '/gitlab', gitlab_postbody
134
108
 
135
- sign_transifex_request(payload)
136
- post '/transifex', payload
137
- expect(last_response).to be_ok
109
+ expect(last_response).to be_ok
110
+ end
138
111
  end
139
- end
140
112
 
141
- it 'verifies the github hook endpoint works' do
142
- VCR.use_cassette('github_hook_endpoint') do
143
- sign_github_request(github_postbody)
144
- header 'X-GitHub-Event', 'push'
145
- header 'content-type', 'application/x-www-form-urlencoded'
146
- post '/github', github_postbody
147
- expect(last_response).to be_ok
113
+ it 'verifies the transifex hook endpoint works' do
114
+ VCR.use_cassette('transifex_hook_endpoint') do
115
+ params = {
116
+ 'project' => project_name, 'resource' => 'enyml-heads_test_hook',
117
+ 'language' => 'de', 'translated' => 100
118
+ }
119
+
120
+ payload = params.to_json
121
+
122
+ sign_transifex_request(payload)
123
+ post '/transifex', payload
124
+
125
+ expect(last_response).to be_ok
126
+ end
148
127
  end
149
128
  end
150
129
 
151
- it 'verifies the github release hook endpoint works' do
152
- VCR.use_cassette('github_release_hook_endpoint') do
153
- sign_github_request(github_postbody_release)
154
- header 'X-GitHub-Event', 'push'
155
- header 'content-type', 'application/x-www-form-urlencoded'
156
- post '/github', github_postbody_release
157
- expect(last_response).to be_ok
130
+ context 'GitHub' do
131
+ it 'verifies the github hook endpoint works' do
132
+ VCR.use_cassette('github_hook_endpoint') do
133
+ sign_github_request(github_postbody)
134
+ header 'X-GitHub-Event', 'push'
135
+ header 'content-type', 'application/x-www-form-urlencoded'
136
+ post '/github', github_postbody
137
+ expect(last_response).to be_ok
138
+ end
139
+ end
140
+
141
+ it 'verifies the github release hook endpoint works' do
142
+ VCR.use_cassette('github_release_hook_endpoint') do
143
+ sign_github_request(github_postbody_release)
144
+ header 'X-GitHub-Event', 'push'
145
+ header 'content-type', 'application/x-www-form-urlencoded'
146
+ post '/github', github_postbody_release
147
+ expect(last_response).to be_ok
148
+ end
158
149
  end
159
150
  end
160
151
  end
@@ -0,0 +1,62 @@
1
+ {
2
+ "object_kind": "push",
3
+ "event_name": "push",
4
+ "before": "d2e8cee2a4119235ea5ffd91e50dc91fe2e6632e",
5
+ "after": "3bf889a1310b515ec4d8d64a93542977a6dbe106",
6
+ "ref": "refs/heads/test_hook",
7
+ "checkout_sha": "3bf889a1310b515ec4d8d64a93542977a6dbe106",
8
+ "message": null,
9
+ "user_id": 745271,
10
+ "user_name": "Ivan Danci",
11
+ "user_username": "idanci",
12
+ "user_email": "",
13
+ "user_avatar": "https://secure.gravatar.com/avatar/dbda838e9b7bca615829ac151e01f3c0?s=80&d=identicon",
14
+ "project_id": 17514841,
15
+ "project": {
16
+ "id": 17514841,
17
+ "name": "txgl-test",
18
+ "description": "Test transifex-gitlab",
19
+ "web_url": "https://gitlab.com/idanci/txgl-test",
20
+ "avatar_url": null,
21
+ "git_ssh_url": "git@gitlab.com:idanci/txgl-test.git",
22
+ "git_http_url": "https://gitlab.com/idanci/txgl-test.git",
23
+ "namespace": "Ivan Danci",
24
+ "visibility_level": 20,
25
+ "path_with_namespace": "idanci/txgl-test",
26
+ "default_branch": "master",
27
+ "ci_config_path": null,
28
+ "homepage": "https://gitlab.com/idanci/txgl-test",
29
+ "url": "git@gitlab.com:idanci/txgl-test.git",
30
+ "ssh_url": "git@gitlab.com:idanci/txgl-test.git",
31
+ "http_url": "https://gitlab.com/idanci/txgl-test.git"
32
+ },
33
+ "commits": [
34
+ {
35
+ "id": "3bf889a1310b515ec4d8d64a93542977a6dbe106",
36
+ "message": "Test\n",
37
+ "title": "Test",
38
+ "timestamp": "2020-03-26T18:27:52+02:00",
39
+ "url": "https://gitlab.com/idanci/txgl-test/-/commit/3bf889a1310b515ec4d8d64a93542977a6dbe106",
40
+ "author": {
41
+ "name": "Ivan Danci",
42
+ "email": "bah4uk@gmail.com"
43
+ },
44
+ "added": [],
45
+ "modified": [
46
+ "config/locales/en.yml"
47
+ ],
48
+ "removed": []
49
+ }
50
+ ],
51
+ "total_commits_count": 1,
52
+ "push_options": {},
53
+ "repository": {
54
+ "name": "txgl-test",
55
+ "url": "git@gitlab.com:idanci/txgl-test.git",
56
+ "description": "Test transifex-gitlab",
57
+ "homepage": "https://gitlab.com/idanci/txgl-test",
58
+ "git_http_url": "https://gitlab.com/idanci/txgl-test.git",
59
+ "git_ssh_url": "git@gitlab.com:idanci/txgl-test.git",
60
+ "visibility_level": 20
61
+ }
62
+ }
@@ -2,11 +2,16 @@ require 'spec_helper'
2
2
 
3
3
  require 'rack/test'
4
4
  require 'helpers/integration_setup'
5
+ require_relative '../../lib/txgh-server/application'
5
6
 
6
7
  describe 'trigger integration tests', integration: true do
7
8
  include Rack::Test::Methods
8
9
  include IntegrationSetup
9
10
 
11
+ let(:git_source) { 'gitlab' }
12
+ let(:repo_name) { 'idanci/txgl-test' }
13
+ let(:project_name) { 'txgl-test' }
14
+
10
15
  def app
11
16
  @app ||= TxghServer::TriggerEndpoints.new
12
17
  end
@@ -20,12 +25,13 @@ describe 'trigger integration tests', integration: true do
20
25
  it 'verifies the pull endpoint works' do
21
26
  VCR.use_cassette('pull') do
22
27
  params = {
23
- project_slug: 'test-project-88',
24
- resource_slug: 'samplepo',
28
+ project_slug: project_name,
29
+ resource_slug: 'enyml-heads_master',
25
30
  branch: 'master'
26
31
  }
27
32
 
28
33
  patch '/pull', params
34
+
29
35
  expect(last_response).to be_ok
30
36
  end
31
37
  end
@@ -33,12 +39,13 @@ describe 'trigger integration tests', integration: true do
33
39
  it 'verifies the push endpoint works' do
34
40
  VCR.use_cassette('push') do
35
41
  params = {
36
- project_slug: 'test-project-88',
37
- resource_slug: 'samplepo',
42
+ project_slug: project_name,
43
+ resource_slug: 'enyml-heads_master',
38
44
  branch: 'master'
39
45
  }
40
46
 
41
47
  patch '/push', params
48
+
42
49
  expect(last_response).to be_ok
43
50
  end
44
51
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency 'sinatra', '~> 1.4'
17
17
  s.add_dependency 'sinatra-contrib', '~> 1.4'
18
18
  s.add_dependency 'rubyzip', '>= 1.0', '<= 1.1.2'
19
- s.add_dependency 'txgh', '7.0.0.beta'
19
+ s.add_dependency 'txgh', '7.0.0.beta2'
20
20
 
21
21
  s.require_path = 'lib'
22
22
  s.files = Dir['{lib,spec}/**/*', 'README.md', 'txgh-server.gemspec', 'LICENSE']
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: 4.0.0.beta
4
+ version: 4.0.0.beta2
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: 2020-03-25 00:00:00.000000000 Z
12
+ date: 2020-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mime-types
@@ -79,14 +79,14 @@ dependencies:
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 7.0.0.beta
82
+ version: 7.0.0.beta2
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 7.0.0.beta
89
+ version: 7.0.0.beta2
90
90
  description: An HTTP server for interacting with txgh.
91
91
  email:
92
92
  - mattjjacko@gmail.com
@@ -150,13 +150,16 @@ files:
150
150
  - spec/helpers/gitlab_payload_builder.rb
151
151
  - spec/helpers/integration_setup.rb
152
152
  - spec/helpers/test_request.rb
153
+ - spec/integration/cassettes/gitlab_hook_endpoint.yml
153
154
  - spec/integration/cassettes/pull.yml
154
155
  - spec/integration/cassettes/push.yml
155
156
  - spec/integration/cassettes/transifex_hook_endpoint.yml
156
157
  - spec/integration/config/tx.config
158
+ - spec/integration/config/tx_gitlab.config
157
159
  - spec/integration/hooks_spec.rb
158
160
  - spec/integration/payloads/github_postbody.json
159
161
  - spec/integration/payloads/github_postbody_release.json
162
+ - spec/integration/payloads/gitlab_postbody.json
160
163
  - spec/integration/triggers_spec.rb
161
164
  - spec/spec_helper.rb
162
165
  - spec/tgz_stream_response_spec.rb
@@ -196,8 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
199
  - !ruby/object:Gem::Version
197
200
  version: 1.3.1
198
201
  requirements: []
199
- rubyforge_project:
200
- rubygems_version: 2.7.6
202
+ rubygems_version: 3.0.6
201
203
  signing_key:
202
204
  specification_version: 4
203
205
  summary: An HTTP server for interacting with txgh.