canvas_oauth_engine 2.1.2 → 2.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d66a225fd03c8734a9f4b39aca6625227689c207
4
- data.tar.gz: 04d1c9e40173cd975a4d4d736cc48ec0a672441f
3
+ metadata.gz: b7c55542e1d6b9c5e141c59670d06ecba6bba26b
4
+ data.tar.gz: 42a9cd9fe36eccdf3fc59c0e91751024b7ebba2a
5
5
  SHA512:
6
- metadata.gz: ac97af15039693efa6eadfa28055eaa9584b4b10ab3951246663accc5e4c7371b15dc2de8b13d58a694d7c11bf35c8eab29f5c1466cc315595a9a473a687399e
7
- data.tar.gz: 15c980b1cd0f21586d6afef28e9fde5ddf7d70be98c3970ee637ce29b24ce95d89a70433a694ec955dc7a31d7babcc342286a54266e64a55e370eebaad5e0dac
6
+ metadata.gz: 01a9107fb3437328c8bcb6a661ba1448d2004a9596fdf7f1d777ae3e2c2026fb3e778d4a5b1d722d44410d7cdd972828eca9d6f96afa5b6368e8c8471d95972f
7
+ data.tar.gz: e0b4f28bd735d415de80b835b1561ad08c6b9774bf23348a22b2ce54015bc9cf1f1fe0746208f18b49eb81ce0b2d9b4a56c8e42b03cc559531efdc8dcbd40477
@@ -8,6 +8,7 @@ require "canvas_oauth/canvas_application"
8
8
  require 'canvas_oauth/canvas_api'
9
9
  require 'canvas_oauth/canvas_api_extensions'
10
10
  require 'canvas_oauth/canvas_config'
11
+ require 'canvas_oauth/default_utf8_parser'
11
12
 
12
13
  module CanvasOauth
13
14
  mattr_accessor :app_root
@@ -74,7 +74,7 @@ module CanvasOauth
74
74
  if report['status'] == 'complete'
75
75
  file_id = report['file_url'].match(/files\/([0-9]+)\/download/)[1]
76
76
  file = get_file(file_id)
77
- return hash_csv(self.class.get(file['url'], limit: 15).parsed_response)
77
+ return hash_csv(self.class.get(file['url'], limit: 15, parser: DefaultUTF8Parser).parsed_response)
78
78
  else
79
79
  return report
80
80
  end
@@ -0,0 +1,13 @@
1
+ module CanvasOauth
2
+ # We get into a weird case with the CDN with canvas where the Content-Type for a CSV comes back as text/csv, but there
3
+ # is no associated charset with it. HTTParty will default to treating it as binary (aka ASCII-8BIT) data which causes
4
+ # issues downstream when the data gets combined with local application data. In cases where we can reasonably know
5
+ # it'll be a UTF-8 compatible file (i.e any csv file from canvas) we'll force an encoding of UTF-8 if ruby thinks its
6
+ # ASCII-8BIT
7
+ class DefaultUTF8Parser < HTTParty::Parser
8
+ def parse
9
+ body.force_encoding("UTF-8") if body&.encoding == Encoding::ASCII_8BIT
10
+ super
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module CanvasOauth
2
- VERSION = "2.1.2"
2
+ VERSION = "2.1.3"
3
3
  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
@@ -514,3 +514,1117 @@ API call (0.03ms): get ["/api/v1/courses/123/students", {:query=>{:per_page=>50}
514
514
   (0.1ms) rollback transaction
515
515
   (0.0ms) begin transaction
516
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