예제 #1
0
    def test_receiver_called_after_cert_change(self, action_handler):
        """
        Test that hooks_handler is called the correct information after sending
        COHORT_MEMBERSHIP_CHANGED event.
        """
        metadata = EventsMetadata(
            event_type="org.openedx.learning.cohort_membership.changed.v1",
            minorversion=0,
        )
        expected_metadata_subset = {
            "event_type": metadata.event_type,
            "minorversion": metadata.minorversion,
            "source": metadata.source,
            "sourcehost": metadata.sourcehost,
            "sourcelib": list(metadata.sourcelib),
        }
        action_handler.return_value.__name__ = "receiver"
        action_handler.return_value.__module__ = "receiver_module"
        COHORT_MEMBERSHIP_CHANGED.connect(
            hooks_handler, dispatch_uid="eox-hooks:post_cohort_change")

        COHORT_MEMBERSHIP_CHANGED.send_event(cohort=self.cohort, )

        self.assertDictContainsSubset(
            expected_metadata_subset,
            attr.asdict(action_handler.call_args.kwargs.get("metadata")),
        )
        self.assertEqual(self.cohort,
                         action_handler.call_args.kwargs.get("cohort"))
예제 #2
0
    def test_receiver_called_after_cert_revoked(self, action_handler):
        """
        Test that hooks_handler is called the correct information after sending
        CERTIFICATE_REVOKED event.
        """
        metadata = EventsMetadata(
            event_type="org.openedx.learning.certificate.revoked.v1",
            minorversion=0,
        )
        expected_metadata_subset = {
            "event_type": metadata.event_type,
            "minorversion": metadata.minorversion,
            "source": metadata.source,
            "sourcehost": metadata.sourcehost,
            "sourcelib": list(metadata.sourcelib),
        }
        action_handler.return_value.__name__ = "receiver"
        action_handler.return_value.__module__ = "receiver_module"
        CERTIFICATE_REVOKED.connect(
            hooks_handler, dispatch_uid="eox-hooks:post_certificate_revoke")

        CERTIFICATE_REVOKED.send_event(certificate=self.certificate, )

        self.assertDictContainsSubset(
            expected_metadata_subset,
            attr.asdict(action_handler.call_args.kwargs.get("metadata")),
        )
        self.assertEqual(self.certificate,
                         action_handler.call_args.kwargs.get("certificate"))
예제 #3
0
    def test_receiver_called_after_login(self, action_handler):
        """
        Test that hooks_handler is called the correct information after sending
        SESSION_LOGIN_COMPLETED event.
        """
        metadata = EventsMetadata(
            event_type="org.openedx.learning.auth.session.login.completed.v1",
            minorversion=0,
        )
        expected_metadata_subset = {
            "event_type": metadata.event_type,
            "minorversion": metadata.minorversion,
            "source": metadata.source,
            "sourcehost": metadata.sourcehost,
            "sourcelib": list(metadata.sourcelib),
        }
        action_handler.return_value.__name__ = "receiver"
        action_handler.return_value.__module__ = "receiver_module"
        SESSION_LOGIN_COMPLETED.connect(
            hooks_handler, dispatch_uid="eox-hooks:post_session_login")

        SESSION_LOGIN_COMPLETED.send_event(user=self.user, )

        self.assertDictContainsSubset(
            expected_metadata_subset,
            attr.asdict(action_handler.call_args.kwargs.get("metadata")),
        )
        self.assertEqual(self.user,
                         action_handler.call_args.kwargs.get("user"))
예제 #4
0
    def test_receiver_called_after_unenrollment(self, action_handler):
        """
        Test that hooks_handler is called the correct information after sending
        COURSE_UNENROLLMENT_COMPLETED event.
        """
        metadata = EventsMetadata(
            event_type="org.openedx.learning.course.unenrollment.completed.v1",
            minorversion=0,
        )
        expected_metadata_subset = {
            "event_type": metadata.event_type,
            "minorversion": metadata.minorversion,
            "source": metadata.source,
            "sourcehost": metadata.sourcehost,
            "sourcelib": list(metadata.sourcelib),
        }
        action_handler.return_value.__name__ = "receiver"
        action_handler.return_value.__module__ = "receiver_module"
        COURSE_UNENROLLMENT_COMPLETED.connect(
            hooks_handler, dispatch_uid="eox-hooks:post_unenrollment")

        COURSE_UNENROLLMENT_COMPLETED.send_event(enrollment=self.enrollment, )

        self.assertDictContainsSubset(
            expected_metadata_subset,
            attr.asdict(action_handler.call_args.kwargs.get("metadata")),
        )
        self.assertEqual(self.enrollment,
                         action_handler.call_args.kwargs.get("enrollment"))
예제 #5
0
    def generate_signal_metadata(self):
        """
        Generate signal metadata when an event is sent.

        These fields are generated on the fly and are a subset of the Event
        Message defined in the OEP-41.

        Example usage:
            >>> metadata = \
                STUDENT_REGISTRATION_COMPLETED.generate_signal_metadata()
                attr.asdict(metadata)
            {
                'event_type': '...learning.student.registration.completed.v1',
                'minorversion': 0,
                'time': '2021-06-09T14:12:45.320819Z',
                'source': 'openedx/lms/web',
                'sourcehost': 'edx.devstack.lms',
                'specversion': '1.0',
                'sourcelib: (0,1,0,),
            }
        """
        return EventsMetadata(
            event_type=self.event_type,
            minorversion=self.minor_version,
        )