You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.8 KiB
121 lines
3.8 KiB
#!/usr/bin/python3
|
|
|
|
import time
|
|
|
|
from flask import url_for
|
|
|
|
from .util import live_server_setup
|
|
def test_setup(client, live_server):
|
|
live_server_setup(live_server)
|
|
|
|
def test_import(client, live_server):
|
|
# Give the endpoint time to spin up
|
|
time.sleep(1)
|
|
|
|
res = client.post(
|
|
url_for("import_page"),
|
|
data={
|
|
"distill-io": "",
|
|
"urls": """https://example.com
|
|
https://example.com tag1
|
|
https://example.com tag1, other tag"""
|
|
},
|
|
follow_redirects=True,
|
|
)
|
|
assert b"3 Imported" in res.data
|
|
assert b"tag1" in res.data
|
|
assert b"other tag" in res.data
|
|
res = client.get(url_for("api_delete", uuid="all"), follow_redirects=True)
|
|
|
|
# Clear flask alerts
|
|
res = client.get( url_for("index"))
|
|
res = client.get( url_for("index"))
|
|
|
|
def xtest_import_skip_url(client, live_server):
|
|
|
|
|
|
# Give the endpoint time to spin up
|
|
time.sleep(1)
|
|
|
|
res = client.post(
|
|
url_for("import_page"),
|
|
data={
|
|
"distill-io": "",
|
|
"urls": """https://example.com
|
|
:ht000000broken
|
|
"""
|
|
},
|
|
follow_redirects=True,
|
|
)
|
|
assert b"1 Imported" in res.data
|
|
assert b"ht000000broken" in res.data
|
|
assert b"1 Skipped" in res.data
|
|
res = client.get(url_for("api_delete", uuid="all"), follow_redirects=True)
|
|
# Clear flask alerts
|
|
res = client.get( url_for("index"))
|
|
|
|
def test_import_distillio(client, live_server):
|
|
|
|
distill_data='''
|
|
{
|
|
"client": {
|
|
"local": 1
|
|
},
|
|
"data": [
|
|
{
|
|
"name": "Unraid | News",
|
|
"uri": "https://unraid.net/blog",
|
|
"config": "{\\"selections\\":[{\\"frames\\":[{\\"index\\":0,\\"excludes\\":[],\\"includes\\":[{\\"type\\":\\"xpath\\",\\"expr\\":\\"(//div[@id='App']/div[contains(@class,'flex')]/main[contains(@class,'relative')]/section[contains(@class,'relative')]/div[@class='container']/div[contains(@class,'flex')]/div[contains(@class,'w-full')])[1]\\"}]}],\\"dynamic\\":true,\\"delay\\":2}],\\"ignoreEmptyText\\":true,\\"includeStyle\\":false,\\"dataAttr\\":\\"text\\"}",
|
|
"tags": ["nice stuff", "nerd-news"],
|
|
"content_type": 2,
|
|
"state": 40,
|
|
"schedule": "{\\"type\\":\\"INTERVAL\\",\\"params\\":{\\"interval\\":4447}}",
|
|
"ts": "2022-03-27T15:51:15.667Z"
|
|
}
|
|
]
|
|
}
|
|
|
|
'''
|
|
|
|
# Give the endpoint time to spin up
|
|
time.sleep(1)
|
|
client.get(url_for("api_delete", uuid="all"), follow_redirects=True)
|
|
res = client.post(
|
|
url_for("import_page"),
|
|
data={
|
|
"distill-io": distill_data,
|
|
"urls" : ''
|
|
},
|
|
follow_redirects=True,
|
|
)
|
|
|
|
|
|
assert b"Unable to read JSON file, was it broken?" not in res.data
|
|
assert b"1 Imported from Distill.io" in res.data
|
|
|
|
res = client.get( url_for("edit_page", uuid="first"))
|
|
|
|
assert b"https://unraid.net/blog" in res.data
|
|
assert b"Unraid | News" in res.data
|
|
|
|
|
|
# flask/wtforms should recode this, check we see it
|
|
# wtforms encodes it like id=' ,but html.escape makes it like id='
|
|
# - so just check it manually :(
|
|
#import json
|
|
#import html
|
|
#d = json.loads(distill_data)
|
|
# embedded_d=json.loads(d['data'][0]['config'])
|
|
# x=html.escape(embedded_d['selections'][0]['frames'][0]['includes'][0]['expr']).encode('utf-8')
|
|
assert b"xpath:(//div[@id='App']/div[contains(@class,'flex')]/main[contains(@class,'relative')]/section[contains(@class,'relative')]/div[@class='container']/div[contains(@class,'flex')]/div[contains(@class,'w-full')])[1]" in res.data
|
|
|
|
# did the tags work?
|
|
res = client.get( url_for("index"))
|
|
|
|
assert b"nice stuff" in res.data
|
|
assert b"nerd-news" in res.data
|
|
|
|
res = client.get(url_for("api_delete", uuid="all"), follow_redirects=True)
|
|
# Clear flask alerts
|
|
res = client.get(url_for("index"))
|