def application_instances(self, pyramid_request):
     """Add some "noise" application instances."""
     # Add some "noise" application instances to the DB for every test, to
     # make the tests more realistic.
     application_instances = [
         ApplicationInstance(
             consumer_key="NOISE_CONSUMER_KEY_1",
             developer_key="NOISE_DEVELOPER_KEY_1",
             lms_url="NOISE_LMS_URL_1",
             shared_secret="NOISE_SHARED_SECRET_1",
             requesters_email="NOISE_EMAIL_1",
         ),
         ApplicationInstance(
             consumer_key="NOISE_CONSUMER_KEY_2",
             developer_key="NOISE_DEVELOPER_KEY_2",
             lms_url="NOISE_LMS_URL_2",
             shared_secret="NOISE_SHARED_SECRET_2",
             requesters_email="NOISE_EMAIL_2",
         ),
         ApplicationInstance(
             consumer_key="NOISE_CONSUMER_KEY_3",
             developer_key="NOISE_DEVELOPER_KEY_3",
             lms_url="NOISE_LMS_URL_3",
             shared_secret="NOISE_SHARED_SECRET_3",
             requesters_email="NOISE_EMAIL_3",
         ),
     ]
     pyramid_request.db.add_all(application_instances)
     return application_instances
예제 #2
0
    def test_provisioning_can_be_disabled(self, db_session):
        application_instance = ApplicationInstance()
        application_instance.provisioning = False
        db_session.add(application_instance)
        db_session.flush()

        assert application_instance.provisioning is False
예제 #3
0
    def test_provisioning_is_not_nullable(self, db_session):
        application_instance = ApplicationInstance()
        application_instance.provisioning = None
        db_session.add(application_instance)

        db_session.flush()

        assert application_instance.provisioning is not None
예제 #4
0
    def test_get_returns_the_matching_ApplicationInstance(
            self, db_session, application_instance):
        db_session.add(application_instance)

        assert (ApplicationInstance.get_by_consumer_key(
            db_session,
            application_instance.consumer_key) == application_instance)
예제 #5
0
def create_application_instance(request):
    """Create application instance in the databse and respond with key and secret."""

    # Default developer_key and developer_secret to None rather than letting
    # them be empty strings.
    developer_key = request.params["developer_key"].strip()
    developer_secret = request.params["developer_secret"].strip()

    # If either one of developer_key or developer_secret is missing, then we
    # don't save the other one either.
    if not developer_key or not developer_secret:
        developer_key = None
        developer_secret = None

    instance = ApplicationInstance.build_from_lms_url(
        request.params["lms_url"],
        request.params["email"],
        developer_key,
        developer_secret,
        request.registry.settings["aes_secret"],
        settings={
            "canvas": {
                "sections_enabled":
                bool(developer_key and request.feature("section_groups"))
            }
        },
    )
    request.db.add(instance)

    return {
        "consumer_key": instance.consumer_key,
        "shared_secret": instance.shared_secret,
    }
예제 #6
0
    def test_provisioning_defaults_to_True(self, db_session):
        application_instance = ApplicationInstance()
        db_session.add(application_instance)

        db_session.flush()

        assert application_instance.provisioning is True
예제 #7
0
 def application_instance(self):
     """Return the ApplicationInstance that the test GroupInfo belongs to."""
     return ApplicationInstance(
         consumer_key="test_consumer_key",
         shared_secret="test_shared_secret",
         lms_url="test_lms_url",
         requesters_email="test_requesters_email",
     )
예제 #8
0
 def application_instance(self):
     """Return an ApplicationInstance with minimal required attributes."""
     return ApplicationInstance(
         consumer_key="TEST_CONSUMER_KEY",
         shared_secret="TEST_SHARED_SECRET",
         lms_url="TEST_LMS_URL",
         requesters_email="TEST_EMAIL",
     )
예제 #9
0
 def application_instance(self, db_session):
     """Return the ApplicationInstance that the GradingInfos belong to."""
     application_instance = ApplicationInstance(
         consumer_key="test_consumer_key",
         shared_secret="test_shared_secret",
         lms_url="test_lms_url",
         requesters_email="test_requesters_email",
     )
     db_session.add(application_instance)
     return application_instance
예제 #10
0
 def test_application_instance(self, pyramid_request):
     application_instance = ApplicationInstance(
         consumer_key=pyramid_request.lti_user.oauth_consumer_key,
         developer_key="TEST_DEVELOPER_KEY",
         lms_url="TEST_LMS_URL",
         shared_secret="TEST_SHARED_SECRET",
         requesters_email="TEST_EMAIL",
     )
     pyramid_request.db.add(application_instance)
     return application_instance
예제 #11
0
def application_instance(db_session, pyramid_request):
    """Return the ApplicationInstance that the test OAuth2Token's belong to."""
    application_instance = ApplicationInstance(
        consumer_key=pyramid_request.lti_user.oauth_consumer_key,
        shared_secret="test_shared_secret",
        lms_url="test_lms_url",
        requesters_email="test_requesters_email",
    )
    db_session.add(application_instance)
    return application_instance
예제 #12
0
 def test_it_persists_application_instance(self, db_session):
     initial_count = db_session.query(ApplicationInstance).count()
     instance = ApplicationInstance(
         consumer_key="TEST_CONSUMER_KEY",
         shared_secret="TEST_SHARED_SECRET",
         lms_url="TEST_LMS_URL",
     )
     db_session.add(instance)
     new_count = db_session.query(ApplicationInstance).count()
     assert new_count == initial_count + 1
예제 #13
0
    def application_instance(self, db_session):
        # Load app so we create the instance after the DB has been truncated

        application_instance = ApplicationInstance(
            consumer_key=self.OAUTH_CONSUMER_KEY,
            shared_secret=self.SHARED_SECRET,
            lms_url="test_lms_url",
            requesters_email="test_requesters_email",
        )

        db_session.add(application_instance)
        db_session.commit()

        return application_instance
예제 #14
0
 def test_get_returns_None_if_theres_no_matching_ApplicationInstance(
         self, db_session):
     assert (ApplicationInstance.get_by_consumer_key(
         db_session, "unknown_consumer_key") is None)
예제 #15
0
 def build_ai_from_pair(pair):
     return ApplicationInstance.build_from_lms_url(
         pair[0], pair[1], None, None, None, None
     )