def setUp(self): self.api_user = factories.UserFactory(username='******', id=1) self.user1 = factories.UserFactory(id=2, email='*****@*****.**') self.user2 = factories.UserFactory(id=3, email='*****@*****.**') self.course_id = COURSE_ID self.enterprise_customer = factories.EnterpriseCustomerFactory( name='Spaghetti Enterprise') self.identity_provider = FakerFactory.create().slug() # pylint: disable=no-member factories.EnterpriseCustomerIdentityProviderFactory( provider_id=self.identity_provider, enterprise_customer=self.enterprise_customer, ) self.enterprise_customer_user1 = factories.EnterpriseCustomerUserFactory( user_id=self.user1.id, enterprise_customer=self.enterprise_customer, ) self.enterprise_customer_user2 = factories.EnterpriseCustomerUserFactory( user_id=self.user2.id, enterprise_customer=self.enterprise_customer, ) self.enrollment = factories.EnterpriseCourseEnrollmentFactory( id=2, enterprise_customer_user=self.enterprise_customer_user1, course_id=self.course_id, ) self.enrollment = factories.EnterpriseCourseEnrollmentFactory( id=3, enterprise_customer_user=self.enterprise_customer_user2, course_id=self.course_id, ) self.consent1 = factories.DataSharingConsentFactory( username=self.user1.username, course_id=self.course_id, enterprise_customer=self.enterprise_customer, ) self.consent2 = factories.DataSharingConsentFactory( username=self.user2.username, course_id=self.course_id, enterprise_customer=self.enterprise_customer, ) self.degreed = factories.DegreedEnterpriseCustomerConfigurationFactory( enterprise_customer=self.enterprise_customer, key='key', secret='secret', degreed_company_id='Degreed Company', active=True, degreed_base_url='https://www.degreed.com/', ) self.degreed_global_configuration = factories.DegreedGlobalConfigurationFactory( oauth_api_path='oauth/token', ) self.sapsf = factories.SAPSuccessFactorsEnterpriseCustomerConfigurationFactory( enterprise_customer=self.enterprise_customer, sapsf_base_url='http://enterprise.successfactors.com/', key='key', secret='secret', active=True, ) self.sapsf_global_configuration = factories.SAPSuccessFactorsGlobalConfigurationFactory( ) super(TestTransmitLearnerData, self).setUp()
def setUp(self): self.user = factories.UserFactory(username='******', id=1) self.course_id = 'course-v1:edX+DemoX+DemoCourse' self.course_key = 'edX+DemoX' self.enterprise_customer = factories.EnterpriseCustomerFactory() self.enterprise_customer_user = factories.EnterpriseCustomerUserFactory( user_id=self.user.id, enterprise_customer=self.enterprise_customer, ) self.data_sharing_consent = factories.DataSharingConsentFactory( username=self.user.username, course_id=self.course_id, enterprise_customer=self.enterprise_customer, granted=True, ) self.config = factories.SAPSuccessFactorsEnterpriseCustomerConfigurationFactory( enterprise_customer=self.enterprise_customer, sapsf_base_url='enterprise.successfactors.com', key='key', secret='secret', active=True, ) self.idp = factories.EnterpriseCustomerIdentityProviderFactory( enterprise_customer=self.enterprise_customer ) tpa_client_mock = mock.patch('enterprise.models.ThirdPartyAuthApiClient') self.tpa_client = tpa_client_mock.start().return_value # Default remote ID self.tpa_client.get_remote_id.return_value = 'fake-remote-id' self.addCleanup(tpa_client_mock.stop) self.exporter = self.config.get_learner_data_exporter('dummy-user') assert isinstance(self.exporter, LearnerExporter) super(TestLearnerExporter, self).setUp()
def _setup_enterprise_enrollment(self, user, course_id, course_key): """ Create enterprise enrollment for user in given course """ enterprise_customer_user = factories.EnterpriseCustomerUserFactory( user_id=user.id, enterprise_customer=self.enterprise_customer, ) factories.DataSharingConsentFactory( username=user.username, course_id=course_id, enterprise_customer=self.enterprise_customer, granted=True, ) enterprise_course_enrollment = factories.EnterpriseCourseEnrollmentFactory( enterprise_customer_user=enterprise_customer_user, course_id=course_id, ) factories.CornerstoneLearnerDataTransmissionAuditFactory( user_id=user.id, session_token=self.session_token, callback_url=self.callback_url, subdomain=self.subdomain, course_id=course_key, user_guid=self.user_guid) return enterprise_course_enrollment
def setUp(self): self.user = factories.UserFactory(username='******', id=1, email='*****@*****.**') self.course_id = 'course-v1:edX+DemoX+DemoCourse' self.enterprise_customer = factories.EnterpriseCustomerFactory() self.enterprise_customer_user = factories.EnterpriseCustomerUserFactory( user_id=self.user.id, enterprise_customer=self.enterprise_customer, ) self.data_sharing_consent = factories.DataSharingConsentFactory( username=self.user.username, course_id=self.course_id, enterprise_customer=self.enterprise_customer, granted=True, ) self.config = factories.DegreedEnterpriseCustomerConfigurationFactory( enterprise_customer=self.enterprise_customer, active=True, ) self.idp = factories.EnterpriseCustomerIdentityProviderFactory( enterprise_customer=self.enterprise_customer) tpa_client_mock = mock.patch( 'enterprise.models.ThirdPartyAuthApiClient') self.tpa_client = tpa_client_mock.start() self.tpa_client.return_value.get_remote_id.return_value = 'fake-remote-id' self.addCleanup(tpa_client_mock.stop) super(TestDegreedLearnerExporter, self).setUp()
def test_learner_data_multiple_courses( self, pacing, grade, mock_course_catalog_api, mock_course_api, mock_grades_api, mock_certificate_api, mock_enrollment_api ): mock_course_catalog_api.return_value.get_course_id.return_value = self.course_key enrollment1 = factories.EnterpriseCourseEnrollmentFactory( enterprise_customer_user=self.enterprise_customer_user, course_id=self.course_id, ) course_id2 = 'course-v1:edX+DemoX+DemoCourse2' enrollment2 = factories.EnterpriseCourseEnrollmentFactory( enterprise_customer_user=self.enterprise_customer_user, course_id=course_id2, ) factories.DataSharingConsentFactory( username=self.enterprise_customer_user.username, course_id=course_id2, enterprise_customer=self.enterprise_customer, granted=True ) enrollment3 = factories.EnterpriseCourseEnrollmentFactory( enterprise_customer_user=factories.EnterpriseCustomerUserFactory( user_id=factories.UserFactory(username='******', id=2).id, enterprise_customer=self.enterprise_customer, ), course_id=self.course_id, ) factories.DataSharingConsentFactory( username='******', course_id=self.course_id, enterprise_customer=self.enterprise_customer, granted=True ) def get_course_details(course_id): """ Mock course details - set course_id to match input """ return dict( pacing=pacing, course_id=course_id ) mock_course_api.return_value.get_course_details.side_effect = get_course_details def get_course_certificate(course_id, username): """ Mock certificate data - return depending on course_id """ if '2' in course_id: return dict( username=username, is_passing=True, grade=grade, ) raise HttpNotFoundError mock_certificate_api.return_value.get_course_certificate.side_effect = get_course_certificate def get_course_grade(course_id, username): """ Mock grades data - set passed depending on course_id """ return dict( passed='2' in course_id, course_key=course_id, username=username, ) mock_grades_api.return_value.get_course_grade.side_effect = get_course_grade # Mock enrollment data mock_enrollment_api.return_value.get_course_enrollment.return_value = dict( mode="verified" ) # Collect the learner data, with time set to NOW with freeze_time(self.NOW): learner_data = list(self.exporter.export()) assert len(learner_data) == 6 assert learner_data[0].course_id == self.course_key assert learner_data[1].course_id == self.course_id for report1 in learner_data[0:1]: assert report1.enterprise_course_enrollment_id == enrollment1.id assert not report1.course_completed assert report1.completed_timestamp is None assert report1.grade == LearnerExporter.GRADE_INCOMPLETE assert learner_data[2].course_id == self.course_key assert learner_data[3].course_id == self.course_id for report2 in learner_data[2:3]: assert report2.enterprise_course_enrollment_id == enrollment3.id assert not report2.course_completed assert report2.completed_timestamp is None assert report2.grade == LearnerExporter.GRADE_INCOMPLETE assert learner_data[4].course_id == self.course_key assert learner_data[5].course_id == course_id2 for report3 in learner_data[4:5]: assert report3.enterprise_course_enrollment_id == enrollment2.id # assert report3.course_id == course_id2 assert report3.course_completed assert report3.completed_timestamp == self.NOW_TIMESTAMP assert report3.grade == grade