dpl-testfairy 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
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