dce_lti 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/app/concerns/dce_lti/session_helpers.rb +1 -10
- data/lib/dce_lti/engine.rb +10 -0
- data/lib/dce_lti/version.rb +1 -1
- data/spec/controllers/dce_lti/configs_controller_spec.rb +4 -2
- data/spec/controllers/dce_lti/sessions_controller_spec.rb +14 -0
- data/spec/dummy/config/initializers/dce_lti_config.rb +14 -0
- data/spec/dummy/log/development.log +55 -0
- data/spec/dummy/log/test.log +5939 -0
- metadata +41 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0943e97f6d2613ad998906f27e159dcc604171d8
|
4
|
+
data.tar.gz: b7b5e43868381971bb4977435a029306d5352db1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f811c1fd2ddebd80675ee7f57dae0207363e8ec4e3c3d979e4496ad60dc403f9abb265025ff3f18d2e4e9049aca11e1a71c4afcc714991b46025ffff1c1a72d3
|
7
|
+
data.tar.gz: de233030855e214740d63d92b742802156d9821685bb92aeadc0ff3d5c36cea3592d818d86dafbf7cb91ff364b56402d32242b9bc730db9644063d240e1cb6be
|
data/README.md
CHANGED
@@ -55,6 +55,10 @@ The generated config looks something like (commented defaults omitted):
|
|
55
55
|
Most basic attributes are configured via ENV. See the generated
|
56
56
|
`config/initializers/dce_lti_config.rb` file.
|
57
57
|
|
58
|
+
`lti.copy_launch_attributes_to_session` is an array of symbols that allows you
|
59
|
+
to define attributes to copy to the rails session from the tool provider after
|
60
|
+
a successful launch. See `config/initializers/dce_lti_config.rb` for more info.
|
61
|
+
|
58
62
|
### X-Frame Options
|
59
63
|
|
60
64
|
We install a config file that removes `X-Frame-Options` by default to allow
|
@@ -143,7 +147,8 @@ can also just invoke `DceLti::Nonce.clean` on your own.
|
|
143
147
|
|
144
148
|
## Contributors
|
145
149
|
|
146
|
-
* Dan Collis-Puro -
|
150
|
+
* Dan Collis-Puro - [djcp](https://github.com/djcp)
|
151
|
+
* Rebecca Nesson - [rebeccanesson](https://github.com/rebeccanesson)
|
147
152
|
|
148
153
|
## License
|
149
154
|
|
@@ -1,14 +1,5 @@
|
|
1
1
|
module DceLti
|
2
2
|
module SessionHelpers
|
3
|
-
ATTRIBUTES_TO_EXTRACT_FOR_SESSION = %i|
|
4
|
-
context_id
|
5
|
-
context_label
|
6
|
-
context_title
|
7
|
-
resource_link_id
|
8
|
-
resource_link_title
|
9
|
-
tool_consumer_instance_guid
|
10
|
-
|
|
11
|
-
|
12
3
|
def valid_lti_request?(request)
|
13
4
|
tool_provider.valid_request?(request) &&
|
14
5
|
Nonce.valid?(tool_provider.oauth_nonce) &&
|
@@ -47,7 +38,7 @@ tool_consumer_instance_guid
|
|
47
38
|
end
|
48
39
|
|
49
40
|
def captured_attributes_from(tool_provider)
|
50
|
-
|
41
|
+
Engine.config.copy_launch_attributes_to_session.inject({}) do |attributes, att|
|
51
42
|
attributes.merge(att => tool_provider.send(att))
|
52
43
|
end
|
53
44
|
end
|
data/lib/dce_lti/engine.rb
CHANGED
@@ -4,6 +4,16 @@ require 'pg'
|
|
4
4
|
module DceLti
|
5
5
|
class Engine < ::Rails::Engine
|
6
6
|
def self.setup
|
7
|
+
config.copy_launch_attributes_to_session = %i|
|
8
|
+
context_id
|
9
|
+
context_label
|
10
|
+
context_title
|
11
|
+
resource_link_id
|
12
|
+
resource_link_title
|
13
|
+
tool_consumer_instance_guid
|
14
|
+
launch_presentation_return_url
|
15
|
+
|
|
16
|
+
|
7
17
|
config.provider_title = (ENV['LTI_PROVIDER_TITLE'] || 'DCE LTI Provider')
|
8
18
|
config.provider_description = (ENV['LTI_PROVIDER_DESCRIPTION'] || 'A description of this')
|
9
19
|
|
data/lib/dce_lti/version.rb
CHANGED
@@ -33,13 +33,15 @@ module DceLti
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'evaluates custom lambdas with controller context correctly' do
|
36
|
+
allow(controller).to receive(:awesome_method)
|
37
|
+
|
36
38
|
tool_config_extensions = ->(controller, tool_config) {
|
37
39
|
tool_config.extend ::IMS::LTI::Extensions::Canvas::ToolConfig
|
38
|
-
tool_config.canvas_domain!(controller.
|
40
|
+
tool_config.canvas_domain!(controller.awesome_method)
|
39
41
|
}
|
40
42
|
with_overridden_lti_config_of({tool_config_extensions: tool_config_extensions}) do
|
41
43
|
get :index, { format: :xml, use_route: :dce_lti }
|
42
|
-
expect(
|
44
|
+
expect(controller).to have_received(:awesome_method)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
@@ -29,6 +29,20 @@ module DceLti
|
|
29
29
|
expect(Nonce).to have_received(:valid?).with(nonce)
|
30
30
|
end
|
31
31
|
|
32
|
+
it 'has configurable captured session attributes' do
|
33
|
+
attributes_to_capture = [:foobar]
|
34
|
+
tool_provider = stub_successful_tool_provider
|
35
|
+
|
36
|
+
with_overridden_lti_config_of(
|
37
|
+
lti_config.merge(copy_launch_attributes_to_session: attributes_to_capture)
|
38
|
+
) do
|
39
|
+
|
40
|
+
post_to_create_with_params
|
41
|
+
|
42
|
+
expect(tool_provider).to have_received(:foobar)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
32
46
|
it 'uses a proc for consumer_key and consumer_secret if configured' do
|
33
47
|
tool_provider = stub_successful_tool_provider
|
34
48
|
consumer_key = 'a key'
|
@@ -10,6 +10,20 @@ DceLti::Engine.setup do |lti|
|
|
10
10
|
lti.consumer_secret = (ENV['LTI_CONSUMER_SECRET'] || 'consumer_secret')
|
11
11
|
lti.consumer_key = (ENV['LTI_CONSUMER_KEY'] || 'consumer_key')
|
12
12
|
|
13
|
+
# `lti.copy_launch_attributes_to_session` is an array of attributes to copy
|
14
|
+
# to the default rails session from the IMS::LTI::ToolProvider instance after
|
15
|
+
# a successful launch. The default attributes are defined in
|
16
|
+
# `DceLti::Engine.setup`, and the possible canvas-lms attributes are defined
|
17
|
+
# in:
|
18
|
+
#
|
19
|
+
# https://github.com/instructure/ims-lti/blob/master/lib/ims/lti/launch_params.rb#L9
|
20
|
+
# https://github.com/instructure/ims-lti/blob/master/lib/ims/lti/tool_provider.rb
|
21
|
+
#
|
22
|
+
# and in the spec as well:
|
23
|
+
# http://www.imsglobal.org/LTI/v1p1p1/ltiIMGv1p1p1.html#_Toc330273026
|
24
|
+
#
|
25
|
+
# lti.copy_launch_attributes_to_session.push(:additional_attribute_to_capture)
|
26
|
+
|
13
27
|
# The consumer_secret and consumer_key should be a lambda that will be
|
14
28
|
# evaluated in the context of your application. You might use a service
|
15
29
|
# object or model proper to find key and secret pairs. Example:
|
@@ -2873,3 +2873,58 @@ Completed 200 OK in 3ms (Views: 0.4ms | ActiveRecord: 0.6ms)
|
|
2873
2873
|
[1m[36m (0.2ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
2874
2874
|
[1m[35m (3.2ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20141008172001')
|
2875
2875
|
[1m[36m (3.3ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20141003180140')[0m
|
2876
|
+
[1m[36m (106.9ms)[0m [1mDROP DATABASE IF EXISTS "dce_lti_dummy_test"[0m
|
2877
|
+
[1m[35m (330.2ms)[0m CREATE DATABASE "dce_lti_dummy_test" ENCODING = 'utf8'
|
2878
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
2879
|
+
[1m[35m (7.2ms)[0m CREATE TABLE "dce_lti_nonces" ("id" serial primary key, "nonce" character varying(255), "created_at" timestamp, "updated_at" timestamp)
|
2880
|
+
[1m[36m (3.3ms)[0m [1mCREATE UNIQUE INDEX "index_dce_lti_nonces_on_nonce" ON "dce_lti_nonces" USING btree ("nonce")[0m
|
2881
|
+
[1m[35m (6.7ms)[0m CREATE TABLE "dce_lti_users" ("id" serial primary key, "lti_user_id" character varying(255), "lis_person_contact_email_primary" character varying(255), "lis_person_name_family" character varying(255), "lis_person_name_full" character varying(255), "lis_person_name_given" character varying(255), "lis_person_sourcedid" character varying(255), "user_image" character varying(255), "roles" character varying(255)[] DEFAULT '{}', "created_at" timestamp, "updated_at" timestamp)
|
2882
|
+
[1m[36m (1.3ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) [0m
|
2883
|
+
[1m[35m (5.7ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2884
|
+
[1m[36m (0.2ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
2885
|
+
[1m[35m (2.4ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20141008172001')
|
2886
|
+
[1m[36m (2.3ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20141003180140')[0m
|
2887
|
+
[1m[36m (106.2ms)[0m [1mDROP DATABASE IF EXISTS "dce_lti_dummy_test"[0m
|
2888
|
+
[1m[35m (233.4ms)[0m CREATE DATABASE "dce_lti_dummy_test" ENCODING = 'utf8'
|
2889
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
2890
|
+
[1m[35m (10.1ms)[0m CREATE TABLE "dce_lti_nonces" ("id" serial primary key, "nonce" character varying(255), "created_at" timestamp, "updated_at" timestamp)
|
2891
|
+
[1m[36m (7.2ms)[0m [1mCREATE UNIQUE INDEX "index_dce_lti_nonces_on_nonce" ON "dce_lti_nonces" USING btree ("nonce")[0m
|
2892
|
+
[1m[35m (13.2ms)[0m CREATE TABLE "dce_lti_users" ("id" serial primary key, "lti_user_id" character varying(255), "lis_person_contact_email_primary" character varying(255), "lis_person_name_family" character varying(255), "lis_person_name_full" character varying(255), "lis_person_name_given" character varying(255), "lis_person_sourcedid" character varying(255), "user_image" character varying(255), "roles" character varying(255)[] DEFAULT '{}', "created_at" timestamp, "updated_at" timestamp)
|
2893
|
+
[1m[36m (2.8ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) [0m
|
2894
|
+
[1m[35m (7.3ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2895
|
+
[1m[36m (0.3ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
2896
|
+
[1m[35m (2.6ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20141008172001')
|
2897
|
+
[1m[36m (2.5ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20141003180140')[0m
|
2898
|
+
[1m[36m (104.7ms)[0m [1mDROP DATABASE IF EXISTS "dce_lti_dummy_test"[0m
|
2899
|
+
[1m[35m (239.6ms)[0m CREATE DATABASE "dce_lti_dummy_test" ENCODING = 'utf8'
|
2900
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
2901
|
+
[1m[35m (9.8ms)[0m CREATE TABLE "dce_lti_nonces" ("id" serial primary key, "nonce" character varying(255), "created_at" timestamp, "updated_at" timestamp)
|
2902
|
+
[1m[36m (5.8ms)[0m [1mCREATE UNIQUE INDEX "index_dce_lti_nonces_on_nonce" ON "dce_lti_nonces" USING btree ("nonce")[0m
|
2903
|
+
[1m[35m (6.8ms)[0m CREATE TABLE "dce_lti_users" ("id" serial primary key, "lti_user_id" character varying(255), "lis_person_contact_email_primary" character varying(255), "lis_person_name_family" character varying(255), "lis_person_name_full" character varying(255), "lis_person_name_given" character varying(255), "lis_person_sourcedid" character varying(255), "user_image" character varying(255), "roles" character varying(255)[] DEFAULT '{}', "created_at" timestamp, "updated_at" timestamp)
|
2904
|
+
[1m[36m (1.5ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) [0m
|
2905
|
+
[1m[35m (3.4ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2906
|
+
[1m[36m (0.2ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
2907
|
+
[1m[35m (1.1ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20141008172001')
|
2908
|
+
[1m[36m (1.1ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20141003180140')[0m
|
2909
|
+
[1m[36m (106.0ms)[0m [1mDROP DATABASE IF EXISTS "dce_lti_dummy_test"[0m
|
2910
|
+
[1m[35m (227.1ms)[0m CREATE DATABASE "dce_lti_dummy_test" ENCODING = 'utf8'
|
2911
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
2912
|
+
[1m[35m (10.0ms)[0m CREATE TABLE "dce_lti_nonces" ("id" serial primary key, "nonce" character varying(255), "created_at" timestamp, "updated_at" timestamp)
|
2913
|
+
[1m[36m (7.1ms)[0m [1mCREATE UNIQUE INDEX "index_dce_lti_nonces_on_nonce" ON "dce_lti_nonces" USING btree ("nonce")[0m
|
2914
|
+
[1m[35m (13.2ms)[0m CREATE TABLE "dce_lti_users" ("id" serial primary key, "lti_user_id" character varying(255), "lis_person_contact_email_primary" character varying(255), "lis_person_name_family" character varying(255), "lis_person_name_full" character varying(255), "lis_person_name_given" character varying(255), "lis_person_sourcedid" character varying(255), "user_image" character varying(255), "roles" character varying(255)[] DEFAULT '{}', "created_at" timestamp, "updated_at" timestamp)
|
2915
|
+
[1m[36m (2.8ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) [0m
|
2916
|
+
[1m[35m (7.2ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2917
|
+
[1m[36m (0.2ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
2918
|
+
[1m[35m (2.4ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20141008172001')
|
2919
|
+
[1m[36m (2.4ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20141003180140')[0m
|
2920
|
+
[1m[36m (105.4ms)[0m [1mDROP DATABASE IF EXISTS "dce_lti_dummy_test"[0m
|
2921
|
+
[1m[35m (340.1ms)[0m CREATE DATABASE "dce_lti_dummy_test" ENCODING = 'utf8'
|
2922
|
+
[1m[36mSQL (0.4ms)[0m [1mCREATE EXTENSION IF NOT EXISTS "plpgsql"[0m
|
2923
|
+
[1m[35m (17.6ms)[0m CREATE TABLE "dce_lti_nonces" ("id" serial primary key, "nonce" character varying(255), "created_at" timestamp, "updated_at" timestamp)
|
2924
|
+
[1m[36m (3.4ms)[0m [1mCREATE UNIQUE INDEX "index_dce_lti_nonces_on_nonce" ON "dce_lti_nonces" USING btree ("nonce")[0m
|
2925
|
+
[1m[35m (6.7ms)[0m CREATE TABLE "dce_lti_users" ("id" serial primary key, "lti_user_id" character varying(255), "lis_person_contact_email_primary" character varying(255), "lis_person_name_family" character varying(255), "lis_person_name_full" character varying(255), "lis_person_name_given" character varying(255), "lis_person_sourcedid" character varying(255), "user_image" character varying(255), "roles" character varying(255)[] DEFAULT '{}', "created_at" timestamp, "updated_at" timestamp)
|
2926
|
+
[1m[36m (1.4ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) [0m
|
2927
|
+
[1m[35m (3.4ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2928
|
+
[1m[36m (0.2ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
2929
|
+
[1m[35m (1.0ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20141008172001')
|
2930
|
+
[1m[36m (1.1ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20141003180140')[0m
|