qalam_oauth_engine 2.2.9

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.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +28 -0
  3. data/README.md +110 -0
  4. data/Rakefile +28 -0
  5. data/app/controllers/canvas_oauth/canvas_controller.rb +26 -0
  6. data/app/controllers/canvas_oauth/oauth_application_controller.rb +5 -0
  7. data/app/models/canvas_oauth/authorization.rb +46 -0
  8. data/config/canvas.yml.example +12 -0
  9. data/config/routes.rb +3 -0
  10. data/db/migrate/20121121005358_create_canvas_oauth_authorizations.rb +16 -0
  11. data/lib/canvas_oauth.rb +26 -0
  12. data/lib/canvas_oauth/canvas_api.rb +331 -0
  13. data/lib/canvas_oauth/canvas_api_extensions.rb +9 -0
  14. data/lib/canvas_oauth/canvas_application.rb +73 -0
  15. data/lib/canvas_oauth/canvas_config.rb +34 -0
  16. data/lib/canvas_oauth/config.rb +3 -0
  17. data/lib/canvas_oauth/default_utf8_parser.rb +13 -0
  18. data/lib/canvas_oauth/engine.rb +15 -0
  19. data/lib/canvas_oauth/version.rb +3 -0
  20. data/lib/tasks/canvas_oauth_tasks.rake +1 -0
  21. data/spec/controllers/canvas_oauth/canvas_controller_spec.rb +90 -0
  22. data/spec/dummy/README.rdoc +261 -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 +57 -0
  28. data/spec/dummy/config/boot.rb +10 -0
  29. data/spec/dummy/config/canvas.yml +12 -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 +26 -0
  33. data/spec/dummy/config/environments/production.rb +69 -0
  34. data/spec/dummy/config/environments/test.rb +33 -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/routes.rb +4 -0
  43. data/spec/dummy/db/development.sqlite3 +0 -0
  44. data/spec/dummy/db/migrate/20160711200737_create_canvas_oauth_authorizations.canvas_oauth.rb +16 -0
  45. data/spec/dummy/db/schema.rb +27 -0
  46. data/spec/dummy/db/test.sqlite3 +0 -0
  47. data/spec/dummy/log/development.log +1 -0
  48. data/spec/dummy/log/test.log +1630 -0
  49. data/spec/dummy/public/404.html +26 -0
  50. data/spec/dummy/public/422.html +26 -0
  51. data/spec/dummy/public/500.html +25 -0
  52. data/spec/dummy/public/favicon.ico +0 -0
  53. data/spec/dummy/public/robots.txt +5 -0
  54. data/spec/dummy/script/rails +6 -0
  55. data/spec/lib/canvas_oauth/canvas_api_extensions_spec.rb +13 -0
  56. data/spec/lib/canvas_oauth/canvas_api_spec.rb +364 -0
  57. data/spec/lib/canvas_oauth/default_utf8_parser_spec.rb +21 -0
  58. data/spec/models/canvas_oauth/authorization_spec.rb +47 -0
  59. data/spec/spec_helper.rb +64 -0
  60. metadata +377 -0
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -0,0 +1,5 @@
1
+ class ApplicationController < ActionController::Base
2
+ include CanvasOauth::CanvasApplication
3
+
4
+ protect_from_forgery
5
+ end
@@ -0,0 +1,5 @@
1
+ class WelcomeController < ApplicationController
2
+ def index
3
+ render text: "Hello Oauth"
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
@@ -0,0 +1,57 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require(:default, Rails.env)
6
+ require 'canvas_oauth'
7
+
8
+ module Dummy
9
+ class Application < Rails::Application
10
+ # Settings in config/environments/* take precedence over those specified here.
11
+ # Application configuration should go into files in config/initializers
12
+ # -- all .rb files in that directory are automatically loaded.
13
+
14
+ # Custom directories with classes and modules you want to be autoloadable.
15
+ # config.autoload_paths += %W(#{config.root}/extras)
16
+
17
+ # Only load the plugins named here, in the order given (default is alphabetical).
18
+ # :all can be used as a placeholder for all plugins not explicitly named.
19
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
20
+
21
+ # Activate observers that should always be running.
22
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
23
+
24
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
25
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
26
+ # config.time_zone = 'Central Time (US & Canada)'
27
+
28
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
29
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
30
+ # config.i18n.default_locale = :de
31
+
32
+ # Configure the default encoding used in templates for Ruby 1.9.
33
+ config.encoding = "utf-8"
34
+
35
+ # Configure sensitive parameters which will be filtered from the log file.
36
+ config.filter_parameters += [:password]
37
+
38
+ # Enable escaping HTML in JSON.
39
+ config.active_support.escape_html_entities_in_json = true
40
+
41
+ # Use SQL instead of Active Record's schema dumper when creating the database.
42
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
43
+ # like if you have constraints or database-specific column types
44
+ # config.active_record.schema_format = :sql
45
+
46
+ config.active_record.sqlite3.represent_boolean_as_integer = true
47
+
48
+ # Enable the asset pipeline
49
+ config.assets.enabled = true
50
+
51
+ # Version of your assets, change this if you want to expire all your assets
52
+ config.assets.version = '1.0'
53
+
54
+ # true is the default, setting this explicitly to avoid deprecation warnings
55
+ config.i18n.enforce_available_locales = true
56
+ end
57
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,12 @@
1
+ default: &default
2
+ key: 2
3
+ secret: a1b2c3d4
4
+
5
+ development:
6
+ <<: *default
7
+
8
+ test:
9
+ <<: *default
10
+
11
+ cucumber:
12
+ <<: *default
@@ -0,0 +1,25 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3
3
+ #
4
+ # Ensure the SQLite 3 gem is defined in your Gemfile
5
+ # gem 'sqlite3'
6
+ development:
7
+ adapter: sqlite3
8
+ database: db/development.sqlite3
9
+ pool: 5
10
+ timeout: 5000
11
+
12
+ # Warning: The database defined as "test" will be erased and
13
+ # re-generated from your development database when you run "rake".
14
+ # Do not set this db to the same as development or production.
15
+ test:
16
+ adapter: sqlite3
17
+ database: db/test.sqlite3
18
+ pool: 5
19
+ timeout: 5000
20
+
21
+ production:
22
+ adapter: sqlite3
23
+ database: db/production.sqlite3
24
+ pool: 5
25
+ timeout: 5000
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Dummy::Application.initialize!
@@ -0,0 +1,26 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # In the development environment your application's code is reloaded on
5
+ # every request. This slows down response time but is perfect for development
6
+ # since you don't have to restart the web server when you make code changes.
7
+ config.cache_classes = false
8
+
9
+ config.eager_load = false
10
+
11
+ # Show full error reports and disable caching
12
+ config.consider_all_requests_local = true
13
+ config.action_controller.perform_caching = false
14
+
15
+ # Don't care if the mailer can't send
16
+ config.action_mailer.raise_delivery_errors = false
17
+
18
+ # Print deprecation notices to the Rails logger
19
+ config.active_support.deprecation = :log
20
+
21
+ # Do not compress assets
22
+ config.assets.compress = false
23
+
24
+ # Expands the lines which load the assets
25
+ config.assets.debug = true
26
+ end
@@ -0,0 +1,69 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # Code is not reloaded between requests
5
+ config.cache_classes = true
6
+
7
+ # Full error reports are disabled and caching is turned on
8
+ config.consider_all_requests_local = false
9
+ config.action_controller.perform_caching = true
10
+
11
+ # Disable Rails's static asset server (Apache or nginx will already do this)
12
+ config.serve_static_assets = false
13
+
14
+ # Compress JavaScripts and CSS
15
+ config.assets.compress = true
16
+
17
+ # Don't fallback to assets pipeline if a precompiled asset is missed
18
+ config.assets.compile = false
19
+
20
+ # Generate digests for assets URLs
21
+ config.assets.digest = true
22
+
23
+ # Defaults to nil and saved in location specified by config.assets.prefix
24
+ # config.assets.manifest = YOUR_PATH
25
+
26
+ # Specifies the header that your server uses for sending files
27
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
28
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
29
+
30
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
31
+ # config.force_ssl = true
32
+
33
+ # See everything in the log (default is :info)
34
+ # config.log_level = :debug
35
+
36
+ # Prepend all log lines with the following tags
37
+ # config.log_tags = [ :subdomain, :uuid ]
38
+
39
+ # Use a different logger for distributed setups
40
+ # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
41
+
42
+ # Use a different cache store in production
43
+ # config.cache_store = :mem_cache_store
44
+
45
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server
46
+ # config.action_controller.asset_host = "http://assets.example.com"
47
+
48
+ # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
49
+ # config.assets.precompile += %w( search.js )
50
+
51
+ # Disable delivery errors, bad email addresses will be ignored
52
+ # config.action_mailer.raise_delivery_errors = false
53
+
54
+ # Enable threaded mode
55
+ # config.threadsafe!
56
+
57
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
58
+ # the I18n.default_locale when a translation can not be found)
59
+ config.i18n.fallbacks = true
60
+
61
+ # Send deprecation notices to registered listeners
62
+ config.active_support.deprecation = :notify
63
+
64
+ config.eager_load = true
65
+
66
+ # Log the query plan for queries taking more than this (works
67
+ # with SQLite, MySQL, and PostgreSQL)
68
+ # config.active_record.auto_explain_threshold_in_seconds = 0.5
69
+ end
@@ -0,0 +1,33 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # The test environment is used exclusively to run your application's
5
+ # test suite. You never need to work with it otherwise. Remember that
6
+ # your test database is "scratch space" for the test suite and is wiped
7
+ # and recreated between test runs. Don't rely on the data there!
8
+ config.cache_classes = true
9
+
10
+ # Configure static asset server for tests with Cache-Control for performance
11
+ config.serve_static_assets = true
12
+ config.static_cache_control = "public, max-age=3600"
13
+
14
+ config.eager_load = false
15
+
16
+ # Show full error reports and disable caching
17
+ config.consider_all_requests_local = true
18
+ config.action_controller.perform_caching = false
19
+
20
+ # Raise exceptions instead of rendering exception templates
21
+ config.action_dispatch.show_exceptions = false
22
+
23
+ # Disable request forgery protection in test environment
24
+ config.action_controller.allow_forgery_protection = false
25
+
26
+ # Tell Action Mailer not to deliver emails to the real world.
27
+ # The :test delivery method accumulates sent emails in the
28
+ # ActionMailer::Base.deliveries array.
29
+ config.action_mailer.delivery_method = :test
30
+
31
+ # Print deprecation notices to the stderr
32
+ config.active_support.deprecation = :stderr
33
+ end
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
+ # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
+
6
+ # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # Rails.backtrace_cleaner.remove_silencers!
@@ -0,0 +1,15 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format
4
+ # (all these examples are active by default):
5
+ # ActiveSupport::Inflector.inflections do |inflect|
6
+ # inflect.plural /^(ox)$/i, '\1en'
7
+ # inflect.singular /^(ox)en/i, '\1'
8
+ # inflect.irregular 'person', 'people'
9
+ # inflect.uncountable %w( fish sheep )
10
+ # end
11
+ #
12
+ # These inflection rules are supported but not enabled by default:
13
+ # ActiveSupport::Inflector.inflections do |inflect|
14
+ # inflect.acronym 'RESTful'
15
+ # end
@@ -0,0 +1,5 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
5
+ # Mime::Type.register_alias "text/html", :iphone
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Dummy::Application.config.secret_key_base = "b580d616dcbf14f5394aea18bcae2886515306728e54be7ef37f9c6aa48313368c7d00e4f0af95f4ec7b8e37696381ba0a44e1b939833dbc678bd56362aeb7a0"
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
4
+
5
+ # Use the database for sessions instead of the cookie-based default,
6
+ # which shouldn't be used to store highly confidential information
7
+ # (create the session table with "rails generate session_migration")
8
+ # Dummy::Application.config.session_store :active_record_store
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json]
9
+ end
10
+
11
+ # Disable root element in JSON by default.
12
+ ActiveSupport.on_load(:active_record) do
13
+ self.include_root_in_json = false
14
+ end
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
@@ -0,0 +1,4 @@
1
+ Rails.application.routes.draw do
2
+ root to: "welcome#index"
3
+ mount CanvasOauth::Engine => "/"
4
+ end
File without changes
@@ -0,0 +1,16 @@
1
+ # This migration comes from canvas_oauth (originally 20121121005358)
2
+ class CreateCanvasOauthAuthorizations < ActiveRecord::Migration[4.2]
3
+ def change
4
+ create_table "canvas_oauth_authorizations", :force => true do |t|
5
+ t.integer "canvas_user_id", :limit => 8
6
+ t.string "tool_consumer_instance_guid", :null => false
7
+ t.string "token"
8
+ t.datetime "last_used_at"
9
+ t.datetime "created_at", :null => false
10
+ t.datetime "updated_at", :null => false
11
+ end
12
+
13
+ add_index :canvas_oauth_authorizations, [:canvas_user_id, :tool_consumer_instance_guid],
14
+ name: 'index_canvas_oauth_auths_on_user_id_and_tciguid'
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20121121005358) do
15
+
16
+ create_table "canvas_oauth_authorizations", force: true do |t|
17
+ t.integer "canvas_user_id", limit: 8
18
+ t.string "tool_consumer_instance_guid", null: false
19
+ t.string "token"
20
+ t.datetime "last_used_at"
21
+ t.datetime "created_at", null: false
22
+ t.datetime "updated_at", null: false
23
+ end
24
+
25
+ add_index "canvas_oauth_authorizations", ["canvas_user_id", "tool_consumer_instance_guid"], name: "index_canvas_oauth_auths_on_user_id_and_tciguid"
26
+
27
+ end
File without changes
@@ -0,0 +1 @@
1
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
@@ -0,0 +1,1630 @@
1
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
2
+  (0.2ms) begin transaction
3
+  (0.0ms) rollback transaction
4
+  (0.0ms) begin transaction
5
+  (0.0ms) rollback transaction
6
+  (0.0ms) begin transaction
7
+  (0.0ms) rollback transaction
8
+  (0.0ms) begin transaction
9
+  (0.0ms) rollback transaction
10
+  (0.0ms) begin transaction
11
+ CanvasOauth::Authorization Load (0.1ms) SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" = 123 AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" = 'abc123' ORDER BY created_at DESC LIMIT 1
12
+ SQLite3::SQLException: no such table: canvas_oauth_authorizations: SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" = 123 AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" = 'abc123' ORDER BY created_at DESC LIMIT 1
13
+  (0.0ms) rollback transaction
14
+  (0.0ms) begin transaction
15
+  (0.0ms) rollback transaction
16
+  (0.0ms) begin transaction
17
+  (0.0ms) rollback transaction
18
+  (0.0ms) begin transaction
19
+  (0.0ms) rollback transaction
20
+  (0.0ms) begin transaction
21
+  (0.0ms) rollback transaction
22
+  (0.0ms) begin transaction
23
+  (0.0ms) rollback transaction
24
+  (0.0ms) begin transaction
25
+ Processing by CanvasOauth::CanvasController#oauth as HTML
26
+ Rendered text template (0.0ms)
27
+ Completed 200 OK in 4ms (Views: 3.9ms | ActiveRecord: 0.0ms)
28
+  (0.1ms) rollback transaction
29
+  (0.0ms) begin transaction
30
+ CanvasOauth::Authorization Load (0.1ms) SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
31
+ SQLite3::SQLException: no such table: canvas_oauth_authorizations: SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
32
+  (0.0ms) rollback transaction
33
+  (0.0ms) begin transaction
34
+ CanvasOauth::Authorization Load (0.1ms) SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
35
+ SQLite3::SQLException: no such table: canvas_oauth_authorizations: SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
36
+  (0.0ms) rollback transaction
37
+  (0.0ms) begin transaction
38
+ Processing by CanvasOauth::CanvasController#oauth as HTML
39
+ Parameters: {"code"=>"valid"}
40
+ Completed 200 OK in 0ms (Views: 0.1ms | ActiveRecord: 0.0ms)
41
+  (0.0ms) rollback transaction
42
+  (0.0ms) begin transaction
43
+ Processing by CanvasOauth::CanvasController#oauth as HTML
44
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
45
+ Completed 200 OK in 0ms (Views: 0.1ms | ActiveRecord: 0.0ms)
46
+  (0.0ms) rollback transaction
47
+  (0.0ms) begin transaction
48
+ CanvasOauth::Authorization Load (0.1ms) SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
49
+ SQLite3::SQLException: no such table: canvas_oauth_authorizations: SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
50
+  (0.0ms) rollback transaction
51
+  (0.0ms) begin transaction
52
+ CanvasOauth::Authorization Load (0.1ms) SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
53
+ SQLite3::SQLException: no such table: canvas_oauth_authorizations: SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
54
+  (0.0ms) rollback transaction
55
+  (0.0ms) begin transaction
56
+ CanvasOauth::Authorization Load (0.1ms) SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
57
+ SQLite3::SQLException: no such table: canvas_oauth_authorizations: SELECT "canvas_oauth_authorizations".* FROM "canvas_oauth_authorizations" WHERE "canvas_oauth_authorizations"."canvas_user_id" IS NULL AND "canvas_oauth_authorizations"."tool_consumer_instance_guid" IS NULL ORDER BY created_at DESC LIMIT 1
58
+  (0.0ms) rollback transaction
59
+  (0.0ms) begin transaction
60
+  (0.0ms) rollback transaction
61
+  (0.0ms) begin transaction
62
+  (0.0ms) rollback transaction
63
+  (0.0ms) begin transaction
64
+  (0.0ms) rollback transaction
65
+  (0.0ms) begin transaction
66
+  (0.0ms) rollback transaction
67
+  (0.0ms) begin transaction
68
+  (0.0ms) rollback transaction
69
+  (0.0ms) begin transaction
70
+  (0.0ms) rollback transaction
71
+  (0.0ms) begin transaction
72
+  (0.0ms) rollback transaction
73
+  (0.0ms) begin transaction
74
+  (0.0ms) rollback transaction
75
+  (0.0ms) begin transaction
76
+  (0.0ms) rollback transaction
77
+  (0.0ms) begin transaction
78
+  (0.0ms) rollback transaction
79
+  (0.0ms) begin transaction
80
+  (0.0ms) rollback transaction
81
+  (0.0ms) begin transaction
82
+  (0.0ms) rollback transaction
83
+  (0.1ms) begin transaction
84
+  (0.0ms) rollback transaction
85
+  (0.0ms) begin transaction
86
+  (0.0ms) rollback transaction
87
+  (0.0ms) begin transaction
88
+  (0.1ms) rollback transaction
89
+  (0.0ms) begin transaction
90
+  (0.0ms) rollback transaction
91
+  (0.0ms) begin transaction
92
+  (0.0ms) rollback transaction
93
+  (0.1ms) begin transaction
94
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
95
+  (0.0ms) rollback transaction
96
+  (0.0ms) begin transaction
97
+  (0.0ms) rollback transaction
98
+  (0.0ms) begin transaction
99
+ API call (0.04ms): get ["/path", {:query=>"stuff", :headers=>{}}]
100
+  (0.0ms) rollback transaction
101
+  (0.0ms) begin transaction
102
+ API call (0.05ms): get ["/path", {:headers=>{}}]
103
+  (0.1ms) rollback transaction
104
+  (0.0ms) begin transaction
105
+ API call (0.02ms): get ["/path", {:headers=>{}}]
106
+  (0.0ms) rollback transaction
107
+  (0.0ms) begin transaction
108
+ API call (0.08ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
109
+  (0.0ms) rollback transaction
110
+  (0.0ms) begin transaction
111
+ API call (0.02ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
112
+  (0.0ms) rollback transaction
113
+  (0.1ms) begin transaction
114
+  (0.0ms) rollback transaction
115
+  (0.0ms) begin transaction
116
+ API call (0.02ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
117
+  (0.1ms) rollback transaction
118
+  (0.0ms) begin transaction
119
+  (0.0ms) rollback transaction
120
+  (0.0ms) begin transaction
121
+ API call (0.02ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
122
+  (0.0ms) rollback transaction
123
+  (0.0ms) begin transaction
124
+ API call (0.02ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
125
+  (0.0ms) rollback transaction
126
+  (0.0ms) begin transaction
127
+  (0.0ms) rollback transaction
128
+  (0.1ms) begin transaction
129
+  (0.0ms) rollback transaction
130
+  (0.0ms) begin transaction
131
+ API call (0.04ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
132
+  (0.0ms) rollback transaction
133
+  (0.0ms) begin transaction
134
+  (0.0ms) rollback transaction
135
+  (0.1ms) begin transaction
136
+ API call (0.02ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
137
+  (0.1ms) rollback transaction
138
+  (0.0ms) begin transaction
139
+ API call (0.02ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
140
+  (0.1ms) rollback transaction
141
+  (0.0ms) begin transaction
142
+  (0.0ms) rollback transaction
143
+  (0.0ms) begin transaction
144
+ API call (0.02ms): get ["/api/v1/courses/123", {:headers=>{}}]
145
+  (0.0ms) rollback transaction
146
+  (0.0ms) begin transaction
147
+  (0.1ms) rollback transaction
148
+  (0.0ms) begin transaction
149
+  (0.0ms) rollback transaction
150
+  (0.0ms) begin transaction
151
+  (0.0ms) rollback transaction
152
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
153
+  (0.3ms) begin transaction
154
+  (0.1ms) rollback transaction
155
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
156
+  (0.2ms) begin transaction
157
+  (0.1ms) rollback transaction
158
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
159
+  (0.2ms) begin transaction
160
+  (0.1ms) rollback transaction
161
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
162
+  (0.2ms) begin transaction
163
+  (0.1ms) rollback transaction
164
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
165
+  (0.2ms) begin transaction
166
+  (0.1ms) rollback transaction
167
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
168
+  (0.2ms) begin transaction
169
+  (0.1ms) rollback transaction
170
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
171
+  (0.2ms) begin transaction
172
+  (0.1ms) rollback transaction
173
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
174
+  (0.2ms) begin transaction
175
+  (0.1ms) rollback transaction
176
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
177
+  (0.2ms) begin transaction
178
+  (0.0ms) rollback transaction
179
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
180
+  (0.2ms) begin transaction
181
+  (0.0ms) rollback transaction
182
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
183
+  (0.2ms) begin transaction
184
+  (0.0ms) rollback transaction
185
+  (0.0ms) begin transaction
186
+  (0.0ms) rollback transaction
187
+  (0.0ms) begin transaction
188
+  (0.0ms) rollback transaction
189
+  (0.0ms) begin transaction
190
+  (0.0ms) rollback transaction
191
+  (0.0ms) begin transaction
192
+  (0.0ms) rollback transaction
193
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
194
+  (0.2ms) begin transaction
195
+  (0.1ms) rollback transaction
196
+  (0.0ms) begin transaction
197
+  (0.1ms) rollback transaction
198
+  (0.0ms) begin transaction
199
+  (0.0ms) rollback transaction
200
+  (0.0ms) begin transaction
201
+  (0.0ms) rollback transaction
202
+  (0.0ms) begin transaction
203
+  (0.0ms) rollback transaction
204
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
205
+  (0.2ms) begin transaction
206
+  (0.1ms) rollback transaction
207
+  (0.0ms) begin transaction
208
+  (0.0ms) rollback transaction
209
+  (0.0ms) begin transaction
210
+  (0.0ms) rollback transaction
211
+  (0.0ms) begin transaction
212
+  (0.1ms) rollback transaction
213
+  (0.0ms) begin transaction
214
+  (0.0ms) rollback transaction
215
+ Initializing Canvas using configuration in /Users/kgarner/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
216
+  (0.2ms) begin transaction
217
+  (0.0ms) rollback transaction
218
+  (0.0ms) begin transaction
219
+  (0.0ms) rollback transaction
220
+  (0.0ms) begin transaction
221
+  (0.0ms) rollback transaction
222
+  (0.0ms) begin transaction
223
+  (0.0ms) rollback transaction
224
+  (0.0ms) begin transaction
225
+  (0.0ms) rollback transaction
226
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
227
+  (0.0ms) begin transaction
228
+ API call (0.09ms): get ["/path", {:headers=>{}}]
229
+  (0.1ms) rollback transaction
230
+  (0.0ms) begin transaction
231
+ API call (0.05ms): get ["/path", {:headers=>{}}]
232
+  (0.0ms) rollback transaction
233
+  (0.0ms) begin transaction
234
+ API call (0.04ms): get ["/path", {:query=>"stuff", :headers=>{}}]
235
+  (0.0ms) rollback transaction
236
+  (0.1ms) begin transaction
237
+ API call (0.03ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
238
+  (0.0ms) rollback transaction
239
+  (0.0ms) begin transaction
240
+  (0.0ms) rollback transaction
241
+  (0.0ms) begin transaction
242
+ API call (0.08ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
243
+  (0.1ms) rollback transaction
244
+  (0.0ms) begin transaction
245
+  (0.0ms) rollback transaction
246
+  (0.0ms) begin transaction
247
+  (0.0ms) rollback transaction
248
+  (0.0ms) begin transaction
249
+ API call (0.03ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
250
+  (0.0ms) rollback transaction
251
+  (0.0ms) begin transaction
252
+  (0.0ms) rollback transaction
253
+  (0.0ms) begin transaction
254
+ API call (0.03ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
255
+  (0.0ms) rollback transaction
256
+  (0.0ms) begin transaction
257
+ API call (0.07ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
258
+  (0.0ms) rollback transaction
259
+  (0.0ms) begin transaction
260
+  (0.0ms) rollback transaction
261
+  (0.0ms) begin transaction
262
+  (0.0ms) rollback transaction
263
+  (0.0ms) begin transaction
264
+ API call (0.03ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
265
+  (0.0ms) rollback transaction
266
+  (0.0ms) begin transaction
267
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
268
+  (0.0ms) rollback transaction
269
+  (0.0ms) begin transaction
270
+ API call (0.03ms): get ["/api/v1/courses/123", {:headers=>{}}]
271
+  (0.0ms) rollback transaction
272
+  (0.0ms) begin transaction
273
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
274
+  (0.0ms) rollback transaction
275
+  (0.0ms) begin transaction
276
+  (0.0ms) rollback transaction
277
+  (0.0ms) begin transaction
278
+  (0.0ms) rollback transaction
279
+  (0.0ms) begin transaction
280
+ API call (0.07ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
281
+  (0.0ms) rollback transaction
282
+  (0.0ms) begin transaction
283
+  (0.1ms) rollback transaction
284
+  (0.1ms) begin transaction
285
+  (0.1ms) rollback transaction
286
+  (0.0ms) begin transaction
287
+  (0.1ms) rollback transaction
288
+  (0.1ms) begin transaction
289
+ API call (0.12ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
290
+  (0.1ms) rollback transaction
291
+  (0.1ms) begin transaction
292
+  (0.0ms) rollback transaction
293
+  (0.0ms) begin transaction
294
+  (0.0ms) rollback transaction
295
+  (0.1ms) begin transaction
296
+  (0.0ms) rollback transaction
297
+  (0.0ms) begin transaction
298
+  (0.0ms) rollback transaction
299
+  (0.1ms) begin transaction
300
+  (0.0ms) rollback transaction
301
+  (0.1ms) begin transaction
302
+  (0.1ms) rollback transaction
303
+  (0.0ms) begin transaction
304
+  (0.0ms) rollback transaction
305
+  (0.0ms) begin transaction
306
+  (0.1ms) rollback transaction
307
+  (0.0ms) begin transaction
308
+  (0.0ms) rollback transaction
309
+  (0.0ms) begin transaction
310
+  (0.0ms) rollback transaction
311
+  (0.0ms) begin transaction
312
+  (0.0ms) rollback transaction
313
+  (0.0ms) begin transaction
314
+  (0.1ms) rollback transaction
315
+  (0.1ms) begin transaction
316
+  (0.0ms) rollback transaction
317
+  (0.0ms) begin transaction
318
+  (0.1ms) rollback transaction
319
+  (0.0ms) begin transaction
320
+  (0.0ms) rollback transaction
321
+  (0.0ms) begin transaction
322
+  (0.0ms) rollback transaction
323
+  (0.0ms) begin transaction
324
+  (0.0ms) rollback transaction
325
+  (0.0ms) begin transaction
326
+  (0.0ms) rollback transaction
327
+  (0.0ms) begin transaction
328
+  (0.0ms) rollback transaction
329
+  (0.0ms) begin transaction
330
+  (0.0ms) rollback transaction
331
+  (0.0ms) begin transaction
332
+  (0.0ms) rollback transaction
333
+  (0.0ms) begin transaction
334
+ Processing by CanvasOauth::CanvasController#oauth as HTML
335
+ Rendering text template
336
+ Rendered text template (0.0ms)
337
+ Completed 200 OK in 3ms (Views: 3.1ms | ActiveRecord: 0.0ms)
338
+  (0.1ms) rollback transaction
339
+  (0.0ms) begin transaction
340
+ Processing by CanvasOauth::CanvasController#oauth as HTML
341
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
342
+ Rendering text template
343
+ Rendered text template (0.0ms)
344
+ Completed 200 OK in 1ms (Views: 0.4ms | ActiveRecord: 0.0ms)
345
+  (0.0ms) rollback transaction
346
+  (0.0ms) begin transaction
347
+ Processing by CanvasOauth::CanvasController#oauth as HTML
348
+ Parameters: {"code"=>"valid"}
349
+ Rendering text template
350
+ Rendered text template (0.0ms)
351
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
352
+  (0.0ms) rollback transaction
353
+  (0.1ms) begin transaction
354
+ Processing by CanvasOauth::CanvasController#oauth as HTML
355
+ Parameters: {"code"=>"valid", "state"=>"mismatch"}
356
+ Rendering text template
357
+ Rendered text template (0.0ms)
358
+ Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
359
+  (0.0ms) rollback transaction
360
+  (0.0ms) begin transaction
361
+ Processing by CanvasOauth::CanvasController#oauth as HTML
362
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
363
+ Completed 500 Internal Server Error in 2ms (ActiveRecord: 1.6ms)
364
+  (0.0ms) rollback transaction
365
+  (0.0ms) begin transaction
366
+ Processing by CanvasOauth::CanvasController#oauth as HTML
367
+ Parameters: {"code"=>"invalid"}
368
+ Rendering text template
369
+ Rendered text template (0.0ms)
370
+ Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
371
+  (0.0ms) rollback transaction
372
+  (0.0ms) begin transaction
373
+ Processing by CanvasOauth::CanvasController#oauth as HTML
374
+ Parameters: {"code"=>"valid"}
375
+ Rendering text template
376
+ Rendered text template (0.0ms)
377
+ Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
378
+  (0.0ms) rollback transaction
379
+  (0.0ms) begin transaction
380
+ Processing by CanvasOauth::CanvasController#oauth as HTML
381
+ Parameters: {"code"=>"valid"}
382
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
383
+  (0.0ms) rollback transaction
384
+  (0.0ms) begin transaction
385
+  (0.0ms) rollback transaction
386
+  (0.1ms) begin transaction
387
+  (0.0ms) rollback transaction
388
+  (0.0ms) begin transaction
389
+  (0.0ms) rollback transaction
390
+  (0.0ms) begin transaction
391
+  (0.0ms) rollback transaction
392
+  (0.0ms) begin transaction
393
+  (0.0ms) rollback transaction
394
+  (0.0ms) begin transaction
395
+  (0.1ms) rollback transaction
396
+  (0.0ms) begin transaction
397
+  (0.0ms) rollback transaction
398
+  (0.0ms) begin transaction
399
+  (0.0ms) rollback transaction
400
+  (0.0ms) begin transaction
401
+  (0.0ms) rollback transaction
402
+  (0.0ms) begin transaction
403
+  (0.0ms) rollback transaction
404
+  (0.0ms) begin transaction
405
+  (0.0ms) rollback transaction
406
+  (0.0ms) begin transaction
407
+  (0.0ms) rollback transaction
408
+  (0.0ms) begin transaction
409
+  (0.0ms) rollback transaction
410
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
411
+  (0.0ms) begin transaction
412
+  (0.0ms) rollback transaction
413
+  (0.0ms) begin transaction
414
+  (0.0ms) rollback transaction
415
+  (0.0ms) begin transaction
416
+  (0.0ms) rollback transaction
417
+  (0.0ms) begin transaction
418
+  (0.0ms) rollback transaction
419
+  (0.1ms) begin transaction
420
+  (0.0ms) rollback transaction
421
+  (0.0ms) begin transaction
422
+  (0.1ms) rollback transaction
423
+  (0.0ms) begin transaction
424
+  (0.0ms) rollback transaction
425
+  (0.0ms) begin transaction
426
+  (0.0ms) rollback transaction
427
+  (0.0ms) begin transaction
428
+  (0.0ms) rollback transaction
429
+  (0.0ms) begin transaction
430
+  (0.0ms) rollback transaction
431
+  (0.0ms) begin transaction
432
+  (0.0ms) rollback transaction
433
+  (0.0ms) begin transaction
434
+  (0.0ms) rollback transaction
435
+  (0.0ms) begin transaction
436
+  (0.0ms) rollback transaction
437
+  (0.0ms) begin transaction
438
+  (0.0ms) rollback transaction
439
+  (0.0ms) begin transaction
440
+  (0.0ms) rollback transaction
441
+  (0.0ms) begin transaction
442
+  (0.0ms) rollback transaction
443
+  (0.0ms) begin transaction
444
+  (0.0ms) rollback transaction
445
+  (0.0ms) begin transaction
446
+  (0.0ms) rollback transaction
447
+  (0.0ms) begin transaction
448
+  (0.0ms) rollback transaction
449
+  (0.0ms) begin transaction
450
+  (0.0ms) rollback transaction
451
+  (0.0ms) begin transaction
452
+ API call (0.06ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
453
+  (0.0ms) rollback transaction
454
+  (0.0ms) begin transaction
455
+  (0.1ms) rollback transaction
456
+  (0.0ms) begin transaction
457
+ API call (0.03ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
458
+  (0.0ms) rollback transaction
459
+  (0.0ms) begin transaction
460
+ API call (0.03ms): get ["/api/v1/courses/123", {:headers=>{}}]
461
+  (0.0ms) rollback transaction
462
+  (0.0ms) begin transaction
463
+ API call (0.09ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
464
+  (0.1ms) rollback transaction
465
+  (0.0ms) begin transaction
466
+  (0.0ms) rollback transaction
467
+  (0.0ms) begin transaction
468
+ API call (0.04ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
469
+  (0.0ms) rollback transaction
470
+  (0.0ms) begin transaction
471
+  (0.1ms) rollback transaction
472
+  (0.1ms) begin transaction
473
+  (0.1ms) rollback transaction
474
+  (0.1ms) begin transaction
475
+  (0.2ms) rollback transaction
476
+  (0.1ms) begin transaction
477
+ API call (0.09ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
478
+  (0.1ms) rollback transaction
479
+  (0.1ms) begin transaction
480
+  (0.1ms) rollback transaction
481
+  (0.0ms) begin transaction
482
+ API call (0.12ms): get ["/path", {:headers=>{}}]
483
+  (0.2ms) rollback transaction
484
+  (0.0ms) begin transaction
485
+ API call (0.05ms): get ["/path", {:query=>"stuff", :headers=>{}}]
486
+  (0.0ms) rollback transaction
487
+  (0.0ms) begin transaction
488
+ API call (0.07ms): get ["/path", {:headers=>{}}]
489
+  (0.0ms) rollback transaction
490
+  (0.1ms) begin transaction
491
+ API call (0.05ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
492
+  (0.0ms) rollback transaction
493
+  (0.0ms) begin transaction
494
+  (0.0ms) rollback transaction
495
+  (0.0ms) begin transaction
496
+  (0.0ms) rollback transaction
497
+  (0.0ms) begin transaction
498
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
499
+  (0.0ms) rollback transaction
500
+  (0.1ms) begin transaction
501
+ API call (0.04ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
502
+  (0.0ms) rollback transaction
503
+  (0.1ms) begin transaction
504
+  (0.0ms) rollback transaction
505
+  (0.0ms) begin transaction
506
+ API call (0.05ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
507
+  (0.0ms) rollback transaction
508
+  (0.0ms) begin transaction
509
+  (0.0ms) rollback transaction
510
+  (0.0ms) begin transaction
511
+  (0.1ms) rollback transaction
512
+  (0.0ms) begin transaction
513
+ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
514
+  (0.1ms) rollback transaction
515
+  (0.0ms) begin transaction
516
+  (0.0ms) rollback transaction
517
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
518
+  (0.1ms) begin transaction
519
+  (0.1ms) rollback transaction
520
+  (0.1ms) begin transaction
521
+  (0.1ms) rollback transaction
522
+  (0.1ms) begin transaction
523
+  (0.1ms) rollback transaction
524
+  (0.1ms) begin transaction
525
+ Processing by CanvasOauth::CanvasController#oauth as HTML
526
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
527
+ Completed 500 Internal Server Error in 3ms (ActiveRecord: 1.9ms)
528
+  (0.1ms) rollback transaction
529
+  (0.0ms) begin transaction
530
+ Processing by CanvasOauth::CanvasController#oauth as HTML
531
+ Parameters: {"code"=>"valid", "state"=>"mismatch"}
532
+ Rendering text template
533
+ Rendered text template (0.0ms)
534
+ Completed 200 OK in 5ms (Views: 4.9ms | ActiveRecord: 0.0ms)
535
+  (0.1ms) rollback transaction
536
+  (0.0ms) begin transaction
537
+ Processing by CanvasOauth::CanvasController#oauth as HTML
538
+ Rendering text template
539
+ Rendered text template (0.0ms)
540
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
541
+  (0.0ms) rollback transaction
542
+  (0.0ms) begin transaction
543
+ Processing by CanvasOauth::CanvasController#oauth as HTML
544
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
545
+ Rendering text template
546
+ Rendered text template (0.0ms)
547
+ Completed 200 OK in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
548
+  (0.1ms) rollback transaction
549
+  (0.0ms) begin transaction
550
+ Processing by CanvasOauth::CanvasController#oauth as HTML
551
+ Parameters: {"code"=>"valid"}
552
+ Rendering text template
553
+ Rendered text template (0.0ms)
554
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
555
+  (0.1ms) rollback transaction
556
+  (0.1ms) begin transaction
557
+ Processing by CanvasOauth::CanvasController#oauth as HTML
558
+ Parameters: {"code"=>"invalid"}
559
+ Rendering text template
560
+ Rendered text template (0.0ms)
561
+ Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)
562
+  (0.1ms) rollback transaction
563
+  (0.1ms) begin transaction
564
+ Processing by CanvasOauth::CanvasController#oauth as HTML
565
+ Parameters: {"code"=>"valid"}
566
+ Rendering text template
567
+ Rendered text template (0.0ms)
568
+ Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
569
+  (0.1ms) rollback transaction
570
+  (0.1ms) begin transaction
571
+ Processing by CanvasOauth::CanvasController#oauth as HTML
572
+ Parameters: {"code"=>"valid"}
573
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
574
+  (0.0ms) rollback transaction
575
+  (0.0ms) begin transaction
576
+  (0.0ms) rollback transaction
577
+  (0.0ms) begin transaction
578
+  (0.0ms) rollback transaction
579
+  (0.0ms) begin transaction
580
+  (0.0ms) rollback transaction
581
+  (0.0ms) begin transaction
582
+  (0.0ms) rollback transaction
583
+  (0.0ms) begin transaction
584
+  (0.0ms) rollback transaction
585
+  (0.1ms) begin transaction
586
+  (0.0ms) rollback transaction
587
+  (0.1ms) begin transaction
588
+  (0.0ms) rollback transaction
589
+  (0.1ms) begin transaction
590
+  (0.0ms) rollback transaction
591
+  (0.0ms) begin transaction
592
+  (0.0ms) rollback transaction
593
+  (0.1ms) begin transaction
594
+  (0.0ms) rollback transaction
595
+  (0.1ms) begin transaction
596
+  (0.0ms) rollback transaction
597
+  (0.0ms) begin transaction
598
+  (0.0ms) rollback transaction
599
+  (0.0ms) begin transaction
600
+  (0.0ms) rollback transaction
601
+  (0.0ms) begin transaction
602
+  (0.0ms) rollback transaction
603
+  (0.0ms) begin transaction
604
+  (0.0ms) rollback transaction
605
+  (0.0ms) begin transaction
606
+  (0.0ms) rollback transaction
607
+  (0.0ms) begin transaction
608
+  (0.0ms) rollback transaction
609
+  (0.0ms) begin transaction
610
+  (0.0ms) rollback transaction
611
+  (0.0ms) begin transaction
612
+  (0.0ms) rollback transaction
613
+  (0.0ms) begin transaction
614
+  (0.0ms) rollback transaction
615
+  (0.0ms) begin transaction
616
+  (0.0ms) rollback transaction
617
+  (0.0ms) begin transaction
618
+  (0.0ms) rollback transaction
619
+  (0.0ms) begin transaction
620
+  (0.0ms) rollback transaction
621
+  (0.0ms) begin transaction
622
+  (0.0ms) rollback transaction
623
+  (0.0ms) begin transaction
624
+  (0.0ms) rollback transaction
625
+  (0.0ms) begin transaction
626
+  (0.0ms) rollback transaction
627
+  (0.0ms) begin transaction
628
+  (0.0ms) rollback transaction
629
+  (0.0ms) begin transaction
630
+  (0.0ms) rollback transaction
631
+  (0.0ms) begin transaction
632
+  (0.0ms) rollback transaction
633
+  (0.0ms) begin transaction
634
+  (0.0ms) rollback transaction
635
+  (0.0ms) begin transaction
636
+  (0.0ms) rollback transaction
637
+  (0.0ms) begin transaction
638
+ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
639
+  (0.0ms) rollback transaction
640
+  (0.0ms) begin transaction
641
+  (0.0ms) rollback transaction
642
+  (0.0ms) begin transaction
643
+  (0.0ms) rollback transaction
644
+  (0.0ms) begin transaction
645
+ API call (0.03ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
646
+  (0.0ms) rollback transaction
647
+  (0.0ms) begin transaction
648
+  (0.0ms) rollback transaction
649
+  (0.0ms) begin transaction
650
+ API call (0.03ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
651
+  (0.0ms) rollback transaction
652
+  (0.0ms) begin transaction
653
+ API call (0.03ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
654
+  (0.0ms) rollback transaction
655
+  (0.0ms) begin transaction
656
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
657
+  (0.0ms) rollback transaction
658
+  (0.0ms) begin transaction
659
+ API call (0.03ms): get ["/api/v1/courses/123", {:headers=>{}}]
660
+  (0.0ms) rollback transaction
661
+  (0.0ms) begin transaction
662
+  (0.0ms) rollback transaction
663
+  (0.0ms) begin transaction
664
+ API call (0.03ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
665
+  (0.0ms) rollback transaction
666
+  (0.0ms) begin transaction
667
+ API call (0.05ms): get ["/path", {:headers=>{}}]
668
+  (0.0ms) rollback transaction
669
+  (0.0ms) begin transaction
670
+ API call (0.03ms): get ["/path", {:headers=>{}}]
671
+  (0.0ms) rollback transaction
672
+  (0.0ms) begin transaction
673
+ API call (0.03ms): get ["/path", {:query=>"stuff", :headers=>{}}]
674
+  (0.0ms) rollback transaction
675
+  (0.0ms) begin transaction
676
+  (0.0ms) rollback transaction
677
+  (0.0ms) begin transaction
678
+ API call (0.03ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
679
+  (0.0ms) rollback transaction
680
+  (0.0ms) begin transaction
681
+ API call (0.02ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
682
+  (0.0ms) rollback transaction
683
+  (0.0ms) begin transaction
684
+  (0.0ms) rollback transaction
685
+  (0.1ms) begin transaction
686
+  (0.1ms) rollback transaction
687
+  (0.1ms) begin transaction
688
+  (0.1ms) rollback transaction
689
+  (0.2ms) begin transaction
690
+  (0.1ms) rollback transaction
691
+  (0.1ms) begin transaction
692
+ API call (0.04ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
693
+  (0.0ms) rollback transaction
694
+  (0.0ms) begin transaction
695
+  (0.0ms) rollback transaction
696
+  (0.0ms) begin transaction
697
+ API call (0.08ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
698
+  (0.0ms) rollback transaction
699
+  (0.0ms) begin transaction
700
+  (0.0ms) rollback transaction
701
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
702
+  (0.0ms) begin transaction
703
+  (0.1ms) rollback transaction
704
+  (0.1ms) begin transaction
705
+  (0.1ms) rollback transaction
706
+  (0.0ms) begin transaction
707
+  (0.0ms) rollback transaction
708
+  (0.0ms) begin transaction
709
+  (0.0ms) rollback transaction
710
+  (0.0ms) begin transaction
711
+  (0.0ms) rollback transaction
712
+  (0.0ms) begin transaction
713
+  (0.1ms) rollback transaction
714
+  (0.2ms) begin transaction
715
+  (0.0ms) rollback transaction
716
+  (0.0ms) begin transaction
717
+  (0.0ms) rollback transaction
718
+  (0.0ms) begin transaction
719
+  (0.0ms) rollback transaction
720
+  (0.0ms) begin transaction
721
+  (0.1ms) rollback transaction
722
+  (0.0ms) begin transaction
723
+  (0.0ms) rollback transaction
724
+  (0.1ms) begin transaction
725
+  (0.1ms) rollback transaction
726
+  (0.1ms) begin transaction
727
+  (0.1ms) rollback transaction
728
+  (0.1ms) begin transaction
729
+  (0.1ms) rollback transaction
730
+  (0.1ms) begin transaction
731
+  (0.1ms) rollback transaction
732
+  (0.1ms) begin transaction
733
+  (0.0ms) rollback transaction
734
+  (0.0ms) begin transaction
735
+  (0.0ms) rollback transaction
736
+  (0.1ms) begin transaction
737
+  (0.1ms) rollback transaction
738
+  (0.0ms) begin transaction
739
+  (0.1ms) rollback transaction
740
+  (0.0ms) begin transaction
741
+ API call (0.05ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
742
+  (0.0ms) rollback transaction
743
+  (0.0ms) begin transaction
744
+  (0.0ms) rollback transaction
745
+  (0.0ms) begin transaction
746
+  (0.1ms) rollback transaction
747
+  (0.0ms) begin transaction
748
+  (0.0ms) rollback transaction
749
+  (0.0ms) begin transaction
750
+ API call (0.05ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
751
+  (0.0ms) rollback transaction
752
+  (0.0ms) begin transaction
753
+ API call (0.03ms): get ["/path", {:query=>"stuff", :headers=>{}}]
754
+  (0.0ms) rollback transaction
755
+  (0.0ms) begin transaction
756
+ API call (0.05ms): get ["/path", {:headers=>{}}]
757
+  (0.1ms) rollback transaction
758
+  (0.0ms) begin transaction
759
+ API call (0.05ms): get ["/path", {:headers=>{}}]
760
+  (0.0ms) rollback transaction
761
+  (0.0ms) begin transaction
762
+ API call (0.04ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
763
+  (0.0ms) rollback transaction
764
+  (0.0ms) begin transaction
765
+ API call (0.03ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
766
+  (0.0ms) rollback transaction
767
+  (0.0ms) begin transaction
768
+  (0.0ms) rollback transaction
769
+  (0.1ms) begin transaction
770
+ API call (0.06ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
771
+  (0.0ms) rollback transaction
772
+  (0.0ms) begin transaction
773
+  (0.0ms) rollback transaction
774
+  (0.0ms) begin transaction
775
+  (0.1ms) rollback transaction
776
+  (0.1ms) begin transaction
777
+  (0.1ms) rollback transaction
778
+  (0.0ms) begin transaction
779
+  (0.1ms) rollback transaction
780
+  (0.2ms) begin transaction
781
+ API call (0.14ms): get ["/api/v1/courses/123", {:headers=>{}}]
782
+  (0.2ms) rollback transaction
783
+  (0.1ms) begin transaction
784
+  (0.1ms) rollback transaction
785
+  (0.1ms) begin transaction
786
+ API call (0.04ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
787
+  (0.0ms) rollback transaction
788
+  (0.0ms) begin transaction
789
+ API call (0.06ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
790
+  (0.1ms) rollback transaction
791
+  (0.1ms) begin transaction
792
+  (0.0ms) rollback transaction
793
+  (0.0ms) begin transaction
794
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
795
+  (0.0ms) rollback transaction
796
+  (0.1ms) begin transaction
797
+ API call (0.06ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
798
+  (0.1ms) rollback transaction
799
+  (0.0ms) begin transaction
800
+  (0.0ms) rollback transaction
801
+  (0.0ms) begin transaction
802
+  (0.0ms) rollback transaction
803
+  (0.0ms) begin transaction
804
+ API call (0.03ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
805
+  (0.0ms) rollback transaction
806
+  (0.0ms) begin transaction
807
+  (0.0ms) rollback transaction
808
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
809
+  (0.0ms) begin transaction
810
+  (0.1ms) rollback transaction
811
+  (0.0ms) begin transaction
812
+  (0.0ms) rollback transaction
813
+  (0.0ms) begin transaction
814
+  (0.0ms) rollback transaction
815
+  (0.0ms) begin transaction
816
+  (0.0ms) rollback transaction
817
+  (0.0ms) begin transaction
818
+  (0.7ms) rollback transaction
819
+  (0.0ms) begin transaction
820
+  (0.0ms) rollback transaction
821
+  (0.0ms) begin transaction
822
+  (0.0ms) rollback transaction
823
+  (0.0ms) begin transaction
824
+  (0.0ms) rollback transaction
825
+  (0.0ms) begin transaction
826
+  (0.0ms) rollback transaction
827
+  (0.0ms) begin transaction
828
+  (0.1ms) rollback transaction
829
+  (0.1ms) begin transaction
830
+  (0.0ms) rollback transaction
831
+  (0.0ms) begin transaction
832
+  (0.1ms) rollback transaction
833
+  (0.1ms) begin transaction
834
+  (0.1ms) rollback transaction
835
+  (0.0ms) begin transaction
836
+  (0.0ms) rollback transaction
837
+  (0.0ms) begin transaction
838
+ API call (0.04ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
839
+  (0.0ms) rollback transaction
840
+  (0.0ms) begin transaction
841
+  (0.0ms) rollback transaction
842
+  (0.0ms) begin transaction
843
+  (0.0ms) rollback transaction
844
+  (0.0ms) begin transaction
845
+ API call (0.03ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
846
+  (0.0ms) rollback transaction
847
+  (0.0ms) begin transaction
848
+  (0.0ms) rollback transaction
849
+  (0.0ms) begin transaction
850
+ API call (0.51ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
851
+  (0.0ms) rollback transaction
852
+  (0.0ms) begin transaction
853
+  (0.0ms) rollback transaction
854
+  (0.0ms) begin transaction
855
+ API call (0.03ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
856
+  (0.0ms) rollback transaction
857
+  (0.0ms) begin transaction
858
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
859
+  (0.5ms) rollback transaction
860
+  (0.0ms) begin transaction
861
+  (0.0ms) rollback transaction
862
+  (0.0ms) begin transaction
863
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
864
+  (0.0ms) rollback transaction
865
+  (0.0ms) begin transaction
866
+ API call (0.03ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
867
+  (0.0ms) rollback transaction
868
+  (0.0ms) begin transaction
869
+  (0.0ms) rollback transaction
870
+  (0.1ms) begin transaction
871
+  (0.1ms) rollback transaction
872
+  (0.1ms) begin transaction
873
+  (0.0ms) rollback transaction
874
+  (0.0ms) begin transaction
875
+  (0.1ms) rollback transaction
876
+  (0.2ms) begin transaction
877
+ API call (0.08ms): get ["/path", {:headers=>{}}]
878
+  (0.1ms) rollback transaction
879
+  (0.0ms) begin transaction
880
+ API call (0.09ms): get ["/path", {:headers=>{}}]
881
+  (0.1ms) rollback transaction
882
+  (0.1ms) begin transaction
883
+ API call (0.06ms): get ["/path", {:query=>"stuff", :headers=>{}}]
884
+  (0.0ms) rollback transaction
885
+  (0.0ms) begin transaction
886
+ API call (0.04ms): get ["/api/v1/courses/123", {:headers=>{}}]
887
+  (0.0ms) rollback transaction
888
+  (0.0ms) begin transaction
889
+ API call (0.04ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
890
+  (0.0ms) rollback transaction
891
+  (0.0ms) begin transaction
892
+  (0.0ms) rollback transaction
893
+  (0.1ms) begin transaction
894
+ API call (0.06ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
895
+  (0.0ms) rollback transaction
896
+  (0.1ms) begin transaction
897
+  (0.0ms) rollback transaction
898
+  (0.0ms) begin transaction
899
+ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
900
+  (0.0ms) rollback transaction
901
+  (0.0ms) begin transaction
902
+  (0.0ms) rollback transaction
903
+  (0.1ms) begin transaction
904
+  (0.1ms) rollback transaction
905
+  (0.0ms) begin transaction
906
+  (0.0ms) rollback transaction
907
+  (0.0ms) begin transaction
908
+  (0.0ms) rollback transaction
909
+  (0.0ms) begin transaction
910
+  (0.0ms) rollback transaction
911
+  (0.0ms) begin transaction
912
+  (0.1ms) rollback transaction
913
+  (0.0ms) begin transaction
914
+  (0.0ms) rollback transaction
915
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
916
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
917
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
918
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
919
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
920
+  (0.0ms) begin transaction
921
+  (0.0ms) rollback transaction
922
+  (0.0ms) begin transaction
923
+  (0.1ms) rollback transaction
924
+  (0.0ms) begin transaction
925
+  (0.0ms) rollback transaction
926
+  (0.0ms) begin transaction
927
+  (0.0ms) rollback transaction
928
+  (0.0ms) begin transaction
929
+  (0.0ms) rollback transaction
930
+  (0.0ms) begin transaction
931
+  (0.0ms) rollback transaction
932
+  (0.0ms) begin transaction
933
+  (0.0ms) rollback transaction
934
+  (0.0ms) begin transaction
935
+  (0.0ms) rollback transaction
936
+  (0.0ms) begin transaction
937
+  (0.1ms) rollback transaction
938
+  (0.0ms) begin transaction
939
+  (0.0ms) rollback transaction
940
+  (0.0ms) begin transaction
941
+ Processing by CanvasOauth::CanvasController#oauth as HTML
942
+ Rendering text template
943
+ Rendered text template (0.0ms)
944
+ Completed 200 OK in 6ms (Views: 5.4ms | ActiveRecord: 0.0ms)
945
+  (0.1ms) rollback transaction
946
+  (0.0ms) begin transaction
947
+ Processing by CanvasOauth::CanvasController#oauth as HTML
948
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
949
+ Rendering text template
950
+ Rendered text template (0.0ms)
951
+ Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
952
+  (0.0ms) rollback transaction
953
+  (0.0ms) begin transaction
954
+ Processing by CanvasOauth::CanvasController#oauth as HTML
955
+ Parameters: {"code"=>"valid"}
956
+ Rendering text template
957
+ Rendered text template (0.0ms)
958
+ Completed 200 OK in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
959
+  (0.0ms) rollback transaction
960
+  (0.0ms) begin transaction
961
+ Processing by CanvasOauth::CanvasController#oauth as HTML
962
+ Parameters: {"code"=>"invalid"}
963
+ Rendering text template
964
+ Rendered text template (0.0ms)
965
+ Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
966
+  (0.0ms) rollback transaction
967
+  (0.0ms) begin transaction
968
+ Processing by CanvasOauth::CanvasController#oauth as HTML
969
+ Parameters: {"code"=>"valid"}
970
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
971
+  (0.0ms) rollback transaction
972
+  (0.0ms) begin transaction
973
+ Processing by CanvasOauth::CanvasController#oauth as HTML
974
+ Parameters: {"code"=>"valid"}
975
+ Rendering text template
976
+ Rendered text template (0.0ms)
977
+ Completed 200 OK in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)
978
+  (0.0ms) rollback transaction
979
+  (0.0ms) begin transaction
980
+ Processing by CanvasOauth::CanvasController#oauth as HTML
981
+ Parameters: {"code"=>"valid", "state"=>"mismatch"}
982
+ Rendering text template
983
+ Rendered text template (0.0ms)
984
+ Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
985
+  (0.0ms) rollback transaction
986
+  (0.0ms) begin transaction
987
+ Processing by CanvasOauth::CanvasController#oauth as HTML
988
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
989
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
990
+  (0.0ms) rollback transaction
991
+  (0.0ms) begin transaction
992
+  (0.0ms) rollback transaction
993
+  (0.0ms) begin transaction
994
+  (0.0ms) rollback transaction
995
+  (0.0ms) begin transaction
996
+  (0.1ms) rollback transaction
997
+  (0.0ms) begin transaction
998
+  (0.1ms) rollback transaction
999
+  (0.0ms) begin transaction
1000
+  (0.0ms) rollback transaction
1001
+  (0.0ms) begin transaction
1002
+  (0.0ms) rollback transaction
1003
+  (0.0ms) begin transaction
1004
+  (0.0ms) rollback transaction
1005
+  (0.0ms) begin transaction
1006
+  (0.0ms) rollback transaction
1007
+  (0.0ms) begin transaction
1008
+  (0.0ms) rollback transaction
1009
+  (0.0ms) begin transaction
1010
+  (0.0ms) rollback transaction
1011
+  (0.0ms) begin transaction
1012
+  (0.0ms) rollback transaction
1013
+  (0.0ms) begin transaction
1014
+  (0.1ms) rollback transaction
1015
+  (0.1ms) begin transaction
1016
+  (0.1ms) rollback transaction
1017
+  (0.2ms) begin transaction
1018
+  (0.0ms) rollback transaction
1019
+  (0.0ms) begin transaction
1020
+ API call (0.09ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
1021
+  (0.0ms) rollback transaction
1022
+  (0.0ms) begin transaction
1023
+ API call (0.04ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1024
+  (0.0ms) rollback transaction
1025
+  (0.0ms) begin transaction
1026
+  (0.0ms) rollback transaction
1027
+  (0.0ms) begin transaction
1028
+ API call (0.03ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
1029
+  (0.0ms) rollback transaction
1030
+  (0.0ms) begin transaction
1031
+  (0.0ms) rollback transaction
1032
+  (0.0ms) begin transaction
1033
+ API call (0.41ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1034
+  (0.0ms) rollback transaction
1035
+  (0.0ms) begin transaction
1036
+  (0.0ms) rollback transaction
1037
+  (0.0ms) begin transaction
1038
+ API call (0.08ms): get ["/path", {:headers=>{}}]
1039
+  (0.1ms) rollback transaction
1040
+  (0.6ms) begin transaction
1041
+ API call (0.05ms): get ["/path", {:query=>"stuff", :headers=>{}}]
1042
+  (0.0ms) rollback transaction
1043
+  (0.0ms) begin transaction
1044
+ API call (0.06ms): get ["/path", {:headers=>{}}]
1045
+  (0.1ms) rollback transaction
1046
+  (0.0ms) begin transaction
1047
+  (0.0ms) rollback transaction
1048
+  (0.6ms) begin transaction
1049
+ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
1050
+  (0.0ms) rollback transaction
1051
+  (0.0ms) begin transaction
1052
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
1053
+  (0.0ms) rollback transaction
1054
+  (0.0ms) begin transaction
1055
+  (0.0ms) rollback transaction
1056
+  (0.0ms) begin transaction
1057
+  (0.0ms) rollback transaction
1058
+  (0.0ms) begin transaction
1059
+ API call (0.04ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
1060
+  (0.0ms) rollback transaction
1061
+  (0.0ms) begin transaction
1062
+ API call (0.03ms): get ["/api/v1/courses/123", {:headers=>{}}]
1063
+  (0.0ms) rollback transaction
1064
+  (0.0ms) begin transaction
1065
+  (0.0ms) rollback transaction
1066
+  (0.1ms) begin transaction
1067
+ API call (0.03ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
1068
+  (0.0ms) rollback transaction
1069
+  (0.0ms) begin transaction
1070
+  (0.0ms) rollback transaction
1071
+  (0.0ms) begin transaction
1072
+ API call (0.03ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
1073
+  (0.0ms) rollback transaction
1074
+  (0.0ms) begin transaction
1075
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
1076
+  (0.0ms) rollback transaction
1077
+  (0.0ms) begin transaction
1078
+  (0.0ms) rollback transaction
1079
+  (0.0ms) begin transaction
1080
+  (0.0ms) rollback transaction
1081
+  (0.0ms) begin transaction
1082
+  (0.1ms) rollback transaction
1083
+  (0.0ms) begin transaction
1084
+  (0.0ms) rollback transaction
1085
+  (0.0ms) begin transaction
1086
+  (0.0ms) rollback transaction
1087
+  (0.0ms) begin transaction
1088
+  (0.0ms) rollback transaction
1089
+  (0.0ms) begin transaction
1090
+  (0.0ms) rollback transaction
1091
+  (0.0ms) begin transaction
1092
+  (0.0ms) rollback transaction
1093
+  (0.0ms) begin transaction
1094
+  (0.0ms) rollback transaction
1095
+  (0.0ms) begin transaction
1096
+  (0.1ms) rollback transaction
1097
+  (0.0ms) begin transaction
1098
+  (0.0ms) rollback transaction
1099
+  (0.0ms) begin transaction
1100
+  (0.0ms) rollback transaction
1101
+  (0.0ms) begin transaction
1102
+  (0.0ms) rollback transaction
1103
+  (0.0ms) begin transaction
1104
+  (0.0ms) rollback transaction
1105
+  (0.0ms) begin transaction
1106
+  (0.0ms) rollback transaction
1107
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1108
+  (0.0ms) begin transaction
1109
+  (0.0ms) rollback transaction
1110
+  (0.1ms) begin transaction
1111
+  (0.0ms) rollback transaction
1112
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1113
+  (0.0ms) begin transaction
1114
+  (0.0ms) rollback transaction
1115
+  (0.0ms) begin transaction
1116
+  (0.0ms) rollback transaction
1117
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1118
+  (0.0ms) begin transaction
1119
+  (0.1ms) rollback transaction
1120
+  (0.0ms) begin transaction
1121
+ KTG LOOK AT ME
1122
+  (0.0ms) rollback transaction
1123
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1124
+  (0.0ms) begin transaction
1125
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1126
+ Rendering text template
1127
+ Rendered text template (0.0ms)
1128
+ Completed 200 OK in 3ms (Views: 3.0ms | ActiveRecord: 0.0ms)
1129
+  (0.0ms) rollback transaction
1130
+  (0.0ms) begin transaction
1131
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1132
+ Parameters: {"code"=>"valid", "state"=>"mismatch"}
1133
+ Rendering text template
1134
+ Rendered text template (0.0ms)
1135
+ Completed 200 OK in 4ms (Views: 4.0ms | ActiveRecord: 0.0ms)
1136
+  (0.0ms) rollback transaction
1137
+  (0.0ms) begin transaction
1138
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1139
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
1140
+ Completed 500 Internal Server Error in 2ms (ActiveRecord: 1.4ms)
1141
+  (0.0ms) rollback transaction
1142
+  (0.0ms) begin transaction
1143
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1144
+ Parameters: {"code"=>"valid"}
1145
+ Completed 500 Internal Server Error in 0ms (ActiveRecord: 0.1ms)
1146
+  (0.0ms) rollback transaction
1147
+  (0.1ms) begin transaction
1148
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1149
+ Parameters: {"code"=>"valid"}
1150
+ Rendering text template
1151
+ Rendered text template (0.0ms)
1152
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
1153
+  (0.0ms) rollback transaction
1154
+  (0.0ms) begin transaction
1155
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1156
+ Parameters: {"code"=>"invalid"}
1157
+ Rendering text template
1158
+ Rendered text template (0.0ms)
1159
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
1160
+  (0.1ms) rollback transaction
1161
+  (0.1ms) begin transaction
1162
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1163
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
1164
+ Rendering text template
1165
+ Rendered text template (0.0ms)
1166
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
1167
+  (0.0ms) rollback transaction
1168
+  (0.0ms) begin transaction
1169
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1170
+ Parameters: {"code"=>"valid"}
1171
+ Rendering text template
1172
+ Rendered text template (0.0ms)
1173
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
1174
+  (0.0ms) rollback transaction
1175
+  (0.0ms) begin transaction
1176
+  (0.0ms) rollback transaction
1177
+  (0.0ms) begin transaction
1178
+  (0.0ms) rollback transaction
1179
+  (0.0ms) begin transaction
1180
+  (0.0ms) rollback transaction
1181
+  (0.0ms) begin transaction
1182
+ API call (0.05ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1183
+  (0.0ms) rollback transaction
1184
+  (0.0ms) begin transaction
1185
+  (0.0ms) rollback transaction
1186
+  (0.0ms) begin transaction
1187
+ API call (0.04ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1188
+  (0.0ms) rollback transaction
1189
+  (0.0ms) begin transaction
1190
+  (0.1ms) rollback transaction
1191
+  (0.1ms) begin transaction
1192
+  (0.0ms) rollback transaction
1193
+  (0.1ms) begin transaction
1194
+  (0.1ms) rollback transaction
1195
+  (0.1ms) begin transaction
1196
+ API call (0.05ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
1197
+  (0.2ms) rollback transaction
1198
+  (0.0ms) begin transaction
1199
+  (0.0ms) rollback transaction
1200
+  (0.0ms) begin transaction
1201
+ API call (0.04ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
1202
+  (0.0ms) rollback transaction
1203
+  (0.0ms) begin transaction
1204
+  (0.1ms) rollback transaction
1205
+  (0.0ms) begin transaction
1206
+  (0.0ms) rollback transaction
1207
+  (0.0ms) begin transaction
1208
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
1209
+  (0.0ms) rollback transaction
1210
+  (0.0ms) begin transaction
1211
+  (0.1ms) rollback transaction
1212
+  (0.1ms) begin transaction
1213
+ API call (0.07ms): get ["/path", {:headers=>{}}]
1214
+  (0.0ms) rollback transaction
1215
+  (0.0ms) begin transaction
1216
+ API call (0.07ms): get ["/path", {:headers=>{}}]
1217
+  (0.0ms) rollback transaction
1218
+  (0.0ms) begin transaction
1219
+ API call (0.07ms): get ["/path", {:query=>"stuff", :headers=>{}}]
1220
+  (0.0ms) rollback transaction
1221
+  (0.0ms) begin transaction
1222
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
1223
+  (0.0ms) rollback transaction
1224
+  (0.0ms) begin transaction
1225
+ API call (0.03ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
1226
+  (0.0ms) rollback transaction
1227
+  (0.0ms) begin transaction
1228
+  (0.0ms) rollback transaction
1229
+  (0.0ms) begin transaction
1230
+  (0.0ms) rollback transaction
1231
+  (0.0ms) begin transaction
1232
+ API call (0.03ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
1233
+  (0.0ms) rollback transaction
1234
+  (0.0ms) begin transaction
1235
+ API call (0.05ms): get ["/api/v1/courses/123", {:headers=>{}}]
1236
+  (0.0ms) rollback transaction
1237
+  (0.0ms) begin transaction
1238
+  (0.0ms) rollback transaction
1239
+  (0.0ms) begin transaction
1240
+ API call (0.04ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
1241
+  (0.0ms) rollback transaction
1242
+  (0.0ms) begin transaction
1243
+ API call (0.03ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
1244
+  (0.0ms) rollback transaction
1245
+  (0.0ms) begin transaction
1246
+  (0.0ms) rollback transaction
1247
+  (0.0ms) begin transaction
1248
+  (0.0ms) rollback transaction
1249
+  (0.0ms) begin transaction
1250
+  (0.0ms) rollback transaction
1251
+  (0.0ms) begin transaction
1252
+  (0.0ms) rollback transaction
1253
+  (0.0ms) begin transaction
1254
+  (0.0ms) rollback transaction
1255
+  (0.0ms) begin transaction
1256
+  (0.0ms) rollback transaction
1257
+  (0.0ms) begin transaction
1258
+  (0.0ms) rollback transaction
1259
+  (0.1ms) begin transaction
1260
+  (0.0ms) rollback transaction
1261
+  (0.0ms) begin transaction
1262
+  (0.0ms) rollback transaction
1263
+  (0.0ms) begin transaction
1264
+  (0.0ms) rollback transaction
1265
+  (0.0ms) begin transaction
1266
+  (0.0ms) rollback transaction
1267
+  (0.0ms) begin transaction
1268
+  (0.1ms) rollback transaction
1269
+  (0.0ms) begin transaction
1270
+  (0.0ms) rollback transaction
1271
+  (0.0ms) begin transaction
1272
+  (0.0ms) rollback transaction
1273
+  (0.0ms) begin transaction
1274
+  (0.0ms) rollback transaction
1275
+  (0.0ms) begin transaction
1276
+  (0.1ms) rollback transaction
1277
+  (0.0ms) begin transaction
1278
+  (0.0ms) rollback transaction
1279
+  (0.0ms) begin transaction
1280
+  (0.0ms) rollback transaction
1281
+  (0.0ms) begin transaction
1282
+  (0.0ms) rollback transaction
1283
+  (0.0ms) begin transaction
1284
+  (0.0ms) rollback transaction
1285
+  (0.1ms) begin transaction
1286
+  (0.0ms) rollback transaction
1287
+  (0.0ms) begin transaction
1288
+ KTG LOOK AT ME
1289
+  (0.1ms) rollback transaction
1290
+  (0.0ms) begin transaction
1291
+  (0.0ms) rollback transaction
1292
+  (0.0ms) begin transaction
1293
+  (0.0ms) rollback transaction
1294
+  (0.0ms) begin transaction
1295
+  (0.0ms) rollback transaction
1296
+  (0.0ms) begin transaction
1297
+  (0.0ms) rollback transaction
1298
+  (0.0ms) begin transaction
1299
+  (0.0ms) rollback transaction
1300
+  (0.0ms) begin transaction
1301
+  (0.0ms) rollback transaction
1302
+  (0.0ms) begin transaction
1303
+  (0.0ms) rollback transaction
1304
+  (0.0ms) begin transaction
1305
+  (0.0ms) rollback transaction
1306
+  (0.0ms) begin transaction
1307
+  (0.0ms) rollback transaction
1308
+  (0.0ms) begin transaction
1309
+  (0.0ms) rollback transaction
1310
+  (0.0ms) begin transaction
1311
+  (0.0ms) rollback transaction
1312
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1313
+  (0.0ms) begin transaction
1314
+  (0.0ms) rollback transaction
1315
+  (0.0ms) begin transaction
1316
+  (0.0ms) rollback transaction
1317
+  (0.0ms) begin transaction
1318
+  (0.0ms) rollback transaction
1319
+  (0.0ms) begin transaction
1320
+  (0.0ms) rollback transaction
1321
+  (0.0ms) begin transaction
1322
+  (0.0ms) rollback transaction
1323
+  (0.0ms) begin transaction
1324
+  (0.0ms) rollback transaction
1325
+  (0.1ms) begin transaction
1326
+  (0.0ms) rollback transaction
1327
+  (0.4ms) begin transaction
1328
+  (0.0ms) rollback transaction
1329
+  (0.0ms) begin transaction
1330
+  (0.0ms) rollback transaction
1331
+  (0.0ms) begin transaction
1332
+  (0.0ms) rollback transaction
1333
+  (0.0ms) begin transaction
1334
+  (0.1ms) rollback transaction
1335
+  (0.0ms) begin transaction
1336
+  (0.0ms) rollback transaction
1337
+  (0.0ms) begin transaction
1338
+  (0.0ms) rollback transaction
1339
+  (0.0ms) begin transaction
1340
+  (0.0ms) rollback transaction
1341
+  (0.0ms) begin transaction
1342
+  (0.0ms) rollback transaction
1343
+  (0.0ms) begin transaction
1344
+  (0.0ms) rollback transaction
1345
+  (0.0ms) begin transaction
1346
+  (0.0ms) rollback transaction
1347
+  (0.0ms) begin transaction
1348
+  (0.0ms) rollback transaction
1349
+  (0.1ms) begin transaction
1350
+  (0.0ms) rollback transaction
1351
+  (0.1ms) begin transaction
1352
+  (0.0ms) rollback transaction
1353
+  (0.0ms) begin transaction
1354
+  (0.0ms) rollback transaction
1355
+  (0.0ms) begin transaction
1356
+  (0.0ms) rollback transaction
1357
+  (0.0ms) begin transaction
1358
+  (0.0ms) rollback transaction
1359
+  (0.0ms) begin transaction
1360
+  (0.0ms) rollback transaction
1361
+  (0.0ms) begin transaction
1362
+  (0.0ms) rollback transaction
1363
+  (0.0ms) begin transaction
1364
+  (0.0ms) rollback transaction
1365
+  (0.0ms) begin transaction
1366
+  (0.0ms) rollback transaction
1367
+  (0.0ms) begin transaction
1368
+  (0.0ms) rollback transaction
1369
+  (0.0ms) begin transaction
1370
+  (0.0ms) rollback transaction
1371
+  (0.0ms) begin transaction
1372
+  (0.0ms) rollback transaction
1373
+  (0.0ms) begin transaction
1374
+  (0.0ms) rollback transaction
1375
+  (0.0ms) begin transaction
1376
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
1377
+  (0.0ms) rollback transaction
1378
+  (0.0ms) begin transaction
1379
+  (0.0ms) rollback transaction
1380
+  (0.0ms) begin transaction
1381
+ API call (0.03ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
1382
+  (0.0ms) rollback transaction
1383
+  (0.0ms) begin transaction
1384
+  (0.0ms) rollback transaction
1385
+  (0.0ms) begin transaction
1386
+ API call (0.03ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1387
+  (0.0ms) rollback transaction
1388
+  (0.0ms) begin transaction
1389
+  (0.1ms) rollback transaction
1390
+  (0.0ms) begin transaction
1391
+  (0.1ms) rollback transaction
1392
+  (0.0ms) begin transaction
1393
+  (0.0ms) rollback transaction
1394
+  (0.1ms) begin transaction
1395
+  (0.0ms) rollback transaction
1396
+  (0.0ms) begin transaction
1397
+ API call (0.03ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
1398
+  (0.0ms) rollback transaction
1399
+  (0.0ms) begin transaction
1400
+ API call (0.03ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1401
+  (0.0ms) rollback transaction
1402
+  (0.0ms) begin transaction
1403
+ API call (0.08ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
1404
+  (0.0ms) rollback transaction
1405
+  (0.1ms) begin transaction
1406
+  (0.0ms) rollback transaction
1407
+  (0.0ms) begin transaction
1408
+  (0.0ms) rollback transaction
1409
+  (0.1ms) begin transaction
1410
+ API call (0.03ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
1411
+  (0.0ms) rollback transaction
1412
+  (0.1ms) begin transaction
1413
+ API call (0.03ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
1414
+  (0.0ms) rollback transaction
1415
+  (0.0ms) begin transaction
1416
+  (0.0ms) rollback transaction
1417
+  (0.0ms) begin transaction
1418
+ API call (0.08ms): get ["/path", {:headers=>{}}]
1419
+  (0.1ms) rollback transaction
1420
+  (0.0ms) begin transaction
1421
+ API call (0.04ms): get ["/path", {:headers=>{}}]
1422
+  (0.0ms) rollback transaction
1423
+  (0.0ms) begin transaction
1424
+ API call (0.04ms): get ["/path", {:query=>"stuff", :headers=>{}}]
1425
+  (0.0ms) rollback transaction
1426
+  (0.0ms) begin transaction
1427
+ API call (0.03ms): get ["/api/v1/courses/123", {:headers=>{}}]
1428
+  (0.0ms) rollback transaction
1429
+  (0.0ms) begin transaction
1430
+ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
1431
+  (0.0ms) rollback transaction
1432
+  (0.0ms) begin transaction
1433
+  (0.0ms) rollback transaction
1434
+  (0.0ms) begin transaction
1435
+  (0.0ms) rollback transaction
1436
+  (0.0ms) begin transaction
1437
+ API call (0.03ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
1438
+  (0.0ms) rollback transaction
1439
+  (0.0ms) begin transaction
1440
+  (0.0ms) rollback transaction
1441
+  (0.0ms) begin transaction
1442
+  (0.0ms) rollback transaction
1443
+  (0.0ms) begin transaction
1444
+  (0.0ms) rollback transaction
1445
+  (0.0ms) begin transaction
1446
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1447
+ Parameters: {"code"=>"valid"}
1448
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
1449
+  (0.0ms) rollback transaction
1450
+  (0.0ms) begin transaction
1451
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1452
+ Parameters: {"code"=>"valid"}
1453
+ Rendering text template
1454
+ Rendered text template (0.0ms)
1455
+ Completed 200 OK in 6ms (Views: 5.3ms | ActiveRecord: 0.0ms)
1456
+  (0.1ms) rollback transaction
1457
+  (0.0ms) begin transaction
1458
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1459
+ Parameters: {"code"=>"invalid"}
1460
+ Rendering text template
1461
+ Rendered text template (0.0ms)
1462
+ Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)
1463
+  (0.0ms) rollback transaction
1464
+  (0.0ms) begin transaction
1465
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1466
+ Parameters: {"code"=>"valid", "state"=>"mismatch"}
1467
+ Rendering text template
1468
+ Rendered text template (0.0ms)
1469
+ Completed 200 OK in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
1470
+  (0.0ms) rollback transaction
1471
+  (0.0ms) begin transaction
1472
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1473
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
1474
+ Completed 500 Internal Server Error in 0ms (ActiveRecord: 0.1ms)
1475
+  (0.0ms) rollback transaction
1476
+  (0.0ms) begin transaction
1477
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1478
+ Rendering text template
1479
+ Rendered text template (0.0ms)
1480
+ Completed 200 OK in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
1481
+  (0.0ms) rollback transaction
1482
+  (0.0ms) begin transaction
1483
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1484
+ Parameters: {"code"=>"valid"}
1485
+ Rendering text template
1486
+ Rendered text template (0.0ms)
1487
+ Completed 200 OK in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
1488
+  (0.0ms) rollback transaction
1489
+  (0.0ms) begin transaction
1490
+ Processing by CanvasOauth::CanvasController#oauth as HTML
1491
+ Parameters: {"code"=>"valid", "state"=>"zzyyxx"}
1492
+ Rendering text template
1493
+ Rendered text template (0.0ms)
1494
+ Completed 200 OK in 0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
1495
+  (0.0ms) rollback transaction
1496
+  (0.0ms) begin transaction
1497
+  (0.0ms) rollback transaction
1498
+  (0.0ms) begin transaction
1499
+ KTG LOOK AT ME
1500
+  (0.0ms) rollback transaction
1501
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1502
+  (0.1ms) begin transaction
1503
+  (0.1ms) rollback transaction
1504
+  (0.0ms) begin transaction
1505
+  (0.0ms) rollback transaction
1506
+  (0.0ms) begin transaction
1507
+  (0.0ms) rollback transaction
1508
+  (0.0ms) begin transaction
1509
+  (0.0ms) rollback transaction
1510
+  (0.0ms) begin transaction
1511
+ API call (0.07ms): get ["/api/v1/courses/123", {:headers=>{}}]
1512
+  (0.0ms) rollback transaction
1513
+  (0.1ms) begin transaction
1514
+  (0.1ms) rollback transaction
1515
+  (0.1ms) begin transaction
1516
+ API call (0.04ms): get ["/api/v1/courses/123/sections", {:query=>{:include=>["students", "avatar_url", "enrollments"], :per_page=>50}, :headers=>{}}]
1517
+  (0.1ms) rollback transaction
1518
+  (0.0ms) begin transaction
1519
+  (0.0ms) rollback transaction
1520
+  (0.0ms) begin transaction
1521
+ API call (0.03ms): put ["/api/v1/courses/123/assignments/345", {:body=>{:assignment=>{:omit_from_final_grade=>true}}, :headers=>{}}]
1522
+  (0.0ms) rollback transaction
1523
+  (0.0ms) begin transaction
1524
+ API call (0.1ms): get ["/api/v1/courses/123/assignments", {:query=>{:per_page=>50}, :headers=>{}}]
1525
+  (0.0ms) rollback transaction
1526
+  (0.0ms) begin transaction
1527
+  (0.0ms) rollback transaction
1528
+  (0.0ms) begin transaction
1529
+ API call (0.03ms): get ["/api/v1/accounts/1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1530
+  (0.0ms) rollback transaction
1531
+  (0.0ms) begin transaction
1532
+  (0.0ms) rollback transaction
1533
+  (0.0ms) begin transaction
1534
+  (0.0ms) rollback transaction
1535
+  (0.0ms) begin transaction
1536
+ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}, :headers=>{}}]
1537
+  (0.0ms) rollback transaction
1538
+  (0.0ms) begin transaction
1539
+  (0.0ms) rollback transaction
1540
+  (0.1ms) begin transaction
1541
+  (0.0ms) rollback transaction
1542
+  (0.0ms) begin transaction
1543
+ API call (0.03ms): post ["/api/v1/courses/123/assignments", {:body=>{:assignment=>{:name=>"Assignment"}}, :headers=>{}}]
1544
+  (0.0ms) rollback transaction
1545
+  (0.0ms) begin transaction
1546
+  (0.0ms) rollback transaction
1547
+  (0.0ms) begin transaction
1548
+ API call (0.03ms): get ["/api/v1/accounts/1/users", {:query=>{:per_page=>50}, :headers=>{}}]
1549
+  (0.0ms) rollback transaction
1550
+  (0.1ms) begin transaction
1551
+ API call (0.04ms): get ["/api/v1/courses", {:query=>{:per_page=>50}, :headers=>{}}]
1552
+  (0.0ms) rollback transaction
1553
+  (0.1ms) begin transaction
1554
+ API call (0.05ms): get ["/path", {:headers=>{}}]
1555
+  (0.0ms) rollback transaction
1556
+  (0.0ms) begin transaction
1557
+ API call (0.03ms): get ["/path", {:query=>"stuff", :headers=>{}}]
1558
+  (0.0ms) rollback transaction
1559
+  (0.0ms) begin transaction
1560
+ API call (0.03ms): get ["/path", {:headers=>{}}]
1561
+  (0.0ms) rollback transaction
1562
+  (0.1ms) begin transaction
1563
+ API call (0.05ms): put ["/api/v1/courses/1/assignments/2/submissions/3", {:body=>{}, :headers=>{}}]
1564
+  (0.0ms) rollback transaction
1565
+  (0.0ms) begin transaction
1566
+  (0.0ms) rollback transaction
1567
+  (0.0ms) begin transaction
1568
+ API call (0.03ms): get ["/api/v1/users/123/profile", {:headers=>{}}]
1569
+  (0.0ms) rollback transaction
1570
+  (0.0ms) begin transaction
1571
+  (0.0ms) rollback transaction
1572
+  (0.0ms) begin transaction
1573
+  (0.0ms) rollback transaction
1574
+  (0.0ms) begin transaction
1575
+  (0.1ms) rollback transaction
1576
+  (0.1ms) begin transaction
1577
+  (0.1ms) rollback transaction
1578
+  (0.1ms) begin transaction
1579
+  (0.1ms) rollback transaction
1580
+  (0.0ms) begin transaction
1581
+  (0.0ms) rollback transaction
1582
+  (0.0ms) begin transaction
1583
+  (0.0ms) rollback transaction
1584
+  (0.0ms) begin transaction
1585
+  (0.0ms) rollback transaction
1586
+  (0.0ms) begin transaction
1587
+  (0.0ms) rollback transaction
1588
+  (0.0ms) begin transaction
1589
+  (0.0ms) rollback transaction
1590
+  (0.0ms) begin transaction
1591
+  (0.0ms) rollback transaction
1592
+  (0.0ms) begin transaction
1593
+  (0.0ms) rollback transaction
1594
+  (0.0ms) begin transaction
1595
+  (0.0ms) rollback transaction
1596
+  (0.0ms) begin transaction
1597
+  (0.0ms) rollback transaction
1598
+  (0.0ms) begin transaction
1599
+  (0.0ms) rollback transaction
1600
+  (0.1ms) begin transaction
1601
+  (0.0ms) rollback transaction
1602
+  (0.0ms) begin transaction
1603
+  (0.0ms) rollback transaction
1604
+  (0.0ms) begin transaction
1605
+  (0.0ms) rollback transaction
1606
+  (0.0ms) begin transaction
1607
+  (0.0ms) rollback transaction
1608
+  (0.0ms) begin transaction
1609
+  (0.0ms) rollback transaction
1610
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1611
+  (0.0ms) begin transaction
1612
+  (0.1ms) rollback transaction
1613
+  (0.0ms) begin transaction
1614
+  (0.0ms) rollback transaction
1615
+  (0.0ms) begin transaction
1616
+  (0.1ms) rollback transaction
1617
+  (0.1ms) begin transaction
1618
+  (0.1ms) rollback transaction
1619
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1620
+  (0.0ms) begin transaction
1621
+  (0.1ms) rollback transaction
1622
+ Initializing Canvas using configuration in /Users/kgarner/exempt/instructure/canvas_oauth_engine/spec/dummy/config/canvas.yml
1623
+  (0.0ms) begin transaction
1624
+  (0.1ms) rollback transaction
1625
+  (0.0ms) begin transaction
1626
+  (0.1ms) rollback transaction
1627
+  (0.1ms) begin transaction
1628
+  (0.1ms) rollback transaction
1629
+  (0.1ms) begin transaction
1630
+  (0.1ms) rollback transaction