canvas_oauth_engine 2.1.2 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
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