196 lines
9.5 KiB
Python
196 lines
9.5 KiB
Python
import os
|
|
|
|
import twitfix,twExtract
|
|
import cache
|
|
from flask.testing import FlaskClient
|
|
from vx_testdata import *
|
|
client = FlaskClient(twitfix.app)
|
|
|
|
def test_embed_qrtTweet():
|
|
cache.clearCache()
|
|
# this is an incredibly lazy test, todo: improve it in the future
|
|
resp = client.get(testQRTTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testQRTTweet_compare['text'][:10] in str(resp.data)
|
|
# test qrt-ception
|
|
resp = client.get(testQrtCeptionTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"}) # get top level tweet
|
|
assert resp.status_code==200
|
|
assert "Please retweet this to spread awareness for retweets" in str(resp.data)
|
|
qtd_tweet=cache.getVnfFromLinkCache("https://twitter.com/EliLanger/status/585253161260216320") # check that the quoted tweet for the top level tweet is cached
|
|
assert qtd_tweet is not None
|
|
assert qtd_tweet["qrtURL"] is not None # check that the quoted tweet for the top level tweet has a qrtURL
|
|
assert cache.getVnfFromLinkCache("https://twitter.com/EliLanger/status/313143446842007553") is None # check that the bottom level tweet has NOT been cached
|
|
resp = client.get("/EliLanger/status/585253161260216320",headers={"User-Agent":"test"}) # get mid level tweet
|
|
assert resp.status_code==200
|
|
assert cache.getVnfFromLinkCache("https://twitter.com/EliLanger/status/313143446842007553") is not None # check that the bottom level tweet has been cached now
|
|
|
|
def test_embed_qrtVideoTweet():
|
|
cache.clearCache()
|
|
# this is an incredibly lazy test, todo: improve it in the future
|
|
resp = client.get(testQrtVideoTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
qtd_tweet=videoRedirect(cache.getVnfFromLinkCache("https://twitter.com/i/status/1674197531301904388"))
|
|
vurl = qtd_tweet["mediaURLs"][0]
|
|
assert f"twitter:player:stream\" content=\"{vurl}" in str(resp.data)
|
|
|
|
def test_embed_FromScratch():
|
|
cache.clearCache()
|
|
client.get(testTextTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
client.get(testVideoTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
client.get(testMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
client.get(testMultiMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
|
|
def test_embed_User():
|
|
cache.clearCache()
|
|
resp = client.get(testUser.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
|
|
def test_embed_FromCache():
|
|
cache.clearCache()
|
|
twitfix.getTweetData(testTextTweet)
|
|
twitfix.getTweetData(testVideoTweet)
|
|
twitfix.getTweetData(testMediaTweet)
|
|
twitfix.getTweetData(testMultiMediaTweet)
|
|
#embed time
|
|
resp = client.get(testTextTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
resp = client.get(testVideoTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
resp = client.get(testMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
|
|
def test_embed_Suggestive():
|
|
resp = client.get(testNSFWTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert "so i had a bot generate it for me" in str(resp.data)
|
|
assert "FfF_gKwXgAIpnpD" in str(resp.data)
|
|
|
|
def test_embed_video_direct():
|
|
resp = client.get(testVideoTweet.replace("https://twitter.com","")+".mp4",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert videoRedirect(testVideoTweet_compare)["mediaURLs"][0] in str(resp.data)
|
|
|
|
def test_embed_video_direct_subdomain():
|
|
resp = client.get(testVideoTweet.replace("https://twitter.com","https://d.vxtwitter.com"),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert videoRedirect(testVideoTweet_compare)["mediaURLs"][0] in str(resp.data)
|
|
|
|
def test_embed_img_direct():
|
|
resp = client.get(testMediaTweet.replace("https://twitter.com","")+".png",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert videoRedirect(testMediaTweet_compare)["mediaURLs"][0] in str(resp.data)
|
|
|
|
def test_embed_img_direct_subdomain():
|
|
resp = client.get(testMediaTweet.replace("https://twitter.com","https://d.vxtwitter.com"),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert videoRedirect(testMediaTweet_compare)["mediaURLs"][0] in str(resp.data)
|
|
|
|
def test_embed_multi_direct():
|
|
# embed first item
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","")+"/1.png",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testMultiMediaTweet_compare["mediaURLs"][0] in str(resp.data)
|
|
|
|
# embed second item
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","")+"/2.mp4",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testMultiMediaTweet_compare["mediaURLs"][1] in str(resp.data)
|
|
|
|
def test_embed_multi_direct_subdomain():
|
|
# generic embed
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","https://d.vxtwitter.com"),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testMultiMediaTweet_compare["mediaURLs"][0] in str(resp.data)
|
|
|
|
# embed first item
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","https://d.vxtwitter.com")+"/1",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testMultiMediaTweet_compare["mediaURLs"][0] in str(resp.data)
|
|
|
|
# embed second item
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","https://d.vxtwitter.com")+"/2",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testMultiMediaTweet_compare["mediaURLs"][1] in str(resp.data)
|
|
|
|
def test_embed_message404():
|
|
resp = client.get("https://twitter.com/jack/status/12345",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert "Failed to scan your link!" in str(resp.data)
|
|
|
|
def test_combine():
|
|
twt = twitfix.getTweetData(testMultiMediaTweet)
|
|
img1 = twt["mediaURLs"][0]
|
|
img2 = twt["mediaURLs"][1]
|
|
resp = client.get(f"/rendercombined.jpg?imgs={img1},{img2}",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert resp.headers["Content-Type"]=="image/jpeg"
|
|
assert len(resp.data)>1000
|
|
|
|
def test_embed_combined():
|
|
twt = twitfix.getTweetData(testMultiMediaTweet)
|
|
img1 = twt["mediaURLs"][0]
|
|
img2 = twt["mediaURLs"][1]
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert f"/rendercombined.jpg?imgs={img1},{img2}" in str(resp.data)
|
|
|
|
def test_embed_multimedia_single():
|
|
twt = twitfix.getTweetData(testMultiMediaTweet)
|
|
img1 = twt["mediaURLs"][0]
|
|
img2 = twt["mediaURLs"][1]
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","")+"/1",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert img1 in str(resp.data) and img2 not in str(resp.data)
|
|
resp = client.get(testMultiMediaTweet.replace("https://twitter.com","")+"/2",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert img1 not in str(resp.data) and img2 in str(resp.data)
|
|
|
|
def test_embed_mixedMedia():
|
|
twt = videoRedirect(twitfix.getTweetData(testMixedMediaTweet))
|
|
img1 = twt["mediaURLs"][0]
|
|
img2 = twt["mediaURLs"][1]
|
|
resp = client.get(testMixedMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
|
|
# Check for default behavior with no index
|
|
assert resp.status_code==200
|
|
assert img1 in str(resp.data) and img2 not in str(resp.data)
|
|
assert "Media 1/2" in str(resp.data) # make sure user knows there are multiple media
|
|
|
|
resp = client.get(testMixedMediaTweet.replace("https://twitter.com","")+"/1",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert img1 in str(resp.data) and img2 not in str(resp.data)
|
|
resp = client.get(testMixedMediaTweet.replace("https://twitter.com","")+"/2",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert img1 not in str(resp.data) and img2 in str(resp.data)
|
|
|
|
def test_embed_vine_player():
|
|
resp = client.get(testVinePlayerTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert "v.cdn.vine.co" in str(resp.data)
|
|
|
|
def test_embed_poll():
|
|
resp = client.get(testPollTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert "Mean one thing" in str(resp.data)
|
|
assert "78.82%" in str(resp.data)
|
|
|
|
def test_embed_stripLastUrl():
|
|
resp = client.get(testMediaTweet.replace("https://twitter.com",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert "HgLAbiXw2E" not in str(resp.data)
|
|
|
|
def test_embed_no_username():
|
|
resp = client.get(testMediaTweet.replace("/pdxdylan",""),headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
|
|
def test_embed_txt():
|
|
resp = client.get(testTextTweet.replace("https://twitter.com","")+".txt",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testTextTweet_compare["text"] in str(resp.data)
|
|
|
|
def test_embed_rtf():
|
|
resp = client.get(testTextTweet.replace("https://twitter.com","")+".rtf",headers={"User-Agent":"test"})
|
|
assert resp.status_code==200
|
|
assert testTextTweet_compare["text"] in str(resp.data) |