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 +7 -0
- data/dpl-testfairy.gemspec +3 -0
- data/lib/dpl/provider/testfairy.rb +109 -0
- data/spec/provider/testfairy_spec.rb +65 -0
- metadata +173 -0
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,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
|