調整儀錶板和編輯器的界面,新增快速設定按鈕,並添加了相關的測試腳本和模板文件。
This commit is contained in:
63
scripts/test_phase1.py
Normal file
63
scripts/test_phase1.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""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')
|
||||
Reference in New Issue
Block a user