Beispiel #1
0
def test_api_differences(pic, client):
    '''
    Test each aspect of the deifferences page in the API
    '''
    expected = {}
    result = {}
    responce = client.get('/differences')
    assert responce.data == jsonify(expected).data  # Confirm no images
    # Add three pictures
    picture.add_picture(*pic)
    picture.add_picture(*pic)
    picture.add_picture(*pic)
    result['files-db'] = []
    result['db-files'] = []
    expected[pic[0]] = result
    responce = client.get('/differences')
    assert responce.data == jsonify(expected).data  # Confirm no differences
    tag_path = pic[0] / picture.tags_to_path(pic[1])
    # Remove the second picture from the image directory
    (tag_path / picture.id_to_filename(2)).unlink()
    # Remove the third picture from the database
    with sql.connection(sql.PICTURE) as table:
        table.delete(picture_id=3)
    result['files-db'] = [(pic[0], str(tag_path), picture.id_to_filename(3))]
    result['db-files'] = [(pic[0], str(tag_path), picture.id_to_filename(2))]
    expected[pic[0]] = result
    responce = client.get('/differences')
    assert responce.data == jsonify(expected).data  # Confirm normal operation
Beispiel #2
0
def test_reconcile_images(pic):
    '''
    Test reconcile_images by adding three pictures
    Remove one from the database, and another from the image directory
    Make sure reconcile_images returns the correct missing images
    '''
    # Add three pictures
    picture.add_picture(*pic)
    picture.add_picture(*pic)
    picture.add_picture(*pic)
    tag_path = pic[0] / picture.tags_to_path(pic[1])
    # Remove the second picture from the image directory
    (tag_path / picture.id_to_filename(2)).unlink()
    with sql.connection(sql.PICTURE) as table:
        table.delete(picture_id=3)
    result = picture.reconcile_images(pic[0])
    file_not_db = {(pic[0], str(tag_path), picture.id_to_filename(3))}
    db_not_file = {(pic[0], str(tag_path), picture.id_to_filename(2))}
    assert result['files-db'] == file_not_db
    assert result['db-files'] == db_not_file
Beispiel #3
0
def test_list_user_images(pic):
    '''
    Test each aspect of list_user_images
    '''
    # Return None when no images
    assert picture.list_user_images(pic[0]) is None
    picture.add_picture(*pic)
    result = picture.list_user_images(pic[0])
    tag_path = pic[0] / picture.tags_to_path(pic[1])
    compare = (pic[0], str(tag_path), picture.id_to_filename(1))
    assert result == [compare]
Beispiel #4
0
def test_api_images(pic, client):
    '''
    Test each aspect of the images page in the API
    '''
    expected = {}
    responce = client.get('/images')
    assert responce.data == jsonify(expected).data  # Confirm no images
    picture.add_picture(*pic)
    pic_value = picture.make_picture(1, *pic)
    pic_value['image_name'] = picture.id_to_filename(
        pic_value.pop('picture_id'))
    pic_value.pop('user_id')
    expected[pic[0]] = [pic_value]
    responce = client.get('/images')
    assert responce.data == jsonify(expected).data  # Confirm normal operation
Beispiel #5
0
 def get(self):
     '''
     Gives the web server a list of users and their image details
     '''
     conn = db_connect.connect()
     result = {}
     query = conn.execute('SELECT user_id FROM User')
     for user in query.cursor:
         user_id = user[0]
         command = f'SELECT tags, picture_id FROM Picture WHERE user_id = "{user_id}"'
         images = conn.execute(command)
         for values in images.cursor:
             image = dict(zip(tuple(images.keys()), values))
             image['image_name'] = id_to_filename(image.pop("picture_id"))
             try:
                 result[user_id].append(image)
             except KeyError:  # Clause for the first image
                 result[user_id] = [image]
     conn.close()
     return jsonify(result)