64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
|
|
"""Automated basic end-to-end test for Phase 1 features.
|
||
|
|
Creates a project, updates settings, uploads an image, lists media, deletes image.
|
||
|
|
"""
|
||
|
|
import io
|
||
|
|
import os
|
||
|
|
import sys
|
||
|
|
import time
|
||
|
|
import json
|
||
|
|
import requests
|
||
|
|
from PIL import Image
|
||
|
|
|
||
|
|
BASE = 'http://127.0.0.1:5000'
|
||
|
|
|
||
|
|
def create_project(name='test-project'):
|
||
|
|
r = requests.post(f'{BASE}/api/projects', json={'name': name, 'description': 'automated test'})
|
||
|
|
r.raise_for_status()
|
||
|
|
return r.json()
|
||
|
|
|
||
|
|
def update_settings(slug):
|
||
|
|
r = requests.put(f'{BASE}/api/projects/{slug}/settings', json={'title':'Auto Test','description':'desc'})
|
||
|
|
r.raise_for_status()
|
||
|
|
return r.json()
|
||
|
|
|
||
|
|
def upload_image(slug):
|
||
|
|
# generate small PNG
|
||
|
|
im = Image.new('RGB', (100,100), color=(123,222,100))
|
||
|
|
buf = io.BytesIO()
|
||
|
|
im.save(buf, format='PNG')
|
||
|
|
buf.seek(0)
|
||
|
|
files = {'file': ('test.png', buf, 'image/png')}
|
||
|
|
r = requests.post(f'{BASE}/api/projects/{slug}/media/upload', files=files)
|
||
|
|
r.raise_for_status()
|
||
|
|
return r.json()
|
||
|
|
|
||
|
|
def list_media(slug):
|
||
|
|
r = requests.get(f'{BASE}/api/projects/{slug}/media/list')
|
||
|
|
r.raise_for_status()
|
||
|
|
return r.json()
|
||
|
|
|
||
|
|
def delete_media(slug, rel):
|
||
|
|
r = requests.delete(f'{BASE}/api/projects/{slug}/media/{rel}')
|
||
|
|
return r
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
print('Creating project...')
|
||
|
|
proj = create_project('phase1-e2e')
|
||
|
|
slug = proj['slug']
|
||
|
|
print('Project created:', slug)
|
||
|
|
print('Updating settings...')
|
||
|
|
print(update_settings(slug))
|
||
|
|
print('Uploading image...')
|
||
|
|
up = upload_image(slug)
|
||
|
|
print('Upload result:', up)
|
||
|
|
time.sleep(0.5)
|
||
|
|
items = list_media(slug)
|
||
|
|
print('Media list count:', len(items))
|
||
|
|
if items:
|
||
|
|
it = items[0]
|
||
|
|
rel = f"media/images/{it['date']}/{it['filename']}"
|
||
|
|
print('Deleting', rel)
|
||
|
|
r = delete_media(slug, rel)
|
||
|
|
print('Delete status', r.status_code)
|
||
|
|
print('Done')
|