def test_wrong_section(self): """When a wrong section is given in request.POST, 404 is raised.""" user = UserFactory.create(vouched=False) url = reverse('phonebook:profile_edit', prefix='/en-US/') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-0-id': '', 'language_set-0-userprofile': '', 'language_set-0-code': 'en', 'language_set-1-id': '', 'language_set-1-userprofile': '', 'language_set-1-code': 'fr', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '2', 'foo_section': '', } data.update(_get_privacy_fields(MOZILLIANS)) with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 404)
def test_succesful_registration(self, info_mock): user = UserFactory.create(first_name='', last_name='') ok_(not UserProfile.objects.filter(full_name='foo bar').exists()) country = Country.objects.get(name='Greece') url = reverse('phonebook:profile_edit', prefix='/en-US/') data = { 'full_name': 'foo bar', 'email': '*****@*****.**', 'username': '******', 'country': country.id, 'optin': True, 'registration_section': '', 'g-recaptcha-response': 'PASSED' } data.update(_get_privacy_fields(MOZILLIANS)) with self.login(user) as client: response = client.post(url, data, follow=True) eq_(response.status_code, 200) ok_(info_mock.called) ok_(UserProfile.objects.get(full_name='foo bar')) def tearDown(self): del os.environ['NORECAPTCHA_TESTING']
def test_languages_get_saved(self): user = UserFactory.create(email="*****@*****.**") data = { "full_name": user.userprofile.full_name, "email": user.email, "username": user.username, "lat": 40.005814, "lng": -3.42071, "externalaccount_set-MAX_NUM_FORMS": "1000", "externalaccount_set-INITIAL_FORMS": "0", "externalaccount_set-TOTAL_FORMS": "0", "language_set-0-id": "", "language_set-0-userprofile": "", "language_set-0-code": "en", "language_set-1-id": "", "language_set-1-userprofile": "", "language_set-1-code": "fr", "language_set-MAX_NUM_FORMS": "1000", "language_set-INITIAL_FORMS": "0", "language_set-TOTAL_FORMS": "2", "languages_section": "", } data.update(_get_privacy_fields(MOZILLIANS)) with override_script_prefix("/en-US/"): url = reverse("phonebook:profile_edit") with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200) profile = UserProfile.objects.get(pk=user.userprofile.pk) eq_(set(profile.language_set.values_list("code", flat=True)), set(["en", "fr"]))
def test_languages_get_saved(self): user = UserFactory.create(email='*****@*****.**') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-0-id': '', 'language_set-0-userprofile': '', 'language_set-0-code': 'en', 'language_set-1-id': '', 'language_set-1-userprofile': '', 'language_set-1-code': 'fr', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '2', 'languages_section': '' } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse('phonebook:profile_edit', prefix='/en-US/') with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200) profile = UserProfile.objects.get(pk=user.userprofile.pk) eq_(set(profile.language_set.values_list('code', flat=True)), set(['en', 'fr']))
def test_wrong_section(self): """When a wrong section is given in request.POST, 404 is raised.""" user = UserFactory.create(vouched=False) with override_script_prefix('/en-US/'): url = reverse('phonebook:profile_edit') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-0-id': '', 'language_set-0-userprofile': '', 'language_set-0-code': 'en', 'language_set-1-id': '', 'language_set-1-userprofile': '', 'language_set-1-code': 'fr', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '2', 'foo_section': '', } data.update(_get_privacy_fields(MOZILLIANS)) with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 404)
def test_date_mozillian_validates_in_different_locales(self): """Tests if date_mozillian validates when profile language is e.g. 'es'. Related bug 914448. """ user = UserFactory.create(email='*****@*****.**') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'date_mozillian_year': '2013', 'date_mozillian_month': '1', 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', 'contribution_section': '' } data.update(_get_privacy_fields(MOZILLIANS)) with override_script_prefix('/es/'): url = reverse('phonebook:profile_edit') with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)
def test_location_city_region_optout(self, mock_reverse_geocode): country = CountryFactory.create(mapbox_id='country1', name='Petoria') region = RegionFactory.create(country=country, mapbox_id='region1', name='Ontario') city = CityFactory.create(region=region, mapbox_id='city1', name='Toronto') mock_reverse_geocode.return_value = (country, region, city) user = UserFactory.create(email='*****@*****.**') data = {'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', } data.update(_get_privacy_fields(MOZILLIANS)) form = ProfileForm(data=data) eq_(form.is_valid(), True) eq_(form.instance.geo_country, country) eq_(form.instance.geo_region, None) eq_(form.instance.geo_city, None)
def test_date_mozillian_validates_in_different_locales(self): """Tests if date_mozillian validates when profile language is e.g. 'es'. Related bug 914448. """ user = UserFactory.create(email='*****@*****.**') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'date_mozillian_year': '2013', 'date_mozillian_month': '1', 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', 'contribution_section': '' } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse('phonebook:profile_edit', prefix='/es/') with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)
def test_languages_get_saved(self): user = UserFactory.create(email="*****@*****.**") data = { "full_name": user.userprofile.full_name, "email": user.email, "username": user.username, "lat": 40.005814, "lng": -3.42071, "externalaccount_set-MAX_NUM_FORMS": "1000", "externalaccount_set-INITIAL_FORMS": "0", "externalaccount_set-TOTAL_FORMS": "0", "language_set-0-id": "", "language_set-0-userprofile": "", "language_set-0-code": "en", "language_set-1-id": "", "language_set-1-userprofile": "", "language_set-1-code": "fr", "language_set-MAX_NUM_FORMS": "1000", "language_set-INITIAL_FORMS": "0", "language_set-TOTAL_FORMS": "2", } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse("phonebook:profile_edit", prefix="/en-US/") with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200) profile = UserProfile.objects.get(pk=user.userprofile.pk) eq_(set(profile.language_set.values_list("code", flat=True)), set(["en", "fr"]))
def test_languages_get_saved(self): user = UserFactory.create(email='*****@*****.**') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'lat': 40.005814, 'lng': -3.42071, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-0-id': '', 'language_set-0-userprofile': '', 'language_set-0-code': 'en', 'language_set-1-id': '', 'language_set-1-userprofile': '', 'language_set-1-code': 'fr', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '2', 'languages_section': '' } data.update(_get_privacy_fields(MOZILLIANS)) with override_script_prefix('/en-US/'): url = reverse('phonebook:profile_edit') with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200) profile = UserProfile.objects.get(pk=user.userprofile.pk) eq_(set(profile.language_set.values_list('code', flat=True)), set(['en', 'fr']))
def test_succesful_registration(self, info_mock): user = UserFactory.create(first_name='', last_name='') ok_(not UserProfile.objects.filter(full_name='foo bar').exists()) country = Country.objects.get(name='Greece') with override_script_prefix('/en-US/'): url = reverse('phonebook:profile_edit') data = { 'full_name': 'foo bar', 'email': '*****@*****.**', 'username': '******', 'country': country.id, 'optin': True, 'registration_section': '', 'g-recaptcha-response': 'PASSED' } data.update(_get_privacy_fields(MOZILLIANS)) with self.login(user) as client: response = client.post(url, data, follow=True) eq_(response.status_code, 200) ok_(info_mock.called) ok_(UserProfile.objects.get(full_name='foo bar')) def tearDown(self): del os.environ['NORECAPTCHA_TESTING']
def test_date_mozillian_validates_in_different_locales(self): """Tests if date_mozillian validates when profile language is e.g. 'es'. Related bug 914448. """ user = UserFactory.create(email="*****@*****.**") data = { "full_name": user.userprofile.full_name, "email": user.email, "username": user.username, "lat": 40.005814, "lng": -3.42071, "date_mozillian_year": "2013", "date_mozillian_month": "1", "externalaccount_set-MAX_NUM_FORMS": "1000", "externalaccount_set-INITIAL_FORMS": "0", "externalaccount_set-TOTAL_FORMS": "0", "language_set-MAX_NUM_FORMS": "1000", "language_set-INITIAL_FORMS": "0", "language_set-TOTAL_FORMS": "0", } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse("phonebook:profile_edit", prefix="/es/") with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)
def test_location_region_required_if_city(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data.update({'savecity': True}) self.data.update(_get_privacy_fields(MOZILLIANS)) form = LocationForm(data=self.data) ok_(not form.is_valid()) ok_('saveregion' in form.errors)
def test_location_city_region_optout(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data.update(_get_privacy_fields(MOZILLIANS)) form = LocationForm(data=self.data) eq_(form.is_valid(), True) eq_(form.instance.geo_country, self.country) eq_(form.instance.geo_region, None) eq_(form.instance.geo_city, None)
def test_location_region_required_if_city(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data.update({'savecity': True}) self.data.update(_get_privacy_fields(MOZILLIANS)) form = ProfileForm(data=self.data) with self.assertRaises(ValidationError): ok_(not form.is_valid()) form.clean()
def test_location_api_not_called_when_latlang_unchanged(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data["lng"] = self.user.userprofile.lng self.data["lat"] = self.user.userprofile.lat self.data.update(_get_privacy_fields(MOZILLIANS)) initial = {"lat": self.user.userprofile.lat, "lng": self.user.userprofile.lng} form = ProfileForm(data=self.data, initial=initial) ok_(form.is_valid()) ok_(not mock_reverse_geocode.called)
def test_location_profile_save_connectionerror(self, mock_requests): mock_requests.get.return_value.raise_for_status.side_effect = ConnectionError error_country = Country.objects.create(name='Error', mapbox_id='geo_error') self.data.update(_get_privacy_fields(MOZILLIANS)) url = reverse('phonebook:profile_edit', prefix='/en-US/') with self.login(self.user) as client: response = client.post(url, data=self.data, follow=True) userprofile = UserProfile.objects.get(user=self.user) eq_(response.status_code, 200) eq_(userprofile.geo_country, error_country)
def test_location_api_called_when_latlng_changed(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data['lat'] = 40 self.data['lng'] = 20 self.data.update(_get_privacy_fields(MOZILLIANS)) initial = { 'lat': self.user.userprofile.lat, 'lng': self.user.userprofile.lng } form = LocationForm(data=self.data, initial=initial) ok_(form.is_valid()) ok_(mock_reverse_geocode.called)
def test_location_api_not_called_when_latlang_unchanged(self, mock_reverse_geocode): mock_reverse_geocode.return_value = (self.country, self.region, self.city) self.data['lng'] = self.user.userprofile.lng self.data['lat'] = self.user.userprofile.lat self.data.update(_get_privacy_fields(MOZILLIANS)) initial = { 'lat': self.user.userprofile.lat, 'lng': self.user.userprofile.lng } form = LocationForm(data=self.data, initial=initial) ok_(form.is_valid()) ok_(not mock_reverse_geocode.called)
def test_succesful_registration(self, info_mock): user = UserFactory.create(first_name='', last_name='') url = reverse('phonebook:profile_edit', prefix='/en-US/') data = { 'full_name': 'foo bar', 'email': '*****@*****.**', 'username': '******', 'lat': 40.005814, 'lng': -3.42071, 'optin': True, 'registration_section': '' } data.update(_get_privacy_fields(MOZILLIANS)) with self.login(user) as client: response = client.post(url, data, follow=True) eq_(response.status_code, 200) ok_(info_mock.called)
def test_location_data_required(self): user = UserFactory.create(email='*****@*****.**') data = {'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', } data.update(_get_privacy_fields(MOZILLIANS)) form = ProfileForm(data=data) eq_(form.is_valid(), False) ok_(form.errors.get('lat')) ok_(form.errors.get('lng'))
def test_location_data_required(self): user = UserFactory.create(email="*****@*****.**") data = { "full_name": user.userprofile.full_name, "email": user.email, "username": user.username, "externalaccount_set-MAX_NUM_FORMS": "1000", "externalaccount_set-INITIAL_FORMS": "0", "externalaccount_set-TOTAL_FORMS": "0", "language_set-MAX_NUM_FORMS": "1000", "language_set-INITIAL_FORMS": "0", "language_set-TOTAL_FORMS": "0", } data.update(_get_privacy_fields(MOZILLIANS)) form = ProfileForm(data=data) eq_(form.is_valid(), False) ok_(form.errors.get("lat")) ok_(form.errors.get("lng"))
def test_location_data_required(self): user = UserFactory.create(email='*****@*****.**') data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'username': user.username, 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', } data.update(_get_privacy_fields(MOZILLIANS)) form = ProfileForm(data=data) eq_(form.is_valid(), False) ok_(form.errors.get('lat')) ok_(form.errors.get('lng'))
def _upload_photo(self, user, file_path): """Helper for the next methods.""" data = {'full_name': user.userprofile.full_name, 'email': user.email, 'country': user.userprofile.country, 'username': user.username, 'photo': open(file_path, 'rb'), 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse('phonebook:profile_edit', prefix='/en-US/') with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)
def _upload_photo(self, user, file_path): """Helper for the next methods.""" data = { 'full_name': user.userprofile.full_name, 'email': user.email, 'country': user.userprofile.country, 'username': user.username, 'photo': open(file_path, 'rb'), 'externalaccount_set-MAX_NUM_FORMS': '1000', 'externalaccount_set-INITIAL_FORMS': '0', 'externalaccount_set-TOTAL_FORMS': '0', 'language_set-MAX_NUM_FORMS': '1000', 'language_set-INITIAL_FORMS': '0', 'language_set-TOTAL_FORMS': '0', } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse('phonebook:profile_edit', prefix='/en-US/') with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)
def _upload_photo(self, user, file_path): """Helper for the next methods.""" data = { "full_name": user.userprofile.full_name, "email": user.email, "country": user.userprofile.country, "username": user.username, "photo": open(file_path, "rb"), "externalaccount_set-MAX_NUM_FORMS": "1000", "externalaccount_set-INITIAL_FORMS": "0", "externalaccount_set-TOTAL_FORMS": "0", "language_set-MAX_NUM_FORMS": "1000", "language_set-INITIAL_FORMS": "0", "language_set-TOTAL_FORMS": "0", } data.update(_get_privacy_fields(MOZILLIANS)) url = reverse("phonebook:profile_edit", prefix="/en-US/") with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)
def _upload_photo(self, user, file_path): """Helper for the next methods.""" data = { "full_name": user.userprofile.full_name, "email": user.email, "username": user.username, "lat": 40.005814, "lng": -3.42071, "photo": open(file_path, "rb"), "externalaccount_set-MAX_NUM_FORMS": "1000", "externalaccount_set-INITIAL_FORMS": "0", "externalaccount_set-TOTAL_FORMS": "0", "language_set-MAX_NUM_FORMS": "1000", "language_set-INITIAL_FORMS": "0", "language_set-TOTAL_FORMS": "0", "basic_section": "", } data.update(_get_privacy_fields(MOZILLIANS)) with override_script_prefix("/en-US/"): url = reverse("phonebook:profile_edit") with self.login(user) as client: response = client.post(url, data=data, follow=True) eq_(response.status_code, 200)