Ejemplo n.º 1
0
 def test_hashed_password_none_redirects(self):
     # given
     email = '*****@*****.**'
     password = '******'
     hashed_password = None  #
     user = Mock(spec=User)
     user.email = email
     user.hashed_password = hashed_password
     self.ls.check_password_hash.return_value = True
     self.ll.pl_get_user_by_email.return_value = user
     request = generate_mock_request(method="POST",
                                     form={
                                         'email': email,
                                         'password': password
                                     })
     # when
     result = self.vl.login(request, self.admin)
     # then
     self.ls.login_user.assert_not_called()
     self.ll.pl_get_user_by_email.assert_called_once_with(email)
     self.pl.get_user_by_email.assert_not_called()
     self.r.flash.assert_called_once_with('Username or Password is invalid',
                                          'error')
     self.r.url_for.assert_called_once_with('login')
     self.r.redirect.assert_called_once_with(self.r.url_for.return_value)
     self.assertIs(self.r.redirect.return_value, result)
     # and
     self.ls.check_password_hash.assert_not_called()
     self.r.render_template.assert_not_called()
Ejemplo n.º 2
0
 def test_logs_in_user(self):
     # given
     email = '*****@*****.**'
     password = '******'
     hashed_password = '******'
     user = Mock(spec=User)
     user.email = email
     user.hashed_password = hashed_password
     self.ls.check_password_hash.return_value = True
     self.ll.pl_get_user_by_email.return_value = user
     request = generate_mock_request(method="POST",
                                     form={
                                         'email': email,
                                         'password': password
                                     })
     # when
     result = self.vl.login(request, self.admin)
     # then
     self.ls.login_user.assert_called_once_with(user)
     self.r.url_for.assert_called_once_with('index')
     self.r.redirect.assert_called_once_with(self.r.url_for.return_value)
     self.assertIs(self.r.redirect.return_value, result)
     # and
     self.r.flash.assert_called_once_with('Logged in successfully')
     self.ll.pl_get_user_by_email.assert_called_once_with(email)
     self.pl.get_user_by_email.assert_not_called()
     self.ls.check_password_hash.assert_called_once_with(
         hashed_password, password)
     self.r.render_template.assert_not_called()
Ejemplo n.º 3
0
 def test_post_also_logs_out_user(self):
     # given
     request = generate_mock_request(method="POST")
     # when
     result = self.vl.logout(request, self.admin)
     # then
     self.ls.logout_user.assert_called_once_with()
     # and
     self.r.url_for.assert_called_once_with('index')
     self.r.redirect.assert_called_once_with(self.r.url_for.return_value)
     self.assertIs(self.r.redirect.return_value, result)
Ejemplo n.º 4
0
 def test_empty_filename_raises(self):
     # given
     task = Mock(spec=Task)
     task.id = 123
     form = {'task_id': task.id, 'description': 'asdf'}
     files = {'filename': MockFileObject('')}
     request = generate_mock_request(form=form, files=files)
     admin = self.pl.create_user('admin', is_admin=True)
     # expect
     self.assertRaises(BadRequest, self.vl.attachment_new, request, admin)
     # and
     self.r.redirect.assert_not_called()
Ejemplo n.º 5
0
 def test_task_id_not_sepcified_raises(self):
     # given
     task = Mock(spec=Task)
     task.id = 123
     form = {}
     files = {'filename': MockFileObject('/filename.exe')}
     request = generate_mock_request(form=form, files=files)
     admin = self.pl.create_user('admin', is_admin=True)
     # expect
     self.assertRaises(BadRequest, self.vl.attachment_new, request, admin)
     # and
     self.r.redirect.assert_not_called()
Ejemplo n.º 6
0
 def test_unsets_is_deleted(self):
     # given
     task_id = 1
     user = self.pl.create_user('*****@*****.**', is_admin=True)
     req = generate_mock_request(method='GET', args={})
     self.r.url_for.return_value = 'http://example.com/'
     # when
     self.vl.task_undelete(req, current_user=user, task_id=task_id)
     # then
     self.ll.task_unset_deleted.assert_called_once_with(task_id, user)
     self.r.url_for.assert_called_once_with('index')
     self.r.redirect.assert_called_once_with('http://example.com/')
Ejemplo n.º 7
0
 def test_creates_new_task(self):
     # given
     request = generate_mock_request(method="POST")
     self.ll.get_lowest_order_num.return_value = 0
     # when
     result = self.vl.task_new_post(request, self.admin)
     # then
     self.ll.create_new_task.assert_called()
     self.ll.do_add_tag_to_task.assert_not_called()
     self.r.url_for.assert_called()
     self.r.redirect.assert_called()
     self.assertIs(self.r.redirect.return_value, result)
Ejemplo n.º 8
0
 def test_get_request_returns_template(self):
     # given
     request = generate_mock_request(method='GET')
     admin = self.pl.create_user('admin', is_admin=True)
     # self.r.render_template
     # when
     result = self.vl.import_(request, admin)
     # then
     self.r.render_template.assert_called_once_with('import.t.html')
     self.assertIs(self.r.render_template.return_value, result)
     # and
     self.r.url_for.assert_not_called()
     self.r.redirect.assert_not_called()
Ejemplo n.º 9
0
 def test_tag_in_form_adds_tag(self):
     # given
     request = generate_mock_request(method="POST", form={'tags': 'tag1'})
     self.ll.get_lowest_order_num.return_value = 0
     # when
     result = self.vl.task_new_post(request, self.admin)
     # then
     self.ll.create_new_task.assert_called()
     self.ll.do_add_tag_to_task.assert_called_once_with(
         self.ll.create_new_task.return_value, 'tag1', self.admin)
     self.r.url_for.assert_called()
     self.r.redirect.assert_called()
     self.assertIs(self.r.redirect.return_value, result)
Ejemplo n.º 10
0
 def test_takes_redirect_url_from_args_next_if_available(self):
     # given
     task_id = 1
     user = self.pl.create_user('*****@*****.**', is_admin=True)
     req = generate_mock_request(method='GET',
                                 args={'next': 'http://example2.org/'})
     self.r.url_for.return_value = 'http://example.com/'
     # when
     self.vl.task_undelete(req, current_user=user, task_id=task_id)
     # then
     self.ll.task_unset_deleted.assert_called_once_with(task_id, user)
     self.r.url_for.assert_not_called()
     self.r.redirect.assert_called_once_with('http://example2.org/')  #
Ejemplo n.º 11
0
 def test_renders_template_on_get(self):
     # given
     request = generate_mock_request(method="GET")
     # when
     result = self.vl.login(request, self.admin)
     # then
     self.r.render_template.assert_called_once_with('login.t.html')
     self.ls.login_user.assert_not_called()
     self.assertIs(self.r.render_template.return_value, result)
     # and
     self.ll.pl_get_user_by_email.assert_not_called()
     self.pl.get_user_by_email.assert_not_called()
     self.r.flash.assert_not_called()
     self.r.redirect.assert_not_called()
     self.r.url_for.assert_not_called()
Ejemplo n.º 12
0
 def test_attachment_not_found_raises(self):
     # given
     self.ll.pl_get_attachment.return_value = None
     request = generate_mock_request(method="GET")
     attachment_id = 123
     # expect
     with self.assertRaises(NotFound) as cm:
         self.vl.attachment(request, self.admin, attachment_id, 'name')
     # then
     self.assertEqual("No attachment found for the id '123'",
                      cm.exception.description)
     self.r.send_from_directory.assert_not_called()
     # and
     self.ll.pl_get_attachment.assert_called_once_with(attachment_id)
     self.pl.get_attachment.assert_not_called()
Ejemplo n.º 13
0
 def test_gets_task_data_from_logic_layer(self):
     # given
     request = generate_mock_request(args={}, cookies={})
     user = Mock()
     TASK_ID = 1
     # when
     result = self.vl.task(request, user, TASK_ID)
     # then
     self.assertIsNotNone(result)
     self.ll.get_task_data.assert_called_with(TASK_ID,
                                              user,
                                              include_deleted=None,
                                              include_done=None,
                                              page_num=1,
                                              tasks_per_page=20)
     self.r.render_template.assert_called()
Ejemplo n.º 14
0
 def test_task_per_page_not_int_default_to_twenty(self):
     # given
     request = generate_mock_request(args={'per_page': 'asdf'}, cookies={})
     user = Mock()
     TASK_ID = 1
     # when
     result = self.vl.task(request, user, TASK_ID)
     # then
     self.assertIsNotNone(result)
     self.ll.get_task_data.assert_called_with(TASK_ID,
                                              user,
                                              include_deleted=None,
                                              include_done=None,
                                              page_num=1,
                                              tasks_per_page=20)
     self.r.render_template.assert_called()
Ejemplo n.º 15
0
 def test_purges_deleted_task(self):
     # given
     task = Mock(spec=Task)
     task.is_deleted = True
     self.ll.pl_get_task.return_value = task
     request = generate_mock_request(method="GET")
     task_id = 123
     # when
     result = self.vl.task_purge(request, self.admin, task_id)
     # then
     self.ll.purge_task.assert_called_once_with(task, self.admin)
     # and
     self.ll.pl_get_task.assert_called_once_with(task_id)
     self.pl.get_task.assert_not_called()
     self.r.url_for.assert_called_once_with('index')
     self.r.redirect.assert_called_once_with(self.r.url_for.return_value)
     self.assertIs(self.r.redirect.return_value, result)
Ejemplo n.º 16
0
 def test_two_tags_in_form_adds_both_tags(self):
     # given
     request = generate_mock_request(method="POST",
                                     form={'tags': 'tag1,tag2'})
     self.ll.get_lowest_order_num.return_value = 0
     # when
     result = self.vl.task_new_post(request, self.admin)
     # then
     self.ll.create_new_task.assert_called()
     self.ll.do_add_tag_to_task.assert_any_call(
         self.ll.create_new_task.return_value, 'tag1', self.admin)
     self.ll.do_add_tag_to_task.assert_any_call(
         self.ll.create_new_task.return_value, 'tag2', self.admin)
     self.assertEqual(2, self.ll.do_add_tag_to_task.call_count)
     self.r.url_for.assert_called()
     self.r.redirect.assert_called()
     self.assertIs(self.r.redirect.return_value, result)
Ejemplo n.º 17
0
 def test_task_not_found_raises(self):
     # given
     self.ll.pl_get_task.return_value = None
     request = generate_mock_request(method="GET")
     task_id = 123
     # expect
     with self.assertRaises(NotFound) as cm:
         self.vl.task_purge(request, self.admin, task_id)
     # then
     self.assertEqual("No task found for the id '123'",
                      cm.exception.description)
     self.ll.purge_task.assert_not_called()
     # and
     self.ll.pl_get_task.assert_called_once_with(task_id)
     self.pl.get_task.assert_not_called()
     self.r.url_for.assert_not_called()
     self.r.redirect.assert_not_called()
Ejemplo n.º 18
0
 def test_task_not_deleted_raises(self):
     # given
     task = Mock(spec=Task)
     task.is_deleted = False
     self.ll.pl_get_task.return_value = task
     request = generate_mock_request(method="GET")
     task_id = 123
     # expect
     with self.assertRaises(BadRequest) as cm:
         self.vl.task_purge(request, self.admin, task_id)
     # then
     self.assertEqual("Indicated task (id 123) has not been deleted.",
                      cm.exception.description)
     self.ll.purge_task.assert_not_called()
     # and
     self.ll.pl_get_task.assert_called_once_with(task_id)
     self.pl.get_task.assert_not_called()
     self.r.url_for.assert_not_called()
     self.r.redirect.assert_not_called()
Ejemplo n.º 19
0
 def test_gets_attachment(self):
     # given
     upload_folder = '/path/to/uploads'
     self.ll.upload_folder = upload_folder
     attachment_id = 123
     attachment_path = 'this/is/the/path'
     attachment = Mock(spec=Attachment)
     attachment.id = attachment_id
     attachment.path = attachment_path
     self.ll.pl_get_attachment.return_value = attachment
     request = generate_mock_request(method="GET")
     # when
     result = self.vl.attachment(request, self.admin, attachment_id, 'name')
     # then
     self.r.send_from_directory.assert_called_once_with(
         upload_folder, attachment_path)
     # and
     self.ll.pl_get_attachment.assert_called_once_with(attachment_id)
     self.pl.get_attachment.assert_not_called()
     self.assertIs(self.r.send_from_directory.return_value, result)
Ejemplo n.º 20
0
 def test_description_sets_description(self):
     # given
     task = Mock(spec=Task)
     task.id = 123
     form = {'task_id': task.id, 'description': 'asdf'}
     f = MockFileObject('/filename.txt')
     files = {'filename': f}
     request = generate_mock_request(form=form, files=files)
     admin = self.pl.create_user('admin', is_admin=True)
     # when
     result = self.vl.attachment_new(request, admin)
     # then
     self.ll.create_new_attachment.assert_called_once_with(task.id,
                                                           f,
                                                           'asdf',
                                                           admin,
                                                           timestamp=None)
     # and
     self.r.url_for.assert_called_once_with('view_task', id=task.id)
     self.r.redirect.assert_called_once_with(self.r.url_for.return_value)
     self.assertIs(self.r.redirect.return_value, result)
Ejemplo n.º 21
0
 def test_imports_data_from_form(self):
     # given
     src = '''{"tasks":[{
         "id": 1,
         "summary":"summary"
     }]}'''
     src_dict = {
         "tasks": [{
             "id": 1,
             "summary": "summary",
         }]
     }
     form = {'raw': src}
     files = {}
     request = generate_mock_request(form=form, files=files)
     admin = self.pl.create_user('admin', is_admin=True)
     # when
     result = self.vl.import_(request, admin)
     # then
     self.ll.do_import_data.assert_called_once_with(src_dict)
     # and
     self.r.url_for.assert_called_once_with('index')
     self.r.redirect.assert_called_once_with(self.r.url_for.return_value)
     self.assertIs(self.r.redirect.return_value, result)