zendesk_apps_support 1.2.0 → 1.3.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.
- data/config/locales/en.yml +11 -0
- data/config/locales/translations/zendesk_apps_support.yml +16 -0
- data/lib/zendesk_apps_support/app_version.rb +1 -1
- data/lib/zendesk_apps_support/package.rb +2 -1
- data/lib/zendesk_apps_support/validations/manifest.rb +29 -0
- data/spec/package_spec.rb +2 -2
- data/spec/validations/manifest_spec.rb +20 -0
- metadata +37 -5
- checksums.yaml +0 -15
data/config/locales/en.yml
CHANGED
@@ -15,6 +15,10 @@ en:
|
|
15
15
|
missing:
|
16
16
|
one: ! 'Missing required field in manifest: %{missing_keys}'
|
17
17
|
other: ! 'Missing required fields in manifest: %{missing_keys}'
|
18
|
+
oauth_keys:
|
19
|
+
missing:
|
20
|
+
one: ! 'Missing required oauth field in manifest: %{missing_keys}'
|
21
|
+
other: ! 'Missing required oauth fields in manifest: %{missing_keys}'
|
18
22
|
missing_source: Could not find app.js
|
19
23
|
style_in_template: <style> tag in %{template}. Use an app.css file instead.
|
20
24
|
invalid_default_locale: ! '%{defaultLocale} is not a valid default locale.
|
@@ -27,6 +31,8 @@ en:
|
|
27
31
|
invalid_hidden_parameter:
|
28
32
|
one: ! '%{invalid_params} is set to hidden and cannot be required.'
|
29
33
|
other: ! '%{invalid_params} are set to hidden and cannot be required.'
|
34
|
+
invalid_version: ! '%{target_version} is not a valid framework version.
|
35
|
+
Available versions are: %{available_versions}.'
|
30
36
|
parameters_not_an_array: App parameters must be an array.
|
31
37
|
duplicate_parameters: ! 'Duplicate app parameters defined: %{duplicate_parameters}'
|
32
38
|
translation:
|
@@ -38,3 +44,8 @@ en:
|
|
38
44
|
invalid_type_parameter:
|
39
45
|
one: ! '%{invalid_types} is an invalid parameter type.'
|
40
46
|
other: ! '%{invalid_types} are invalid parameter types.'
|
47
|
+
warning:
|
48
|
+
app_build:
|
49
|
+
deprecated_version: You are targeting a deprecated version of the framework,
|
50
|
+
your App will still work but might break as soon as the new framework
|
51
|
+
version is deployed.
|
@@ -31,6 +31,14 @@ parts:
|
|
31
31
|
key: "txt.apps.admin.error.app_build.manifest_keys.missing.other"
|
32
32
|
title: "App builder job: missing manifest fields error"
|
33
33
|
value: "Missing required fields in manifest: %{missing_keys}"
|
34
|
+
- translation:
|
35
|
+
key: "txt.apps.admin.error.app_build.oauth_keys.missing.one"
|
36
|
+
title: "App builder job: missing oauth fields error"
|
37
|
+
value: "Missing required oauth field in manifest: %{missing_keys}"
|
38
|
+
- translation:
|
39
|
+
key: "txt.apps.admin.error.app_build.oauth_keys.missing.other"
|
40
|
+
title: "App builder job: missing oauth fields error"
|
41
|
+
value: "Missing required oauth fields in manifest: %{missing_keys}"
|
34
42
|
- translation:
|
35
43
|
key: "txt.apps.admin.error.app_build.missing_source"
|
36
44
|
title: "App builder job: missing app.js error"
|
@@ -63,6 +71,14 @@ parts:
|
|
63
71
|
key: "txt.apps.admin.error.app_build.invalid_hidden_parameter.other"
|
64
72
|
title: "App builder job: hidden parameters set to required"
|
65
73
|
value: "%{invalid_params} are set to hidden and cannot be required."
|
74
|
+
- translation:
|
75
|
+
key: "txt.apps.admin.warning.app_build.deprecated_version"
|
76
|
+
title: "App builder job: deprecated version specified"
|
77
|
+
value: 'You are targeting a deprecated version of the framework, your App will still work but might break as soon as the new framework version is deployed.'
|
78
|
+
- translation:
|
79
|
+
key: "txt.apps.admin.error.app_build.invalid_version"
|
80
|
+
title: "App builder job: invalid framework version"
|
81
|
+
value: "%{target_version} is not a valid framework version. Available versions are: %{available_versions}."
|
66
82
|
- translation:
|
67
83
|
key: "txt.apps.admin.error.app_build.parameters_not_an_array"
|
68
84
|
title: "App builder job: app parameters must be an array"
|
@@ -8,10 +8,11 @@ module ZendeskAppsSupport
|
|
8
8
|
DEFAULT_SCSS = File.read(File.expand_path('../default_styles.scss', __FILE__))
|
9
9
|
SRC_TEMPLATE = Erubis::Eruby.new( File.read(File.expand_path('../src.js.erb', __FILE__)) )
|
10
10
|
|
11
|
-
attr_reader :root
|
11
|
+
attr_reader :root, :warnings
|
12
12
|
|
13
13
|
def initialize(dir)
|
14
14
|
@root = Pathname.new(File.expand_path(dir))
|
15
|
+
@warnings = []
|
15
16
|
end
|
16
17
|
|
17
18
|
def validate
|
@@ -5,6 +5,7 @@ module ZendeskAppsSupport
|
|
5
5
|
module Manifest
|
6
6
|
|
7
7
|
REQUIRED_MANIFEST_FIELDS = %w( author defaultLocale location frameworkVersion).freeze
|
8
|
+
OAUTH_REQUIRED_FIELDS = %w( client_id client_secret authorize_uri access_token_uri ).freeze
|
8
9
|
LOCATIONS_AVAILABLE = %w( nav_bar ticket_sidebar new_ticket_sidebar user_sidebar ).freeze
|
9
10
|
TYPES_AVAILABLE = %W(text password checkbox url number multiline hidden).freeze
|
10
11
|
|
@@ -20,6 +21,8 @@ module ZendeskAppsSupport
|
|
20
21
|
errors << missing_keys_error(manifest)
|
21
22
|
errors << default_locale_error(manifest, package)
|
22
23
|
errors << invalid_location_error(manifest)
|
24
|
+
errors << invalid_version_error(manifest, package)
|
25
|
+
errors << oauth_error(manifest)
|
23
26
|
errors << parameters_error(manifest)
|
24
27
|
errors << invalid_hidden_parameter_error(manifest)
|
25
28
|
errors << invalid_type_error(manifest)
|
@@ -31,6 +34,19 @@ module ZendeskAppsSupport
|
|
31
34
|
|
32
35
|
private
|
33
36
|
|
37
|
+
def oauth_error(manifest)
|
38
|
+
return unless manifest['oauth']
|
39
|
+
|
40
|
+
missing = OAUTH_REQUIRED_FIELDS.select do |key|
|
41
|
+
manifest['oauth'][key].nil? || manifest['oauth'][key].empty?
|
42
|
+
end
|
43
|
+
|
44
|
+
if missing.any?
|
45
|
+
ValidationError.new('oauth_keys.missing', :missing_keys => missing.join(', '), :count => missing.length)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
34
50
|
def parameters_error(manifest)
|
35
51
|
return unless manifest['parameters']
|
36
52
|
|
@@ -73,6 +89,19 @@ module ZendeskAppsSupport
|
|
73
89
|
end
|
74
90
|
end
|
75
91
|
|
92
|
+
def invalid_version_error(manifest, package)
|
93
|
+
valid_to_serve = AppVersion::TO_BE_SERVED
|
94
|
+
target_version = manifest['frameworkVersion']
|
95
|
+
|
96
|
+
if target_version == AppVersion::DEPRECATED
|
97
|
+
package.warnings << I18n.t('txt.apps.admin.warning.app_build.deprecated_version')
|
98
|
+
end
|
99
|
+
|
100
|
+
unless valid_to_serve.include?(target_version)
|
101
|
+
return ValidationError.new(:invalid_version, :target_version => target_version, :available_versions => valid_to_serve.join(', '))
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
76
105
|
def invalid_hidden_parameter_error(manifest)
|
77
106
|
invalid_params = []
|
78
107
|
|
data/spec/package_spec.rb
CHANGED
@@ -68,7 +68,7 @@ describe ZendeskAppsSupport::Package do
|
|
68
68
|
email: "john@example.com"
|
69
69
|
},
|
70
70
|
translations: {"app":{\"name\":\"Buddha Machine\"}},
|
71
|
-
templates: {"layout":"<style>\\n.app-0 header {\\n border-bottom: 1px dotted #
|
71
|
+
templates: {"layout":"<style>\\n.app-0 header {\\n border-bottom: 1px dotted #CCC;\\n margin-bottom: 12px; }\\n .app-0 header h3 {\\n line-height: 30px; }\\n .app-0 header hr {\\n margin-top: 0; }\\n .app-0 header .logo {\\n background: transparent url(\\"http://localhost:4567/logo-small.png\\") no-repeat;\\n background-size: 25px 25px;\\n float: right;\\n height: 25px;\\n width: 25px; }\\n .app-0 header .app-warning-icon {\\n cursor: pointer;\\n float: right;\\n margin-left: 2px;\\n padding: 5px; }\\n.app-0 h3 {\\n font-size: 14px; }\\n.app-0 footer {\\n background: none;\\n border: 0; }\\n.app-0 h1 {\\n color: red; }\\n .app-0 h1 span {\\n color: green; }\\n</style>\\n<header>\\n <span class=\\"logo\\"/>\\n <h3>{{setting \\"name\\"}}</h3>\\n</header>\\n<section data-main/>\\n<footer>\\n <a href=\\"mailto:{{author.email}}\\">\\n {{author.name}}\\n </a>\\n</footer>\\n</div>"},
|
72
72
|
frameworkVersion: "0.5"
|
73
73
|
});
|
74
74
|
|
@@ -81,4 +81,4 @@ HERE
|
|
81
81
|
js.should == expected
|
82
82
|
end
|
83
83
|
end
|
84
|
-
end
|
84
|
+
end
|
@@ -65,6 +65,16 @@ describe ZendeskAppsSupport::Validations::Manifest do
|
|
65
65
|
locations_error.should_not be_nil
|
66
66
|
end
|
67
67
|
|
68
|
+
it 'should have an error when the version is not supported' do
|
69
|
+
manifest = { 'frameworkVersion' => '0.7' }
|
70
|
+
manifest_file = mock('AppFile', :relative_path => 'manifest.json', :read => JSON.dump(manifest))
|
71
|
+
package = mock('Package', :files => [manifest_file])
|
72
|
+
errors = ZendeskAppsSupport::Validations::Manifest.call(package)
|
73
|
+
|
74
|
+
version_error = errors.find { |e| e.to_s =~ /not a valid framework version/ }
|
75
|
+
version_error.should_not be_nil
|
76
|
+
end
|
77
|
+
|
68
78
|
it 'should have an error when a hidden parameter is set to required' do
|
69
79
|
manifest = {
|
70
80
|
'parameters' => [
|
@@ -90,11 +100,21 @@ describe ZendeskAppsSupport::Validations::Manifest do
|
|
90
100
|
errors.first().to_s.should =~ /^manifest is not proper JSON/
|
91
101
|
end
|
92
102
|
|
103
|
+
it "should have an error when required oauth fields are missing" do
|
104
|
+
oauth_hash = {
|
105
|
+
"oauth" => {}
|
106
|
+
}
|
107
|
+
errors = ZendeskAppsSupport::Validations::Manifest.call(create_package(default_required_params.merge(oauth_hash)))
|
108
|
+
oauth_error = errors.find { |e| e.to_s =~ /oauth field/ }
|
109
|
+
oauth_error.to_s.should == "Missing required oauth fields in manifest: client_id, client_secret, authorize_uri, access_token_uri"
|
110
|
+
end
|
111
|
+
|
93
112
|
context 'with invalid parameters' do
|
94
113
|
|
95
114
|
before do
|
96
115
|
ZendeskAppsSupport::Validations::Manifest.stub(:default_locale_error)
|
97
116
|
ZendeskAppsSupport::Validations::Manifest.stub(:invalid_location_error)
|
117
|
+
ZendeskAppsSupport::Validations::Manifest.stub(:invalid_version_error)
|
98
118
|
end
|
99
119
|
|
100
120
|
it 'has an error when the app parameters are not an array' do
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk_apps_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- James A. Rosen
|
@@ -10,11 +11,12 @@ authors:
|
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date: 2013-
|
14
|
+
date: 2013-08-14 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: i18n
|
17
18
|
requirement: !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
18
20
|
requirements:
|
19
21
|
- - ! '>='
|
20
22
|
- !ruby/object:Gem::Version
|
@@ -22,6 +24,7 @@ dependencies:
|
|
22
24
|
type: :runtime
|
23
25
|
prerelease: false
|
24
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
25
28
|
requirements:
|
26
29
|
- - ! '>='
|
27
30
|
- !ruby/object:Gem::Version
|
@@ -29,6 +32,7 @@ dependencies:
|
|
29
32
|
- !ruby/object:Gem::Dependency
|
30
33
|
name: multi_json
|
31
34
|
requirement: !ruby/object:Gem::Requirement
|
35
|
+
none: false
|
32
36
|
requirements:
|
33
37
|
- - ! '>='
|
34
38
|
- !ruby/object:Gem::Version
|
@@ -36,6 +40,7 @@ dependencies:
|
|
36
40
|
type: :runtime
|
37
41
|
prerelease: false
|
38
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
39
44
|
requirements:
|
40
45
|
- - ! '>='
|
41
46
|
- !ruby/object:Gem::Version
|
@@ -43,6 +48,7 @@ dependencies:
|
|
43
48
|
- !ruby/object:Gem::Dependency
|
44
49
|
name: sass
|
45
50
|
requirement: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
46
52
|
requirements:
|
47
53
|
- - ! '>='
|
48
54
|
- !ruby/object:Gem::Version
|
@@ -50,6 +56,7 @@ dependencies:
|
|
50
56
|
type: :runtime
|
51
57
|
prerelease: false
|
52
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
53
60
|
requirements:
|
54
61
|
- - ! '>='
|
55
62
|
- !ruby/object:Gem::Version
|
@@ -57,6 +64,7 @@ dependencies:
|
|
57
64
|
- !ruby/object:Gem::Dependency
|
58
65
|
name: json
|
59
66
|
requirement: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
60
68
|
requirements:
|
61
69
|
- - ~>
|
62
70
|
- !ruby/object:Gem::Version
|
@@ -64,6 +72,7 @@ dependencies:
|
|
64
72
|
type: :runtime
|
65
73
|
prerelease: false
|
66
74
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
67
76
|
requirements:
|
68
77
|
- - ~>
|
69
78
|
- !ruby/object:Gem::Version
|
@@ -71,6 +80,7 @@ dependencies:
|
|
71
80
|
- !ruby/object:Gem::Dependency
|
72
81
|
name: erubis
|
73
82
|
requirement: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
74
84
|
requirements:
|
75
85
|
- - ! '>='
|
76
86
|
- !ruby/object:Gem::Version
|
@@ -78,6 +88,7 @@ dependencies:
|
|
78
88
|
type: :runtime
|
79
89
|
prerelease: false
|
80
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
81
92
|
requirements:
|
82
93
|
- - ! '>='
|
83
94
|
- !ruby/object:Gem::Version
|
@@ -85,6 +96,7 @@ dependencies:
|
|
85
96
|
- !ruby/object:Gem::Dependency
|
86
97
|
name: jshintrb
|
87
98
|
requirement: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
88
100
|
requirements:
|
89
101
|
- - '='
|
90
102
|
- !ruby/object:Gem::Version
|
@@ -92,6 +104,7 @@ dependencies:
|
|
92
104
|
type: :runtime
|
93
105
|
prerelease: false
|
94
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
95
108
|
requirements:
|
96
109
|
- - '='
|
97
110
|
- !ruby/object:Gem::Version
|
@@ -99,6 +112,7 @@ dependencies:
|
|
99
112
|
- !ruby/object:Gem::Dependency
|
100
113
|
name: rspec
|
101
114
|
requirement: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
102
116
|
requirements:
|
103
117
|
- - ! '>='
|
104
118
|
- !ruby/object:Gem::Version
|
@@ -106,10 +120,27 @@ dependencies:
|
|
106
120
|
type: :development
|
107
121
|
prerelease: false
|
108
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
109
124
|
requirements:
|
110
125
|
- - ! '>='
|
111
126
|
- !ruby/object:Gem::Version
|
112
127
|
version: '0'
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: bump
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ~>
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: 0.4.0
|
136
|
+
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ~>
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 0.4.0
|
113
144
|
description: Support to help you develop Zendesk Apps.
|
114
145
|
email:
|
115
146
|
- dev@zendesk.com
|
@@ -158,26 +189,27 @@ files:
|
|
158
189
|
homepage: http://github.com/zendesk/zendesk_apps_support
|
159
190
|
licenses:
|
160
191
|
- Apache License Version 2.0
|
161
|
-
metadata: {}
|
162
192
|
post_install_message:
|
163
193
|
rdoc_options: []
|
164
194
|
require_paths:
|
165
195
|
- lib
|
166
196
|
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
167
198
|
requirements:
|
168
199
|
- - ! '>='
|
169
200
|
- !ruby/object:Gem::Version
|
170
201
|
version: '0'
|
171
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
172
204
|
requirements:
|
173
205
|
- - ! '>='
|
174
206
|
- !ruby/object:Gem::Version
|
175
207
|
version: 1.3.6
|
176
208
|
requirements: []
|
177
209
|
rubyforge_project:
|
178
|
-
rubygems_version:
|
210
|
+
rubygems_version: 1.8.23
|
179
211
|
signing_key:
|
180
|
-
specification_version:
|
212
|
+
specification_version: 3
|
181
213
|
summary: Support to help you develop Zendesk Apps.
|
182
214
|
test_files:
|
183
215
|
- spec/app/app.css
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
MGU4ZDQ2YzkxOWEzNmM2NjJjNDNiZmYzODZjOTdhNmM5MGE3YjA4ZQ==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OGU3MTU0YmJhNDQzODEzMWZhODA0ZmU2YWYxOWYwZWM0OGQ3ZTBkYw==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZWNlZWNjZDg3NzNlNDIxNjc5OWRhZWFlMzBkMWQ3OTUyOGM1MWZlOTYyNjJl
|
10
|
-
NWQ3MjQ5ODJiYzFiNzRmOWZiOTE3ZGY4N2Y1OTZhY2U2ZjdiMzJjYTk1MTky
|
11
|
-
YjEwNGJjYmNkOTk0NzJlN2ViZTRmMjJjMWVlNzIyNTY0NWMxZjI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MGQ0Njk5YmIxMTMzYmU3YTdiYzNkN2VmMTMyNmIzOWU4NjEyZDk2ZGY2NWVm
|
14
|
-
MzFhZTUzNmMyMGM1NjAwMWEyZTg1MGM5NzNkMTVjMDA4MWE0YTI4NjEyZjQx
|
15
|
-
Zjg5ZjE1ZmZkMzcwYTE4MDJkNjFhYmZjYWNmY2QwODkwMzFhZDY=
|