deploygate 0.8.0 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/config/locales/en.yml +8 -27
- data/lib/deploygate/api/v1/base.rb +5 -1
- data/lib/deploygate/api/v1/user.rb +0 -24
- data/lib/deploygate/command_builder.rb +2 -0
- data/lib/deploygate/commands/add_devices.rb +1 -1
- data/lib/deploygate/commands/deploy/push.rb +1 -1
- data/lib/deploygate/commands/deploy.rb +1 -1
- data/lib/deploygate/commands/login.rb +10 -70
- data/lib/deploygate/user.rb +0 -11
- data/lib/deploygate/version.rb +1 -1
- data/lib/deploygate/xcode/analyze.rb +12 -2
- data/lib/deploygate/xcode/export.rb +11 -7
- data/lib/deploygate/xcode/ios.rb +7 -1
- data/lib/deploygate/xcode/member_centers/provisioning_profile.rb +11 -5
- data/lib/deploygate.rb +1 -0
- data/spec/deploygate/api/v1/user_spec.rb +0 -27
- data/spec/deploygate/xcode/export_spec.rb +25 -3
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a067b187ce090f469740902b25df05047db95908131057a995481c4a023b11bd
|
4
|
+
data.tar.gz: 8d67c1abb0a90436120bdfd45e0831b9002a7b2089c46a3d42cd3ac7d985143c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a10f3ec84688ac65572f3ffb77a70f231436ae8222a6d2c7534a6e5cfa126eca71b4c8f2319ca8f7583c4257ae90896605b093af69dbcdc353e70f667307303
|
7
|
+
data.tar.gz: e5abc3793a771f2c1ac96cbaa875a80ab47e665993c7f4a77790f45c983ab557fe4d94345e34d03c9b2ad2ecbfada109bc6e2cacc50881c983da038c54740745
|
data/.travis.yml
CHANGED
data/config/locales/en.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
---
|
2
2
|
en:
|
3
|
+
errors:
|
4
|
+
check_update_failure: 'Checking update failed'
|
5
|
+
account_not_found_error: 'Your account was not found. Please create it from https://deploygate.com'
|
3
6
|
command_builder:
|
4
7
|
name: 'dg'
|
5
8
|
description: 'Control DeployGate from your terminal.'
|
@@ -93,7 +96,7 @@ en:
|
|
93
96
|
$ dg login
|
94
97
|
print_login_user: 'User name: %{name}'
|
95
98
|
login:
|
96
|
-
|
99
|
+
start_login:
|
97
100
|
welcome: 'Welcome to DeployGate!'
|
98
101
|
email: 'Email: '
|
99
102
|
check_account: 'Checking for your account...'
|
@@ -103,28 +106,6 @@ en:
|
|
103
106
|
Could not log in to DeployGate.
|
104
107
|
Please try again.
|
105
108
|
success: 'Hello %{name}!'
|
106
|
-
create_account:
|
107
|
-
prompt: "Looks new to DeployGate. Let's set up your account, just choose your user name and password."
|
108
|
-
creating: 'Creating your account... '
|
109
|
-
error: |
|
110
|
-
Could not create your account.
|
111
|
-
Please try again.
|
112
|
-
success: 'done! Your account has been set up successfully.'
|
113
|
-
input_new_account_name:
|
114
|
-
input_user_name: 'Username: '
|
115
|
-
checking: 'Checking for availability... '
|
116
|
-
already_used_user_name: 'Sorry, %{user_name} was already taken. Please try again.'
|
117
|
-
success: 'Good, %{user_name} is available.'
|
118
|
-
input_new_account_password:
|
119
|
-
input_password: 'Password: '
|
120
|
-
input_same_password: 'Type the same password: '
|
121
|
-
error: "Passwords didn't match. Please type again."
|
122
|
-
check_terms:
|
123
|
-
terms_url: 'Terms of Service: https://deploygate.com/terms'
|
124
|
-
privacy_url: 'Privacy Policy: https://deploygate.com/terms/privacy'
|
125
|
-
note: "DeployGate properly manages your account information under GDPR, Japan's Personal Information Protection Act and our Privacy Policy."
|
126
|
-
text: 'I agree to the Terms of Service and Privacy Policy (y/n) '
|
127
|
-
error: 'You must agree to the Terms of Service and Privacy Policy.'
|
128
109
|
logout:
|
129
110
|
success: |
|
130
111
|
Logout success!
|
@@ -142,16 +123,16 @@ en:
|
|
142
123
|
choice: '%{team_name} %{team_id}'
|
143
124
|
check_local_certificates:
|
144
125
|
not_local_install_certificate:
|
145
|
-
error_message: 'Error: No applicable iPhone Distribution certificate found on your Mac.'
|
126
|
+
error_message: 'Error: No applicable iPhone Distribution or Apple Distribution certificate found on your Mac.'
|
146
127
|
note: |
|
147
|
-
No "iPhone Distribution" certificate and/or corresponding private key installed locally.
|
128
|
+
No "iPhone Distribution" or "Apple Distribution" certificate and/or corresponding private key installed locally.
|
148
129
|
To sign your application code, make sure you have installed them and available in your Keychain.
|
149
130
|
|
150
131
|
See also: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html
|
151
132
|
conflict_certificate:
|
152
133
|
error_message: 'Error: Too many certificates found.'
|
153
134
|
note: |
|
154
|
-
You have more than one "iPhone Distribution" certificate installed on your Mac.
|
135
|
+
You have more than one "iPhone Distribution" or "Apple Distribution" certificate installed on your Mac.
|
155
136
|
Please remove other unnecessary certificates from your Keychain.
|
156
137
|
clean_provisioning_profiles:
|
157
138
|
start: 'Cleaning local Provisioning Profiles...'
|
@@ -171,5 +152,5 @@ en:
|
|
171
152
|
Note: Your password will be stored to your Keychain and never be sent to DeployGate.
|
172
153
|
email: 'Email: '
|
173
154
|
provisioning_profile:
|
174
|
-
not_installed_certificate_error: 'No iPhone Distribution Certificate associated with private key was found in local Keychain'
|
155
|
+
not_installed_certificate_error: 'No iPhone Distribution or Apple Distribution Certificate associated with private key was found in local Keychain'
|
175
156
|
not_exist_uuid_provisioning_profile_error: 'No provisioning profile found for the specified UUID (%{uuid})'
|
@@ -45,7 +45,11 @@ module DeployGate
|
|
45
45
|
private
|
46
46
|
|
47
47
|
def client
|
48
|
-
|
48
|
+
timeout = 60 * 5 # 5 minutes
|
49
|
+
HTTPClient.new(agent_name: "dg/#{DeployGate::VERSION}").tap do |c|
|
50
|
+
c.receive_timeout = timeout
|
51
|
+
c.send_timeout = timeout
|
52
|
+
end
|
49
53
|
end
|
50
54
|
|
51
55
|
def headers
|
@@ -6,30 +6,6 @@ module DeployGate
|
|
6
6
|
ENDPOINT = '/users'
|
7
7
|
|
8
8
|
class << self
|
9
|
-
# @param [String] name
|
10
|
-
# @param [String] email
|
11
|
-
# @param [String] password
|
12
|
-
# @param [String] locale
|
13
|
-
# @return [Hash]
|
14
|
-
def create(name, email, password, locale = 'en')
|
15
|
-
res = Base.new().post(ENDPOINT, {:name => name, :email => email, :password => password, :locale => locale})
|
16
|
-
|
17
|
-
user_create_results = {
|
18
|
-
:error => res['error'],
|
19
|
-
:message => res['because']
|
20
|
-
}
|
21
|
-
|
22
|
-
results = res['results']
|
23
|
-
unless results.nil?
|
24
|
-
user_create_results.merge!({
|
25
|
-
:name => results['user']['name'],
|
26
|
-
:token => results['api_token']
|
27
|
-
})
|
28
|
-
end
|
29
|
-
|
30
|
-
user_create_results
|
31
|
-
end
|
32
|
-
|
33
9
|
# @param [String] name
|
34
10
|
# @param [String] email
|
35
11
|
# @return [Boolean]
|
@@ -6,7 +6,7 @@ module DeployGate
|
|
6
6
|
# @param [Array] args
|
7
7
|
# @param [Commander::Command::Options] options
|
8
8
|
def run(args, options)
|
9
|
-
Login.
|
9
|
+
Login.start_login() unless DeployGate::Session.new.login?
|
10
10
|
|
11
11
|
# push or build(android/ios)
|
12
12
|
args.push(Dir.pwd) if args.empty?
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module DeployGate
|
2
2
|
module Commands
|
3
3
|
class Login
|
4
|
+
class AccountNotFoundError < DeployGate::RavenIgnoreException; end
|
5
|
+
|
4
6
|
class << self
|
5
7
|
|
6
8
|
# @return [void]
|
@@ -8,31 +10,32 @@ module DeployGate
|
|
8
10
|
welcome()
|
9
11
|
|
10
12
|
if options.terminal
|
11
|
-
|
13
|
+
start_login()
|
12
14
|
else
|
13
15
|
DeployGate::BrowserLogin.new().start()
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
17
19
|
def welcome
|
18
|
-
puts I18n.t('commands.login.
|
20
|
+
puts I18n.t('commands.login.start_login.welcome')
|
19
21
|
print_deploygate_aa()
|
20
22
|
end
|
21
23
|
|
22
24
|
# @return [void]
|
23
|
-
|
25
|
+
# @raise [AccountNotFoundError] emailに一致するUserが存在しないとき
|
26
|
+
def start_login
|
24
27
|
puts ''
|
25
|
-
email = ask(I18n.t('commands.login.
|
28
|
+
email = ask(I18n.t('commands.login.start_login.email'))
|
26
29
|
|
27
30
|
puts ''
|
28
|
-
puts I18n.t('commands.login.
|
31
|
+
puts I18n.t('commands.login.start_login.check_account')
|
29
32
|
if DeployGate::User.registered?('', email)
|
30
33
|
puts ''
|
31
|
-
password = input_password(I18n.t('commands.login.
|
34
|
+
password = input_password(I18n.t('commands.login.start_login.input_password'))
|
32
35
|
puts ''
|
33
36
|
start(email, password)
|
34
37
|
else
|
35
|
-
|
38
|
+
raise AccountNotFoundError, HighLine.color(I18n.t('errors.account_not_found_error'))
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
@@ -56,69 +59,6 @@ module DeployGate
|
|
56
59
|
puts HighLine.color(I18n.t('commands.login.start.success', name: session.name), HighLine::GREEN)
|
57
60
|
end
|
58
61
|
|
59
|
-
# @param [String] email
|
60
|
-
# @return [void]
|
61
|
-
def create_account(email)
|
62
|
-
puts I18n.t('commands.login.create_account.prompt')
|
63
|
-
puts ''
|
64
|
-
|
65
|
-
name = input_new_account_name()
|
66
|
-
puts ''
|
67
|
-
|
68
|
-
password = input_new_account_password()
|
69
|
-
puts ''
|
70
|
-
|
71
|
-
unless check_terms
|
72
|
-
puts HighLine.color(I18n.t('commands.login.check_terms.error'), HighLine::RED)
|
73
|
-
exit 1
|
74
|
-
end
|
75
|
-
|
76
|
-
print I18n.t('commands.login.create_account.creating')
|
77
|
-
if DeployGate::User.create(name, email, password).nil?
|
78
|
-
puts HighLine.color(I18n.t('commands.login.create_account.error'), HighLine::RED)
|
79
|
-
raise 'User create error'
|
80
|
-
else
|
81
|
-
puts HighLine.color(I18n.t('commands.login.create_account.success'), HighLine::GREEN)
|
82
|
-
start(email, password)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
# @return [String]
|
87
|
-
def input_new_account_name
|
88
|
-
user_name = ask(I18n.t('commands.login.input_new_account_name.input_user_name'))
|
89
|
-
print I18n.t('commands.login.input_new_account_name.checking')
|
90
|
-
|
91
|
-
if DeployGate::User.registered?(user_name, '')
|
92
|
-
puts HighLine.color(I18n.t('commands.login.input_new_account_name.already_used_user_name', user_name: user_name), HighLine::RED)
|
93
|
-
return input_new_account_name()
|
94
|
-
else
|
95
|
-
puts HighLine.color(I18n.t('commands.login.input_new_account_name.success', user_name: user_name), HighLine::GREEN)
|
96
|
-
return user_name
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
# @return [String]
|
101
|
-
def input_new_account_password
|
102
|
-
password = input_password(I18n.t('commands.login.input_new_account_password.input_password'))
|
103
|
-
secound_password = input_password(I18n.t('commands.login.input_new_account_password.input_same_password'))
|
104
|
-
|
105
|
-
if password == secound_password
|
106
|
-
return password
|
107
|
-
else
|
108
|
-
puts HighLine.color(I18n.t('commands.login.input_new_account_password.error'), HighLine::RED)
|
109
|
-
return input_new_account_password()
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
# @return [boolean]
|
114
|
-
def check_terms
|
115
|
-
puts I18n.t('commands.login.check_terms.terms_url')
|
116
|
-
puts I18n.t('commands.login.check_terms.privacy_url')
|
117
|
-
puts I18n.t('commands.login.check_terms.note')
|
118
|
-
puts ''
|
119
|
-
HighLine.agree(I18n.t('commands.login.check_terms.text')) {|q| q.default = "n"}
|
120
|
-
end
|
121
|
-
|
122
62
|
# @return [String]
|
123
63
|
def input_password(message)
|
124
64
|
ask(message) { |q| q.echo = "*" }
|
data/lib/deploygate/user.rb
CHANGED
@@ -8,17 +8,6 @@ module DeployGate
|
|
8
8
|
@name = name
|
9
9
|
end
|
10
10
|
|
11
|
-
# @param [String] name
|
12
|
-
# @param [String] email
|
13
|
-
# @param [String] password
|
14
|
-
# @return [DeployGate::User]
|
15
|
-
def self.create(name, email, password)
|
16
|
-
locale = Locale.current.language
|
17
|
-
results = DeployGate::API::V1::User.create(name, email, password, locale)
|
18
|
-
return if results[:error]
|
19
|
-
DeployGate::User.new(results[:name])
|
20
|
-
end
|
21
|
-
|
22
11
|
# @param [String] name
|
23
12
|
# @param [String] email
|
24
13
|
# @return [Boolean]
|
data/lib/deploygate/version.rb
CHANGED
@@ -53,7 +53,7 @@ module DeployGate
|
|
53
53
|
identity
|
54
54
|
end
|
55
55
|
|
56
|
-
#
|
56
|
+
# TODO: Need to support UDID additions for watchOS and App Extension
|
57
57
|
# @return [String]
|
58
58
|
def target_bundle_identifier
|
59
59
|
bundle_identifier = nil
|
@@ -96,7 +96,17 @@ module DeployGate
|
|
96
96
|
|
97
97
|
Xcodeproj::Project.open(@xcodeproj).targets.each do |target|
|
98
98
|
target.build_configuration_list.build_configurations.each do |build_configuration|
|
99
|
-
|
99
|
+
# Used the following code as an example
|
100
|
+
# https://github.com/fastlane/fastlane/blob/2.148.1/gym/lib/gym/code_signing_mapping.rb#L138
|
101
|
+
current = build_configuration.build_settings
|
102
|
+
next if gym.test_target?(current)
|
103
|
+
sdk_root = build_configuration.resolve_build_setting("SDKROOT", target)
|
104
|
+
next unless gym.same_platform?(sdk_root)
|
105
|
+
next unless specified_configuration == build_configuration.name
|
106
|
+
|
107
|
+
# If SKIP_INSTALL is true, it is an app extension or watch app
|
108
|
+
next if current["SKIP_INSTALL"]
|
109
|
+
|
100
110
|
block.call(build_configuration, target)
|
101
111
|
end
|
102
112
|
end
|
@@ -80,7 +80,7 @@ module DeployGate
|
|
80
80
|
certificates = installed_certificates()
|
81
81
|
ids = []
|
82
82
|
certificates.each do |current|
|
83
|
-
next unless current.match(/iPhone Distribution:/)
|
83
|
+
next unless current.match(/iPhone Distribution:/) || current.match(/Apple Distribution:/)
|
84
84
|
begin
|
85
85
|
(ids << current.match(/.*\) (.*) \".*/)[1])
|
86
86
|
rescue
|
@@ -92,12 +92,12 @@ module DeployGate
|
|
92
92
|
end
|
93
93
|
|
94
94
|
# @return [Array]
|
95
|
-
def
|
95
|
+
def installed_distribution_conflicting_certificates_by(distribution_name)
|
96
96
|
certificates = installed_certificates()
|
97
97
|
names = []
|
98
98
|
certificates.each do |current|
|
99
99
|
begin
|
100
|
-
names << current.match(/(
|
100
|
+
names << current.match(/(#{distribution_name}:.*)/)[1]
|
101
101
|
rescue
|
102
102
|
end
|
103
103
|
end
|
@@ -106,7 +106,7 @@ module DeployGate
|
|
106
106
|
conflicting_certificates = []
|
107
107
|
certificates.each do |current|
|
108
108
|
begin
|
109
|
-
name = current.match(/(
|
109
|
+
name = current.match(/(#{distribution_name}:.*)/)[1]
|
110
110
|
next unless conflicting_names.include?(name)
|
111
111
|
conflicting_certificates << current
|
112
112
|
rescue
|
@@ -255,12 +255,16 @@ module DeployGate
|
|
255
255
|
exit
|
256
256
|
end
|
257
257
|
|
258
|
-
|
259
|
-
|
258
|
+
iphone_conflicting_certificates = installed_distribution_conflicting_certificates_by('iPhone Distribution')
|
259
|
+
apple_conflicting_certificates = installed_distribution_conflicting_certificates_by('Apple Distribution')
|
260
|
+
if iphone_conflicting_certificates.count > 0 || apple_conflicting_certificates.count > 0
|
260
261
|
puts HighLine.color(I18n.t('xcode.export.check_local_certificates.conflict_certificate.error_message'), HighLine::RED)
|
261
262
|
puts ''
|
262
263
|
puts I18n.t('xcode.export.check_local_certificates.conflict_certificate.note')
|
263
|
-
|
264
|
+
iphone_conflicting_certificates.each do |certificate|
|
265
|
+
puts certificate
|
266
|
+
end
|
267
|
+
apple_conflicting_certificates.each do |certificate|
|
264
268
|
puts certificate
|
265
269
|
end
|
266
270
|
puts ""
|
data/lib/deploygate/xcode/ios.rb
CHANGED
@@ -28,10 +28,16 @@ module DeployGate
|
|
28
28
|
|
29
29
|
values = {
|
30
30
|
export_method: export_method,
|
31
|
-
project: ios_analyze.xcodeproj,
|
32
31
|
configuration: build_configuration || DeployGate::Xcode::Analyze::DEFAULT_BUILD_CONFIGURATION,
|
33
32
|
scheme: target_scheme
|
34
33
|
}
|
34
|
+
|
35
|
+
if ios_analyze.build_workspace
|
36
|
+
values[:workspace] = ios_analyze.build_workspace
|
37
|
+
else
|
38
|
+
values[:project] = ios_analyze.xcodeproj
|
39
|
+
end
|
40
|
+
|
35
41
|
values[:codesigning_identity] = codesigning_identity if codesigning_identity
|
36
42
|
if allow_provisioning_updates
|
37
43
|
values[:xcargs] = '-allowProvisioningUpdates'
|
@@ -35,16 +35,22 @@ module DeployGate
|
|
35
35
|
|
36
36
|
# @return [Array]
|
37
37
|
def all_create
|
38
|
-
if @member_center.adhoc?
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
prod_certs = if @member_center.adhoc?
|
39
|
+
@member_center.launcher.certificate.all.select{|cert|
|
40
|
+
cert.class == Spaceship::Portal::Certificate::Production ||
|
41
|
+
cert.class == Spaceship::Portal::Certificate::AppleDistribution
|
42
|
+
}
|
43
|
+
else
|
44
|
+
@member_center.launcher.certificate.all.select{|cert|
|
45
|
+
cert.class == Spaceship::Portal::Certificate::InHouse
|
46
|
+
}
|
47
|
+
end
|
43
48
|
|
44
49
|
# check local install certificate
|
45
50
|
FileUtils.mkdir_p(CERTIFICATE_OUTPUT_PATH)
|
46
51
|
distribution_cert_ids = []
|
47
52
|
prod_certs.each do |cert|
|
53
|
+
next if cert.expires < Time.now
|
48
54
|
path = File.join(CERTIFICATE_OUTPUT_PATH, "#{cert.id}.cer")
|
49
55
|
raw_data = cert.download_raw
|
50
56
|
File.write(path, raw_data)
|
data/lib/deploygate.rb
CHANGED
@@ -1,31 +1,4 @@
|
|
1
1
|
describe DeployGate::API::V1::User do
|
2
|
-
describe "#create" do
|
3
|
-
it "success" do
|
4
|
-
name = 'test'
|
5
|
-
email = 'email'
|
6
|
-
password = 'password'
|
7
|
-
token = 'token'
|
8
|
-
response = {
|
9
|
-
:error => false,
|
10
|
-
:because => '',
|
11
|
-
:results => {
|
12
|
-
:user => {:name => name},
|
13
|
-
:api_token => token
|
14
|
-
}
|
15
|
-
}
|
16
|
-
stub_request(:post, "#{API_ENDPOINT}/users").
|
17
|
-
to_return(:body => response.to_json)
|
18
|
-
|
19
|
-
results = DeployGate::API::V1::User.create(name, email, password)
|
20
|
-
expect(results).to eq({
|
21
|
-
:error => response[:error],
|
22
|
-
:message => response[:because],
|
23
|
-
:name => name,
|
24
|
-
:token => token
|
25
|
-
})
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
2
|
describe "#registered?" do
|
30
3
|
it "registered" do
|
31
4
|
name = 'test'
|
@@ -61,6 +61,7 @@ describe DeployGate::Xcode::Export do
|
|
61
61
|
before do
|
62
62
|
@distribution_certificate_id = 'distribution_certificate_id'
|
63
63
|
@distribution_certificate = " 1) #{@distribution_certificate_id} \"iPhone Distribution: DeployGate Inc.\""
|
64
|
+
@apple_distribution_certificate = " 1) #{@distribution_certificate_id} \"Apple Distribution: DeployGate Inc.\""
|
64
65
|
@not_distribution_certificate = " 1) xxxxxxxxxxxxxx \"iPhone Developer: DeployGate Inc.\""
|
65
66
|
end
|
66
67
|
it "not installed distribution certificate" do
|
@@ -74,23 +75,44 @@ describe DeployGate::Xcode::Export do
|
|
74
75
|
ids = DeployGate::Xcode::Export.installed_distribution_certificate_ids
|
75
76
|
expect(ids).to eql([@distribution_certificate_id])
|
76
77
|
end
|
78
|
+
|
79
|
+
it "installed apple distribution certificate" do
|
80
|
+
allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@apple_distribution_certificate, @not_distribution_certificate])
|
81
|
+
|
82
|
+
ids = DeployGate::Xcode::Export.installed_distribution_certificate_ids
|
83
|
+
expect(ids).to eql([@distribution_certificate_id])
|
84
|
+
end
|
77
85
|
end
|
78
86
|
|
79
|
-
describe "#
|
87
|
+
describe "#installed_distribution_conflicting_certificates_by" do
|
80
88
|
before do
|
81
89
|
@distribution_certificate = " 1) xxxxxxxxxx \"iPhone Distribution: DeployGate Inc.\""
|
82
90
|
@distribution_certificate2 = " 2) yyyyyyyyyyyy \"iPhone Distribution: DeployGate Inc.\""
|
83
91
|
@distribution_certificate3 = " 2) yyyyyyyyyyyy \"iPhone Distribution: DeployGate Inc2.\""
|
92
|
+
|
93
|
+
@apple_distribution_certificate = " 1) xxxxxxxxxxx \"Apple Distribution: DeployGate Inc.\""
|
94
|
+
@apple_distribution_certificate2 = " 2) yyyyyyyyyyyy \"Apple Distribution: DeployGate Inc.\""
|
95
|
+
@apple_distribution_certificate3 = " 2) yyyyyyyyyyyy \"Apple Distribution: DeployGate Inc2.\""
|
84
96
|
end
|
85
97
|
|
86
98
|
it "conflicting" do
|
87
99
|
allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@distribution_certificate, @distribution_certificate2])
|
88
|
-
expect(DeployGate::Xcode::Export.
|
100
|
+
expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('iPhone Distribution').count).to eql 2
|
101
|
+
end
|
102
|
+
|
103
|
+
it "conflicting by apple" do
|
104
|
+
allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@apple_distribution_certificate, @apple_distribution_certificate2])
|
105
|
+
expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('Apple Distribution').count).to eql 2
|
89
106
|
end
|
90
107
|
|
91
108
|
it "not conflicting" do
|
92
109
|
allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@distribution_certificate, @distribution_certificate3])
|
93
|
-
expect(DeployGate::Xcode::Export.
|
110
|
+
expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('iPhone Distribution').count).to eql 0
|
111
|
+
end
|
112
|
+
|
113
|
+
it "not conflicting by apple" do
|
114
|
+
allow(DeployGate::Xcode::Export).to receive(:installed_certificates).and_return([@apple_distribution_certificate, @apple_distribution_certificate3])
|
115
|
+
expect(DeployGate::Xcode::Export.installed_distribution_conflicting_certificates_by('Apple Distribution').count).to eql 0
|
94
116
|
end
|
95
117
|
end
|
96
118
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deploygate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- deploygate
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -424,8 +424,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
424
424
|
- !ruby/object:Gem::Version
|
425
425
|
version: '0'
|
426
426
|
requirements: []
|
427
|
-
|
428
|
-
rubygems_version: 2.7.7
|
427
|
+
rubygems_version: 3.0.8
|
429
428
|
signing_key:
|
430
429
|
specification_version: 4
|
431
430
|
summary: A command-line interface for DeployGate
|