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.
@@ -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"
@@ -14,7 +14,7 @@ module ZendeskAppsSupport
14
14
 
15
15
  DEPRECATED = '0.4'.freeze
16
16
  CURRENT = '0.5'.freeze
17
- FUTURE = nil
17
+ FUTURE = '1.0'.freeze
18
18
 
19
19
  TO_BE_SERVED = [ DEPRECATED, CURRENT, FUTURE ].compact.freeze
20
20
  VALID_FOR_UPDATE = [ CURRENT, FUTURE ].compact.freeze
@@ -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 #cccccc;\\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>"},
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.2.0
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-07-12 00:00:00.000000000 Z
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: 2.0.3
210
+ rubygems_version: 1.8.23
179
211
  signing_key:
180
- specification_version: 4
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=