dpl-testfairy 1.9.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3375af534c7e5824cca093216e8eae6a628f9f8c
4
+ data.tar.gz: b41ecaf0e0f95be4eda00ee7a6bb9640c8908981
5
+ SHA512:
6
+ metadata.gz: a877de899884a558135b39c7ecea3a1cc2162b078deab6a1154475532e064d04195f5f5f4a194ebbd77b1211e45232dba35f5a3d13ae83c1d5cef353c86af389
7
+ data.tar.gz: 46d7fa5bac001fcd3a83fd4831a8980f832c9201f288d8abf8e408379720417444a5bad17c3a58235df3b904b7e917016e1c2167ad21f83b841027c0cf4c3c5a
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'testfairy', [['multipart-post', '2.0.0']]
@@ -0,0 +1,109 @@
1
+ module DPL
2
+ class Provider
3
+ class TestFairy < Provider
4
+
5
+ require "net/http"
6
+ require 'net/http/post/multipart'
7
+ require 'json'
8
+
9
+
10
+ VERSION = "0.2"
11
+ TAG = "-TestFairy-"
12
+ SERVER = "http://api.testfairy.com"
13
+ UPLOAD_URL_PATH = "/api/upload";
14
+
15
+ def check_auth
16
+ if !options[:app_file]
17
+ error 'App file is missing'
18
+ end
19
+ puts "api-key = #{option(:api_key).gsub(/[123456789]/, '*')} symbols-file = #{options[:symbols_file]}"
20
+ end
21
+
22
+ def needs_key?
23
+ false
24
+ end
25
+
26
+ def push_app
27
+ puts "push_app #{TAG}"
28
+ response = upload_app
29
+ puts "Upload success!, check your build on #{response['build_url']}"
30
+ end
31
+
32
+ def android?
33
+ option(:app_file).include? "apk"
34
+ end
35
+
36
+
37
+ private
38
+
39
+ def upload_app
40
+ uploadUrl = SERVER + UPLOAD_URL_PATH
41
+ params = get_params
42
+ post uploadUrl, params
43
+ end
44
+
45
+ def post url, params
46
+ puts "Upload parameters = #{get_printable_params params} \nto #{url}"
47
+ uri = URI.parse(url)
48
+ request = Net::HTTP::Post::Multipart.new(uri.path, params, 'User-Agent' => "Travis plugin version=#{VERSION}")
49
+ res = Net::HTTP.start(uri.host, uri.port) do |http|
50
+ http.request(request)
51
+ end
52
+ puts res.body
53
+ resBody = JSON.parse(res.body)
54
+ if (resBody['status'] == 'fail')
55
+ raise Error, resBody['message']
56
+ end
57
+ return resBody
58
+ end
59
+
60
+ def get_printable_params params
61
+ paramsToPrint = params.clone
62
+ paramsToPrint['api_key'] = paramsToPrint['api_key'].gsub(/[123456789]/, '*')
63
+ paramsToPrint['apk_file'] = paramsToPrint['apk_file'].path()
64
+ JSON.pretty_generate(paramsToPrint)
65
+ end
66
+
67
+ def get_params
68
+ params = {'api_key' => "#{option(:api_key)}"}
69
+ add_file_param params, 'apk_file', option(:app_file)
70
+ add_file_param params, 'symbols_file', options[:symbols_file]
71
+ add_param params, 'video-quality', options[:video_quality]
72
+ add_param params, 'screenshot-interval', options[:screenshot_interval]
73
+ add_param params, 'max-duration', options[:max_duration]
74
+ add_param params, 'testers-groups', options[:testers_groups]
75
+ add_param params, 'metrics', options[:metrics]
76
+ add_boolean_param params, 'data-only-wifi', options[:data_only_wifi]
77
+ add_boolean_param params, 'record-on-background', options[:record_on_background]
78
+ add_boolean_param params, 'video', options[:video]
79
+ add_boolean_param params, 'notify', options[:notify]
80
+ add_boolean_param params, 'auto-update', options[:auto_update]
81
+
82
+ travisCommitRange = context.env.fetch('TRAVIS_COMMIT_RANGE',nil)
83
+ if !travisCommitRange.nil?
84
+ changelog = %x[git log --pretty=oneline --abbrev-commit #{travisCommitRange}]
85
+ add_param params, 'changelog', changelog
86
+ end
87
+ params
88
+ end
89
+
90
+ def add_file_param params, fileName, filePath
91
+ if (!filePath.nil? && !filePath.empty?)
92
+ params[fileName] = UploadIO.new(File.new(filePath), "", filePath.split("/").last)
93
+ end
94
+ end
95
+
96
+ def add_param params, paramName, param
97
+ if (!param.nil? && !param.empty?)
98
+ params[paramName] = param
99
+ end
100
+ end
101
+
102
+ def add_boolean_param params, paramName, param
103
+ if (!param.nil?)
104
+ params[paramName] = (param == true) ? "on" : "off"
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+ require 'dpl/provider/testfairy'
3
+
4
+ describe DPL::Provider::TestFairy do
5
+
6
+ before (:all) do
7
+
8
+ @local_android_app = '/tmp/android.apk'
9
+ %x[curl -Lso #{@local_android_app} http://www.testfairy.com/support-files/travis/dpl/android.apk]
10
+
11
+ @local_ios_app = '/tmp/ios.ipa'
12
+ %x[curl -Lso #{@local_ios_app} http://www.testfairy.com/support-files/travis/dpl/Empty.ipa]
13
+
14
+ end
15
+
16
+ let :context do
17
+ DummyContext.new
18
+ end
19
+
20
+ subject :provider do
21
+ # the account is travis-test@testfairy.com
22
+ described_class.new(context, :api_key => '4b85a2c03ba6026f4e22640a0432638180e1d1ea', :video => "true", :video_quality => 'low')
23
+ end
24
+
25
+
26
+ describe "#check_auth" do
27
+
28
+ example "check_auth without app_file" do
29
+ expect {provider.check_auth}.to raise_error("App file is missing")
30
+ end
31
+
32
+ example "check_auth with app_file" do
33
+ provider.options.update(:app_file => @local_android_app)
34
+ provider.check_auth
35
+ end
36
+ end
37
+
38
+ describe "#needs_key?" do
39
+ example do
40
+ expect(provider.needs_key?).to eq(false)
41
+ end
42
+ end
43
+
44
+ describe "#push_app" do
45
+ example "push_app without app_file" do
46
+ expect {provider.check_auth }.to raise_error("App file is missing")
47
+ end
48
+
49
+ example "push_app with app_file" do
50
+ provider.options.update(:app_file => @local_android_app)
51
+ provider.push_app
52
+ end
53
+
54
+ example "push_app with iOS app_file" do
55
+ provider.options.update(:app_file => @local_ios_app)
56
+ provider.push_app
57
+ end
58
+
59
+ example "push_app with notifify param" do
60
+ provider.options.update(:app_file => @local_ios_app)
61
+ provider.options.update(:notify => true)
62
+ provider.push_app
63
+ end
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,173 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dpl-testfairy
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Konstantin Haase
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dpl
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: multipart-post
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-its
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: json_pure
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: tins
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: highline
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: deploy tool abstraction for clients
140
+ email: konstantin.mailinglists@googlemail.com
141
+ executables: []
142
+ extensions: []
143
+ extra_rdoc_files: []
144
+ files:
145
+ - dpl-testfairy.gemspec
146
+ - lib/dpl/provider/testfairy.rb
147
+ - spec/provider/testfairy_spec.rb
148
+ homepage: https://github.com/travis-ci/dpl
149
+ licenses:
150
+ - MIT
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '2.2'
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.6.13
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: deploy tool
172
+ test_files:
173
+ - spec/provider/testfairy_spec.rb