def test_photo_too_big(self, mock_is_image_check, mock_is_animated_check): # Mock the ImageCheck object to pass checks on the uploaded image mock_is_image_check.return_value = True mock_is_image_check.return_value = False mock_is_animated_check.returned_value = False request = Mock() request.user = self.user data = { 'username': self.user_profile.username, 'email': self.user_profile.email } files = {'photo': get_uploaded_file('transparent.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) # Creating the mock object instead of the uploaded file, # with a specific size over the limit upload_mock = MagicMock(spec=SimpleUploadedFile) upload_mock._name = 'transparent.png' upload_mock.size = 4 * 1024 * 1024 + 1 upload_mock.content_type = 'image/png' # Injecting the mock object form.files['photo'] = upload_mock assert not form.is_valid() mock_is_image_check.assert_called() mock_is_animated_check.assert_called() assert form.errors == { 'photo': [u'Please use images smaller than 4MB.'] }
def test_basket_unsubscribe_newsletter(self): with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': ['announcements'] } form = UserEditForm({}, instance=self.user, request=RequestFactory().get('/users/edit/')) request_call.assert_called_with( 'get', 'lookup-user', headers={'x-api-key': 'testkey'}, params={'email': u'*****@*****.**'}) with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': [] } assert form.is_valid() form.save() request_call.assert_called_with('post', 'unsubscribe', data={ 'newsletters': 'about-addons', 'email': u'*****@*****.**' }, token='123')
def test_basket_unsubscribe_newsletter(self): create_switch('activate-basket-sync') with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': ['announcements']} form = UserEditForm( {}, instance=self.user, request=RequestFactory().get('/users/edit/')) request_call.assert_called_with( 'get', 'lookup-user', headers={'x-api-key': 'testkey'}, params={'email': u'*****@*****.**'}) with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': []} assert form.is_valid() form.save() request_call.assert_called_with( 'post', 'unsubscribe', data={ 'newsletters': 'about-addons', 'email': u'*****@*****.**'}, token='123')
def test_photo_too_big(self, mock_is_image_check, mock_is_animated_check): # Mock the ImageCheck object to pass checks on the uploaded image mock_is_image_check.return_value = True mock_is_image_check.return_value = False mock_is_animated_check.returned_value = False request = Mock() request.user = self.user data = {'username': self.user_profile.username, 'email': self.user_profile.email} files = {'photo': get_uploaded_file('transparent.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) # Creating the mock object instead of the uploaded file, # with a specific size over the limit upload_mock = MagicMock(spec=SimpleUploadedFile) upload_mock._name = 'transparent.png' upload_mock.size = 4 * 1024 * 1024 + 1 upload_mock.content_type = 'image/png' # Injecting the mock object form.files['photo'] = upload_mock assert not form.is_valid() mock_is_image_check.assert_called() mock_is_animated_check.assert_called() assert form.errors == { 'photo': [u'Please use images smaller than 4MB.'] }
def test_cannot_change_email(self): self.user.update(fxa_id='1a2b3c', email='*****@*****.**') form = UserEditForm( {'email': '*****@*****.**'}, instance=self.user) assert form.is_valid() form.save() assert self.user.reload().email == '*****@*****.**'
def test_cannot_change_email(self): self.user.update(fxa_id='1a2b3c', email='*****@*****.**') form = UserEditForm({ 'email': '*****@*****.**', 'lang': 'de' }, instance=self.user) assert form.is_valid() form.save() assert self.user.reload().email == '*****@*****.**'
def test_photo_invalid_animated(self): request = Mock() request.user = self.user data = {'username': self.user_profile.username, 'email': self.user_profile.email} files = {'photo': get_uploaded_file('animated.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) assert not form.is_valid() assert form.errors == {'photo': [u'Images cannot be animated.']}
def test_photo_invalid_though_content_type_is_correct(self): request = Mock() request.user = self.user data = {'username': self.user_profile.username, 'email': self.user_profile.email} files = {'photo': get_uploaded_file('non-image.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) assert not form.is_valid() assert form.errors == {'photo': [u'Images must be either PNG or JPG.']}
def test_photo_modified(self, update_mock): request = Mock() request.user = self.user data = {'username': self.user_profile.username, 'email': self.user_profile.email} files = {'photo': get_uploaded_file('transparent.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) assert form.is_valid() form.save() assert update_mock.called
def test_photo_modified(self, update_mock): dummy = Mock() dummy.user = self.user data = {'username': self.user_profile.username, 'email': self.user_profile.email, 'lang': 'en-US'} files = {'photo': get_uploaded_file('transparent.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=dummy) assert form.is_valid() form.save() assert update_mock.called
def test_photo_invalid_animated(self): request = Mock() request.user = self.user data = { 'username': self.user_profile.username, 'email': self.user_profile.email } files = {'photo': get_uploaded_file('animated.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) assert not form.is_valid() assert form.errors == {'photo': [u'Images cannot be animated.']}
def test_photo_invalid_though_content_type_is_correct(self): request = Mock() request.user = self.user data = { 'username': self.user_profile.username, 'email': self.user_profile.email } files = {'photo': get_uploaded_file('non-image.png')} form = UserEditForm(data, files=files, instance=self.user_profile, request=request) assert not form.is_valid() assert form.errors == {'photo': [u'Images must be either PNG or JPG.']}
def test_basket_subscribe_newsletter(self): create_switch('activate-basket-sync') addon_factory(users=[self.user]) with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': [] } # 8 is the `announcements` notification, or about-addons newsletter form = UserEditForm({'notifications': [3, 4, 8]}, instance=self.user, request=RequestFactory().get('/users/edit/')) request_call.assert_called_with( 'get', 'lookup-user', headers={'x-api-key': 'testkey'}, params={'email': u'*****@*****.**'}) with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': ['about-addons'] } assert form.is_valid() form.save() request_call.assert_called_with('post', 'subscribe', headers={'x-api-key': 'testkey'}, data={ 'newsletters': 'about-addons', 'sync': 'Y', 'optin': 'Y', 'source_url': 'http://testserver/users/edit/', 'email': u'*****@*****.**' })
def test_basket_subscribe_newsletter(self): create_switch('activate-basket-sync') addon_factory(users=[self.user]) with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': []} # 8 is the `announcements` notification, or about-addons newsletter form = UserEditForm( {'notifications': [3, 4, 8]}, instance=self.user, request=RequestFactory().get('/users/edit/')) request_call.assert_called_with( 'get', 'lookup-user', headers={'x-api-key': 'testkey'}, params={'email': u'*****@*****.**'}) with patch('basket.base.request', autospec=True) as request_call: request_call.return_value = { 'status': 'ok', 'token': '123', 'newsletters': ['about-addons']} assert form.is_valid() form.save() request_call.assert_called_with( 'post', 'subscribe', headers={'x-api-key': 'testkey'}, data={ 'newsletters': 'about-addons', 'sync': 'Y', 'optin': 'Y', 'source_url': 'http://testserver/users/edit/', 'email': u'*****@*****.**'})