lti_provider_engine 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +145 -0
  3. data/Rakefile +28 -0
  4. data/app/controllers/lti_provider/application_controller.rb +5 -0
  5. data/app/controllers/lti_provider/lti_controller.rb +61 -0
  6. data/app/models/lti_provider/launch.rb +105 -0
  7. data/app/views/layouts/lti_provider/application.html.erb +12 -0
  8. data/app/views/lti_provider/lti/cookie_test.html.erb +4 -0
  9. data/config/lti.yml.example +13 -0
  10. data/config/lti_xml.yml.example +22 -0
  11. data/config/routes.rb +6 -0
  12. data/db/migrate/20130319050003_create_lti_provider_launches.rb +11 -0
  13. data/lib/lti_provider.rb +20 -0
  14. data/lib/lti_provider/config.rb +1 -0
  15. data/lib/lti_provider/engine.rb +19 -0
  16. data/lib/lti_provider/lti_application.rb +56 -0
  17. data/lib/lti_provider/lti_config.rb +28 -0
  18. data/lib/lti_provider/lti_xml_config.rb +23 -0
  19. data/lib/lti_provider/version.rb +3 -0
  20. data/lib/lti_provider/xml_config.rb +1 -0
  21. data/lib/tasks/lti_provider_tasks.rake +4 -0
  22. data/spec/controllers/lti_provider/lti_controller_spec.rb +141 -0
  23. data/spec/dummy/Rakefile +7 -0
  24. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  25. data/spec/dummy/app/controllers/welcome_controller.rb +5 -0
  26. data/spec/dummy/config.ru +4 -0
  27. data/spec/dummy/config/application.rb +58 -0
  28. data/spec/dummy/config/boot.rb +10 -0
  29. data/spec/dummy/config/cucumber.yml +8 -0
  30. data/spec/dummy/config/database.yml +25 -0
  31. data/spec/dummy/config/environment.rb +5 -0
  32. data/spec/dummy/config/environments/development.rb +37 -0
  33. data/spec/dummy/config/environments/production.rb +67 -0
  34. data/spec/dummy/config/environments/test.rb +37 -0
  35. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  36. data/spec/dummy/config/initializers/inflections.rb +15 -0
  37. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  38. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  39. data/spec/dummy/config/initializers/session_store.rb +8 -0
  40. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/spec/dummy/config/locales/en.yml +5 -0
  42. data/spec/dummy/config/lti.yml +13 -0
  43. data/spec/dummy/config/lti_xml.yml +24 -0
  44. data/spec/dummy/config/routes.rb +4 -0
  45. data/spec/dummy/db/development.sqlite3 +0 -0
  46. data/spec/dummy/db/migrate/20130319050206_create_lti_provider_launches.lti_provider.rb +12 -0
  47. data/spec/dummy/db/schema.rb +24 -0
  48. data/spec/dummy/db/test.sqlite3 +0 -0
  49. data/spec/dummy/log/development.log +266 -0
  50. data/spec/dummy/log/test.log +3643 -0
  51. data/spec/dummy/public/404.html +26 -0
  52. data/spec/dummy/public/422.html +26 -0
  53. data/spec/dummy/public/500.html +25 -0
  54. data/spec/dummy/public/favicon.ico +0 -0
  55. data/spec/dummy/public/robots.txt +5 -0
  56. data/spec/dummy/script/rails +6 -0
  57. data/spec/models/lti_provider/launch_spec.rb +80 -0
  58. data/spec/spec_helper.rb +55 -0
  59. metadata +337 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ describe LtiProvider::Launch do
4
+ describe "validations" do
5
+ subject(:launch) do
6
+ l = LtiProvider::Launch.new
7
+ l.provider_params = {}
8
+ l
9
+ end
10
+
11
+ it { should validate_presence_of :canvas_url }
12
+ it { should validate_presence_of :nonce }
13
+ it { should validate_presence_of :provider_params }
14
+ end
15
+
16
+ describe ".initialize_from_request" do
17
+ let(:provider) do
18
+ p = double('provider')
19
+ p.stub(
20
+ to_params: {
21
+ 'custom_canvas_course_id' => 1,
22
+ 'custom_canvas_user_id' => 2,
23
+ 'oauth_nonce' => 'nonce',
24
+ 'tool_consumer_instance_guid' => "123abc",
25
+ },
26
+ launch_presentation_return_url: "http://example.com",
27
+ consumer_key: "key",
28
+ consumer_secret: "secret",
29
+ valid_request?: true,
30
+ request_oauth_timestamp: Time.now
31
+ )
32
+ p
33
+ end
34
+
35
+ let(:request) do
36
+ r = double('request')
37
+ r.stub(env: {'HTTP_REFERER' => "http://example.com"})
38
+ r
39
+ end
40
+
41
+ subject(:launch) { LtiProvider::Launch.initialize_from_request(provider, request) }
42
+
43
+ its(:course_id) { should == 1 }
44
+ its(:tool_consumer_instance_guid) { should == '123abc' }
45
+ its(:user_id) { should == 2 }
46
+ its(:nonce) { should == 'nonce' }
47
+ its(:account_id) { should be_nil }
48
+ its(:canvas_url) { should == 'http://example.com' }
49
+ end
50
+
51
+ describe "xml_config" do
52
+ let(:lti_launch_url) { "http://example.com/launch" }
53
+ let(:doc) { Nokogiri::XML(xml) }
54
+
55
+ subject(:xml) { LtiProvider::Launch.xml_config(lti_launch_url) }
56
+
57
+ it { should match(/\<\?xml/) }
58
+
59
+ it "includes the launch URL" do
60
+ doc.xpath('//blti:launch_url').text.should match lti_launch_url
61
+ end
62
+
63
+ it "includes the course_navigation option and url + text properties" do
64
+ nav = doc.xpath('//lticm:options[@name="course_navigation"]')
65
+ nav.xpath('lticm:property[@name="url"]').text.should == 'http://override.example.com/launch'
66
+ nav.xpath('lticm:property[@name="text"]').text.should == "Dummy"
67
+ nav.xpath('lticm:property[@name="visibility"]').text.should == "admins"
68
+ end
69
+
70
+ it "includes account_navigation" do
71
+ nav = doc.xpath('//lticm:options[@name="account_navigation"]')
72
+ expect(nav).to be
73
+ end
74
+
75
+ it "includes no user_navigation" do
76
+ nav = doc.xpath('//lticm:options[@name="user_navigation"]')
77
+ expect(nav).to be_empty
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,55 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+ require File.expand_path("../dummy/config/environment", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+ require 'webmock/rspec'
7
+ require 'shoulda/matchers'
8
+ require 'nokogiri'
9
+
10
+ # Requires supporting ruby files with custom matchers and macros, etc,
11
+ # in spec/support/ and its subdirectories.
12
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
13
+
14
+ module LtiProvider
15
+ module UrlHelpers
16
+ def lti_provider
17
+ ::LtiProvider::Engine.routes.url_helpers
18
+ end
19
+
20
+ def main_app
21
+ ::Dummy::Application.routes.url_helpers
22
+ end
23
+ end
24
+ end
25
+
26
+ RSpec.configure do |config|
27
+ # ## Mock Framework
28
+ #
29
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
30
+ #
31
+ # config.mock_with :mocha
32
+ # config.mock_with :flexmock
33
+ # config.mock_with :rr
34
+
35
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
36
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
37
+
38
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
39
+ # examples within a transaction, remove the following line or assign false
40
+ # instead of true.
41
+ config.use_transactional_fixtures = true
42
+
43
+ # If true, the base class of anonymous controllers will be inferred
44
+ # automatically. This will be the default behavior in future versions of
45
+ # rspec-rails.
46
+ config.infer_base_class_for_anonymous_controllers = false
47
+
48
+ # Run specs in random order to surface order dependencies. If you find an
49
+ # order dependency and want to debug it, you can fix the order by providing
50
+ # the seed, which is printed after each run.
51
+ # --seed 1234
52
+ config.order = "random"
53
+
54
+ config.include LtiProvider::UrlHelpers, type: :controller
55
+ end
metadata ADDED
@@ -0,0 +1,337 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lti_provider_engine
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dave Donahue
9
+ - Adam Anderson
10
+ - Simon Williams
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2013-11-13 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rails
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 3.2.12
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: 3.2.12
32
+ - !ruby/object:Gem::Dependency
33
+ name: ims-lti
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - '='
38
+ - !ruby/object:Gem::Version
39
+ version: 1.1.4
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.4
48
+ - !ruby/object:Gem::Dependency
49
+ name: sqlite3
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: nokogiri
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rspec-rails
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
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
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rspec-rails-mocha
114
+ requirement: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: shoulda-matchers
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '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'
144
+ - !ruby/object:Gem::Dependency
145
+ name: webmock
146
+ requirement: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ - !ruby/object:Gem::Dependency
161
+ name: debugger
162
+ requirement: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ - !ruby/object:Gem::Dependency
177
+ name: guard-rspec
178
+ requirement: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ - !ruby/object:Gem::Dependency
193
+ name: rb-fsevent
194
+ requirement: !ruby/object:Gem::Requirement
195
+ none: false
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ description:
209
+ email:
210
+ - adam.anderson@12spokes.com
211
+ - simon@instructure.com
212
+ executables: []
213
+ extensions: []
214
+ extra_rdoc_files: []
215
+ files:
216
+ - app/controllers/lti_provider/application_controller.rb
217
+ - app/controllers/lti_provider/lti_controller.rb
218
+ - app/models/lti_provider/launch.rb
219
+ - app/views/layouts/lti_provider/application.html.erb
220
+ - app/views/lti_provider/lti/cookie_test.html.erb
221
+ - config/lti.yml.example
222
+ - config/lti_xml.yml.example
223
+ - config/routes.rb
224
+ - db/migrate/20130319050003_create_lti_provider_launches.rb
225
+ - lib/lti_provider/config.rb
226
+ - lib/lti_provider/engine.rb
227
+ - lib/lti_provider/lti_application.rb
228
+ - lib/lti_provider/lti_config.rb
229
+ - lib/lti_provider/lti_xml_config.rb
230
+ - lib/lti_provider/version.rb
231
+ - lib/lti_provider/xml_config.rb
232
+ - lib/lti_provider.rb
233
+ - lib/tasks/lti_provider_tasks.rake
234
+ - MIT-LICENSE
235
+ - Rakefile
236
+ - README.md
237
+ - spec/controllers/lti_provider/lti_controller_spec.rb
238
+ - spec/dummy/app/controllers/application_controller.rb
239
+ - spec/dummy/app/controllers/welcome_controller.rb
240
+ - spec/dummy/config/application.rb
241
+ - spec/dummy/config/boot.rb
242
+ - spec/dummy/config/cucumber.yml
243
+ - spec/dummy/config/database.yml
244
+ - spec/dummy/config/environment.rb
245
+ - spec/dummy/config/environments/development.rb
246
+ - spec/dummy/config/environments/production.rb
247
+ - spec/dummy/config/environments/test.rb
248
+ - spec/dummy/config/initializers/backtrace_silencers.rb
249
+ - spec/dummy/config/initializers/inflections.rb
250
+ - spec/dummy/config/initializers/mime_types.rb
251
+ - spec/dummy/config/initializers/secret_token.rb
252
+ - spec/dummy/config/initializers/session_store.rb
253
+ - spec/dummy/config/initializers/wrap_parameters.rb
254
+ - spec/dummy/config/locales/en.yml
255
+ - spec/dummy/config/lti.yml
256
+ - spec/dummy/config/lti_xml.yml
257
+ - spec/dummy/config/routes.rb
258
+ - spec/dummy/config.ru
259
+ - spec/dummy/db/development.sqlite3
260
+ - spec/dummy/db/migrate/20130319050206_create_lti_provider_launches.lti_provider.rb
261
+ - spec/dummy/db/schema.rb
262
+ - spec/dummy/db/test.sqlite3
263
+ - spec/dummy/log/development.log
264
+ - spec/dummy/log/test.log
265
+ - spec/dummy/public/404.html
266
+ - spec/dummy/public/422.html
267
+ - spec/dummy/public/500.html
268
+ - spec/dummy/public/favicon.ico
269
+ - spec/dummy/public/robots.txt
270
+ - spec/dummy/Rakefile
271
+ - spec/dummy/script/rails
272
+ - spec/models/lti_provider/launch_spec.rb
273
+ - spec/spec_helper.rb
274
+ homepage: https://github.com/instructure/lti_provider_engine
275
+ licenses:
276
+ - MIT
277
+ post_install_message:
278
+ rdoc_options: []
279
+ require_paths:
280
+ - lib
281
+ required_ruby_version: !ruby/object:Gem::Requirement
282
+ none: false
283
+ requirements:
284
+ - - ! '>='
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ required_rubygems_version: !ruby/object:Gem::Requirement
288
+ none: false
289
+ requirements:
290
+ - - ! '>='
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ requirements: []
294
+ rubyforge_project:
295
+ rubygems_version: 1.8.23
296
+ signing_key:
297
+ specification_version: 3
298
+ summary: LtiProvider is a mountable engine for handling the LTI launch and exposing
299
+ LTI parameters in your rails app.
300
+ test_files:
301
+ - spec/controllers/lti_provider/lti_controller_spec.rb
302
+ - spec/dummy/app/controllers/application_controller.rb
303
+ - spec/dummy/app/controllers/welcome_controller.rb
304
+ - spec/dummy/config/application.rb
305
+ - spec/dummy/config/boot.rb
306
+ - spec/dummy/config/cucumber.yml
307
+ - spec/dummy/config/database.yml
308
+ - spec/dummy/config/environment.rb
309
+ - spec/dummy/config/environments/development.rb
310
+ - spec/dummy/config/environments/production.rb
311
+ - spec/dummy/config/environments/test.rb
312
+ - spec/dummy/config/initializers/backtrace_silencers.rb
313
+ - spec/dummy/config/initializers/inflections.rb
314
+ - spec/dummy/config/initializers/mime_types.rb
315
+ - spec/dummy/config/initializers/secret_token.rb
316
+ - spec/dummy/config/initializers/session_store.rb
317
+ - spec/dummy/config/initializers/wrap_parameters.rb
318
+ - spec/dummy/config/locales/en.yml
319
+ - spec/dummy/config/lti.yml
320
+ - spec/dummy/config/lti_xml.yml
321
+ - spec/dummy/config/routes.rb
322
+ - spec/dummy/config.ru
323
+ - spec/dummy/db/development.sqlite3
324
+ - spec/dummy/db/migrate/20130319050206_create_lti_provider_launches.lti_provider.rb
325
+ - spec/dummy/db/schema.rb
326
+ - spec/dummy/db/test.sqlite3
327
+ - spec/dummy/log/development.log
328
+ - spec/dummy/log/test.log
329
+ - spec/dummy/public/404.html
330
+ - spec/dummy/public/422.html
331
+ - spec/dummy/public/500.html
332
+ - spec/dummy/public/favicon.ico
333
+ - spec/dummy/public/robots.txt
334
+ - spec/dummy/Rakefile
335
+ - spec/dummy/script/rails
336
+ - spec/models/lti_provider/launch_spec.rb
337
+ - spec/spec_helper.rb