def test_add_images_with_different_users(self): user_1 = add_user(username='******', password='******') user_2 = add_user(username='******', password='******') image_1 = add_image(name=sha256('test_name_1'.encode()).hexdigest(), user=user_1) image_2 = add_image(name=sha256('test_name_2'.encode()).hexdigest(), user=user_2) self.assertEqual( sha256('test_name_1'.encode()).hexdigest(), image_1.name) self.assertEqual('chun_1', image_1.user.username) self.assertEqual( sha256('test_name_2'.encode()).hexdigest(), image_2.name) self.assertEqual('chun_2', image_2.user.username)
def test_add_image_with_user(self): user = add_user(username='******', password='******') image = add_image(name=sha256('test_name'.encode()).hexdigest(), user=user) self.assertEqual(sha256('test_name'.encode()).hexdigest(), image.name) self.assertIsNotNone(image.user) self.assertEqual('chun', image.user.username)
def test_remove_image(self): user = add_user(username='******', password='******') image_1 = add_image(name=sha256('test_name_1'.encode()).hexdigest(), user=user) image_2 = add_image(name=sha256('test_name_2'.encode()).hexdigest(), user=user) self.assertEqual( sha256('test_name_1'.encode()).hexdigest(), image_1.name) self.assertIsNotNone(image_1.user) self.assertEqual('chun', image_1.user.username) self.assertEqual( sha256('test_name_2'.encode()).hexdigest(), image_2.name) self.assertIsNotNone(image_2.user) self.assertEqual('chun', image_2.user.username) self.assertEqual(len(user.images.all()), 2) db.session.delete(image_2) db.session.commit() self.assertEqual(len(user.images.all()), 1) self.assertEqual(len(Image.query.all()), 1)
def test_delete_image_without_logging_in(self): user = add_user('user', 'pass') image = add_image('image', user=user) add_box(10, 10, 20, 20, 'dog', image=image) add_box(20, 20, 30, 30, 'cat', image=image) response = self.client.delete( f'/api/images/{image.name.replace(".jpg", "")}', follow_redirects=True) self.assertEqual(response.status_code, 403) data = json.loads(response.data.decode()) self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Provide a valid auth token.')
def test_delete_image_with_invalid_name(self): user = add_user(username='******', password='******') image = add_image('image.jpg', user=user) auth_token = user.encode_auth_token().decode() response = self.client.delete( f'/api/images/wrong_name', follow_redirects=True, headers={'Authorization': f'Bearer {auth_token}'}) self.assertEqual(response.status_code, 404) data = json.loads(response.data.decode()) self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload!')
def test_delete_image_of_other_user(self): user_1 = add_user(username='******', password='******') user_2 = add_user(username='******', password='******') image = add_image('image.jpg', user=user_1) auth_token = user_2.encode_auth_token().decode() image_name = image.name.replace(".jpg", "") response = self.client.delete( f'/api/images/{image_name}', follow_redirects=True, headers={'Authorization': f'Bearer {auth_token}'}) self.assertEqual(response.status_code, 403) data = json.loads(response.data.decode()) self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload!')
def test_add_box_with_image(self): image = add_image(name=sha256('test_name'.encode()).hexdigest()) box = add_box(x_min=0.0, y_min=1.0, x_max=2.0, y_max=3.0, label='dog', image=image) self.assertEqual(box.x_min, 0.0) self.assertEqual(box.y_min, 1.0) self.assertEqual(box.x_max, 2.0) self.assertEqual(box.y_max, 3.0) self.assertEqual(box.label, 'dog') self.assertIsNotNone(box.image) self.assertEqual(box.image.name, sha256('test_name'.encode()).hexdigest())
def test_delete_image_after_logging_in(self): user = add_user(username='******', password='******') image = add_image('image.jpg', user=user) add_box(10, 10, 20, 20, 'dog', image=image) add_box(20, 20, 30, 30, 'cat', image=image) auth_token = user.encode_auth_token().decode() image_name = image.name.replace(".jpg", "") response = self.client.delete( f'/api/images/{image_name}', follow_redirects=True, headers={'Authorization': f'Bearer {auth_token}'}) self.assertEqual(response.status_code, 200) data = json.loads(response.data.decode()) self.assertEqual(data['status'], 'success') self.assertEqual(data['message'], 'Image was successfully deleted.') self.assertEqual(Image.query.count(), 0) self.assertEqual(Box.query.count(), 0)
def test_get_images(self): user_1 = add_user('user1', 'pass') user_2 = add_user('user2', 'pass') add_image('image1', user=user_1) add_image('image2', user=user_1) add_image('image3', user=user_2) response = self.client.get('/api/images', follow_redirects=True) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertEqual(data['status'], 'success') data = data['data'] self.assertEqual(len(data), 3) self.assertEqual(data[0]['name'], 'image1') self.assertEqual(data[0]['user']['username'], 'user1') self.assertIsNotNone(data[0]['uploaded_at']) self.assertEqual(data[1]['name'], 'image2') self.assertEqual(data[1]['user']['username'], 'user1') self.assertIsNotNone(data[1]['uploaded_at']) self.assertEqual(data[2]['name'], 'image3') self.assertEqual(data[2]['user']['username'], 'user2') self.assertIsNotNone(data[2]['uploaded_at'])
def test_add_image(self): image = add_image(name=sha256('test_name'.encode()).hexdigest()) self.assertEqual(sha256('test_name'.encode()).hexdigest(), image.name)
def test_image_to_json(self): image = add_image(name=sha256('test_name'.encode()).hexdigest()) self.assertTrue(isinstance(image.to_json(), dict))
def test_add_image_duplicate_filename(self): image = add_image(name=sha256('test_name'.encode()).hexdigest()) image_2 = Image(name=sha256('test_name'.encode()).hexdigest()) db.session.add(image_2) self.assertRaises(IntegrityError, db.session.commit)