def test_duplicating_services(self): # given user = EmailUserFactory(is_staff=True, is_superuser=True, is_active=True) token, created = Token.objects.get_or_create(user=user) romania = GeographicRegion.objects.get(slug='romania') self.assertIsNotNone(romania) ServiceFactory(region=romania, status='current') existing_service = Service.objects.all() self.assertEqual(len(existing_service), 1) # when duplicate_post = self.api_client.post( path='/v2/services/' + str(existing_service[0].id) + '/duplicate/?new_name=Test123', HTTP_SERVICEINFOAUTHORIZATION="Token %s" % token.key, format='json') self.assertEqual(duplicate_post.status_code, 201) # then duplicated_service = Service.objects.filter(name_en='Test123') self.assertEqual(Service.objects.all().count(), 2) self.assertEqual(len(duplicated_service), 1) self.assertNotEqual(existing_service[0].slug, duplicated_service[0].slug)
def test_duplicate_registration(self): """Notify user of attempted duplicate registration.""" user = EmailUserFactory(password='******') provider_type = ProviderTypeFactory() self.load_page_and_set_language() menu = self.wait_for_element('menu') registration = menu.find_elements_by_link_text('Provider Registration')[0] registration.click() form = self.wait_for_element('provider-form') self.assertHashLocation('/register') data = { 'name': 'Joe Provider', 'phone_number': '12-345678', 'description': 'Test provider', 'focal_point_name': 'John Doe', 'focal_point_phone_number': '87-654321', 'address': '1313 Mockingbird Lane, Beirut, Lebanon', 'email': user.email, 'password1': 'foobar', 'password2': 'foobar', 'number_of_monthly_beneficiaries': '37', 'type': provider_type.name, } self.submit_form(form, data, button_class='form-btn-submit') error = self.wait_for_element('label[for="id_email"] .error', match=By.CSS_SELECTOR) self.assertIn('email already exists', error.text)
def test_ordering(self): # given user = EmailUserFactory(is_staff=True, is_superuser=True, is_active=True) token, created = Token.objects.get_or_create(user=user) service_type = ServiceType.objects.first() types_ordering = self.api_client.get('/v2/servicetypes/') self.assertEqual(types_ordering.status_code, 200) types_ordering = json.loads(types_ordering.content.decode('utf-8')) service_type = self.api_client.get('/v2/servicetypes/' + str(service_type.id) + '/') self.assertEqual(service_type.status_code, 200) service_type = json.loads(service_type.content.decode('utf-8')) # when types_ordering = sorted(types_ordering, key=lambda k: k['name']) service_type['comments_en'] = 'test' service_type['types_ordering'] = types_ordering type_post = self.api_client.put( path='/v2/servicetypes/' + str(service_type['id']) + '/', data=service_type, HTTP_SERVICEINFOAUTHORIZATION="Token %s" % token.key, format='json') self.assertEqual(type_post.status_code, 200) # then types = ServiceType.objects.all().order_by('number') self.assertEqual(types_ordering[0]['name'], types[0].name)
def test_confirm_registration(self): """New user activating their registration.""" EmailUserFactory( password='******', is_active=False, activation_key='1234567890') self.load_page_and_set_language() self.browser.get(self.express_url + '#/register/verify/1234567890') self.wait_for_landing_page(timeout=2 * DEFAULT_TIMEOUT)
def setUp(self): self.user = EmailUserFactory(is_superuser=True) # Use the existing sites; their use of hard-coded pks breaks the ability to # add arbitrary additional sites for this test. self.orig_site_domain = 'serviceinfo.rescue.org' self.new_site_domain = 'serviceinfo-staging.rescue.org' self.orig_site = Site.objects.get(domain=self.orig_site_domain) self.new_site = Site.objects.get(domain=self.new_site_domain) utils.create_essential_pages(self.user, self.orig_site)
def setUp(self): self.service = ServiceFactory(status=Service.STATUS_DRAFT, location="POINT (33.0000 35.0000)") self.password = '******' self.user = EmailUserFactory(is_staff=True, password=self.password) assert self.user.is_staff group = Group.objects.get(name='Staff') self.user.groups.add(group) assert self.user.has_perm('services.change_service') assert self.client.login(email=self.user.email, password=self.password)
def test_user_exists(self): email = "*****@*****.**" EmailUserFactory(email=email) form = EmailUserCreationForm({ 'email': email, 'password1': 'password', 'password2': 'password' }) self.assertFalse(form.is_valid()) self.assertIn('email', form.errors)
def test_staff_add_providers(self): # Remember, only one provider per user self.user.is_staff = True self.user.save() type1 = ProviderTypeFactory() provider1 = ProviderFactory.build(type=type1, user=self.user) # Doesn't save user2 = EmailUserFactory() type2 = ProviderTypeFactory() provider2 = ProviderFactory.build(type=type2, user=user2) # Doesn't save book = get_export_workbook([provider1, provider2]) rsp = self.import_book(book) self.assertEqual(OK, rsp.status_code, msg=rsp.content.decode('utf-8')) self.assertTrue( Provider.objects.filter(name_en=provider1.name_en).exists()) self.assertTrue( Provider.objects.filter(name_en=provider2.name_en).exists())
def test_staff_see_all_current_data(self): user = EmailUserFactory(is_staff=True) provider = ProviderFactory() ProviderFactory() ServiceFactory(provider=provider, status=Service.STATUS_CURRENT) ServiceFactory(provider=provider, status=Service.STATUS_CURRENT) ServiceFactory(status=Service.STATUS_CURRENT) ServiceFactory(provider=provider, status=Service.STATUS_DRAFT) book = get_export_workbook_for_user(user) xlrd_book = save_and_read_book(book) # First sheet - providers sheet = xlrd_book.get_sheet(0) self.assertEqual(3, sheet.nrows - 1) # Second sheet - services sheet = xlrd_book.get_sheet(1) self.assertEqual(3, sheet.nrows - 1)
def test_logout_and_login_as_staff(self): # Staff user sees the reports button even after logging out and in self.password = '******' self.user = EmailUserFactory(password=self.password) self.user.is_staff = True self.user.save() self.load_page_and_set_language() self.login() button = self.wait_for_element('view_reports_button') self.assertTrue(button.is_displayed()) self.logout() # Give the page time to start reloading before looking for the button again time.sleep(1) self.login() # Give the page time to start reloading before looking for the button again time.sleep(1) button = self.wait_for_element('view_reports_button') self.assertTrue(button.is_displayed()) # User can view reports page button.click() self.wait_for_element('report-table')
def test_logout_and_login_as_non_staff(self): # Non-staff user sees the reports button, even after logging out # and in and changing language. Even if superuser. self.password = '******' self.user = EmailUserFactory(password=self.password) self.user.is_superuser = True self.user.save() self.load_page_and_set_language() self.login() button = self.wait_for_element('view_reports_button', must_be_visible=False) self.assertTrue(button.is_displayed()) # Log out and in again self.logout() # Give the page time to start reloading before looking for the menu again time.sleep(0.5) self.login() # Give the page time to start reloading before looking for the button again time.sleep(0.5) button = self.wait_for_element('view_reports_button', must_be_visible=False) self.assertTrue(button.is_displayed()) # Set the language again form = self.wait_for_element('language-toggle') button = form.find_element_by_css_selector('[data-lang="%s"]' % 'en') button.click() # Give the page time to start reloading before looking for the button again time.sleep(0.5) button = self.wait_for_element('view_reports_button', must_be_visible=False) self.assertTrue(button.is_displayed()) # User can view reports page button.click() self.wait_for_element('report-table')
def test_random_data(self): provider = ProviderFactory() service1 = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT) service2 = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT) ServiceFactory(provider=provider, status=Service.STATUS_CURRENT) # Some additional services that should not show up ServiceFactory(status=Service.STATUS_CURRENT) # not one of the providers we want ServiceFactory(provider=provider, status=Service.STATUS_DRAFT) # Draft mode SelectionCriterionFactory(service=service1) SelectionCriterionFactory(service=service2) SelectionCriterionFactory() # unwanted service # Querysets of just the objects we expect to be exported providers = Provider.objects.order_by('id') services = Service.objects.filter(status=Service.STATUS_CURRENT, provider__in=providers).order_by('id') criteria = SelectionCriterion.objects.filter(service__status=Service.STATUS_CURRENT, service__provider__in=providers).order_by('id') xlwt_book = get_export_workbook(providers) book = save_and_read_book(xlwt_book) # First sheet - providers sheet = book.get_sheet(0) self.assertEqual(providers.count(), sheet.nrows - 1) self.assertEqual(PROVIDER_HEADINGS, sheet.row_values(0)) for i, rownum in enumerate(range(1, sheet.nrows)): values = sheet.row_values(rownum) provider = providers[i] data = dict(zip(PROVIDER_HEADINGS, values)) self.assertEqual(provider.id, data['id']) self.assertEqual(provider.name_ar, data['name_ar']) # Second sheet = services sheet = book.get_sheet(1) self.assertEqual(services.count(), sheet.nrows - 1) self.assertEqual(SERVICE_HEADINGS, sheet.row_values(0)) for i, rownum in enumerate(range(1, sheet.nrows)): values = sheet.row_values(rownum) service = services[i] data = dict(zip(SERVICE_HEADINGS, values)) self.assertEqual(service.id, data['id']) self.assertEqual(service.name_ar, data['name_ar']) provider = Provider.objects.get(id=data['provider__id']) self.assertEqual(provider, service.provider) # Third sheet - selection criteria sheet = book.get_sheet(2) self.assertEqual(SELECTION_CRITERIA_HEADINGS, sheet.row_values(0)) self.assertEqual(criteria.count(), sheet.nrows - 1) for i, rownum in enumerate(range(1, sheet.nrows)): values = sheet.row_values(rownum) criterion = criteria[i] data = dict(zip(SELECTION_CRITERIA_HEADINGS, values)) self.assertEqual(criterion.id, data['id']) self.assertEqual(criterion.text_ar, data['text_ar']) service = Service.objects.get(id=data['service__id']) self.assertEqual(service, criterion.service) # The exported workbook should also be valid for import by # a staff user user = EmailUserFactory(is_staff=True) validate_and_import_data(user, get_book_bits(xlwt_book))
def test_related_name(self): # Just make sure we can get to the provider using user.provider user = EmailUserFactory() provider = ProviderFactory(user=user, ) self.assertEqual(user.provider, provider)
def setUp(self): self.user = EmailUserFactory(is_superuser=True) create_essential_pages(self.user) self.page = Page.objects.latest('id') self.pr = PageRating.objects.create(page_obj=self.page) self.pr.save()
def setUp(self): self.user = EmailUserFactory() self.provider = ProviderFactory(user=self.user) self.service = ServiceFactory(provider=self.provider)
def test_login(self): """Login an existing user.""" self.password = '******' self.user = EmailUserFactory(password=self.password) self.load_page_and_set_language() self.login()
def test_unique_emails(self): # Users' emails must be unique, case-insensitively user1 = EmailUserFactory() with self.assertRaises(ValidationError): EmailUserFactory(email=user1.email.upper())
def setUp(self): self.test_service = ServiceFactory(location='POINT(5 23)') self.jira_record = self.test_service.jira_records.get( update_type=JiraUpdateRecord.NEW_SERVICE) self.staff_user = EmailUserFactory(is_staff=True)
def setUp(self): self.user = EmailUserFactory()
def setUp(self): self.user = EmailUserFactory(is_active=False) self.user.activation_key = self.user.create_activation_key() self.user.save()