11#!/usr/bin/env python3
22
3+ import json
34import time
45import unittest
56
7+ from datetime import datetime
8+
69from pylacus import PyLacus
710from pylacus .api import CaptureStatus
811
@@ -18,11 +21,149 @@ def test_up(self) -> None:
1821 self .assertFalse (self .client .is_busy ())
1922
2023 def test_submit (self ) -> None :
21- uuid = self .client .enqueue (url = "circl.lu" )
24+ uuid = self .client .enqueue (url = "circl.lu" , max_retries = 0 )
2225 while True :
2326 status = self .client .get_capture_status (uuid )
2427 if status == CaptureStatus .DONE :
2528 break
2629 time .sleep (5 )
2730 response = self .client .get_capture (uuid )
2831 self .assertEqual (response ['status' ], 1 )
32+
33+ def test_submit_cookies (self ) -> None :
34+ # Very basic cookie
35+ uuid = self .client .enqueue (url = "circl.lu" , cookies = "{\" test\" : \" test\" }" , max_retries = 0 )
36+ while True :
37+ status = self .client .get_capture_status (uuid )
38+ if status == CaptureStatus .DONE :
39+ break
40+ time .sleep (5 )
41+ response = self .client .get_capture (uuid )
42+ self .assertEqual (len (response ['cookies' ]), 1 )
43+ self .assertEqual (response ['cookies' ][0 ]['domain' ], 'circl.lu' )
44+ self .assertEqual (response ['cookies' ], response ['storage' ]['cookies' ])
45+
46+ cookie_from_capture = response ['cookies' ][0 ]
47+ expires = datetime .now ().timestamp () + 3600
48+ cookie_from_capture ['expires' ] = expires
49+ uuid = self .client .enqueue (url = "circl.lu" , cookies = cookie_from_capture , max_retries = 0 )
50+ while True :
51+ status = self .client .get_capture_status (uuid )
52+ if status == CaptureStatus .DONE :
53+ break
54+ time .sleep (5 )
55+ response = self .client .get_capture (uuid )
56+ self .assertEqual (response ['cookies' ][0 ]['expires' ], expires )
57+
58+ # Send list
59+ cookies_from_capture = response ['cookies' ]
60+ expires = datetime .now ().timestamp () + 4000
61+ cookies_from_capture [0 ]['expires' ] = expires
62+ uuid = self .client .enqueue (url = "circl.lu" , cookies = cookies_from_capture , max_retries = 0 )
63+ while True :
64+ status = self .client .get_capture_status (uuid )
65+ if status == CaptureStatus .DONE :
66+ break
67+ time .sleep (5 )
68+ response = self .client .get_capture (uuid )
69+ self .assertEqual (response ['cookies' ][0 ]['expires' ], expires )
70+
71+ # Send list as json
72+ cookies_from_capture = response ['cookies' ]
73+ uuid = self .client .enqueue (url = "circl.lu" , cookies = json .dumps (cookies_from_capture ), max_retries = 0 )
74+ while True :
75+ status = self .client .get_capture_status (uuid )
76+ if status == CaptureStatus .DONE :
77+ break
78+ time .sleep (5 )
79+ response = self .client .get_capture (uuid )
80+ self .assertEqual (response ['cookies' ][0 ]['expires' ], expires , response ['cookies' ])
81+
82+ def test_submit_storage (self ) -> None :
83+ uuid = self .client .enqueue (url = "https://mdn.github.io/dom-examples/web-storage/" ,
84+ max_retries = 0 )
85+ while True :
86+ status = self .client .get_capture_status (uuid )
87+ if status == CaptureStatus .DONE :
88+ break
89+ time .sleep (5 )
90+ response = self .client .get_capture (uuid )
91+ storage = response ['storage' ]
92+ self .assertEqual (storage ['origins' ][0 ]['origin' ], 'https://mdn.github.io' )
93+ self .assertEqual (len (storage ['origins' ][0 ]['localStorage' ]), 3 )
94+ for item in storage ['origins' ][0 ]['localStorage' ]:
95+ if item ['name' ] == 'font' :
96+ self .assertEqual (item ['value' ], 'sans-serif' )
97+ elif item ['name' ] == 'image' :
98+ self .assertEqual (item ['value' ], 'images/firefoxos.png' )
99+ elif item ['name' ] == 'bgcolor' :
100+ self .assertEqual (item ['value' ], 'FF0000' )
101+
102+ # Change values
103+ for item in storage ['origins' ][0 ]['localStorage' ]:
104+ if item ['name' ] == 'font' :
105+ item ['value' ] = 'serif'
106+ elif item ['name' ] == 'image' :
107+ item ['value' ] = 'images/crocodile.png'
108+ elif item ['name' ] == 'bgcolor' :
109+ item ['value' ] = '00FF00'
110+
111+ uuid = self .client .enqueue (url = "https://mdn.github.io/dom-examples/web-storage/" ,
112+ storage = storage ,
113+ max_retries = 0 )
114+ while True :
115+ status = self .client .get_capture_status (uuid )
116+ if status == CaptureStatus .DONE :
117+ break
118+ time .sleep (5 )
119+ response = self .client .get_capture (uuid )
120+ storage = response ['storage' ]
121+ self .assertEqual (storage ['origins' ][0 ]['origin' ], 'https://mdn.github.io' )
122+ self .assertEqual (len (storage ['origins' ][0 ]['localStorage' ]), 3 )
123+ for item in storage ['origins' ][0 ]['localStorage' ]:
124+ if item ['name' ] == 'font' :
125+ self .assertEqual (item ['value' ], 'serif' )
126+ elif item ['name' ] == 'image' :
127+ self .assertEqual (item ['value' ], 'images/crocodile.png' )
128+ elif item ['name' ] == 'bgcolor' :
129+ self .assertEqual (item ['value' ], '00FF00' )
130+
131+ def test_submit_indexeddb (self ) -> None :
132+ uuid = self .client .enqueue (url = "https://mdn.github.io/dom-examples/indexeddb-api/index.html" ,
133+ # headless=False,
134+ headers = {'foo' : 'bar' },
135+ max_retries = 0 )
136+ while True :
137+ status = self .client .get_capture_status (uuid )
138+ if status == CaptureStatus .DONE :
139+ break
140+ time .sleep (5 )
141+ response = self .client .get_capture (uuid )
142+ storage = response ['storage' ]
143+ self .assertEqual (storage ['origins' ][0 ]['origin' ], 'https://mdn.github.io' )
144+ self .assertEqual (len (storage ['origins' ][0 ]['indexedDB' ]), 1 )
145+ indexeddb = storage ['origins' ][0 ]['indexedDB' ][0 ]
146+ self .assertEqual (indexeddb ['name' ], 'mdn-demo-indexeddb-epublications' )
147+ self .assertEqual (len (indexeddb ['stores' ][0 ]['records' ]), 0 )
148+
149+ # Add record
150+ record = {'value' : {'biblioid' : 'Bar' ,
151+ 'title' : 'Foo' ,
152+ 'year' : 1999 , 'id' : 1 }}
153+ storage ['origins' ][0 ]['indexedDB' ][0 ]['stores' ][0 ]['records' ].append (record )
154+ uuid = self .client .enqueue (url = "https://mdn.github.io/dom-examples/indexeddb-api/index.html" ,
155+ # headless=False,
156+ storage = storage ,
157+ max_retries = 0 )
158+ while True :
159+ status = self .client .get_capture_status (uuid )
160+ if status == CaptureStatus .DONE :
161+ break
162+ time .sleep (5 )
163+ response = self .client .get_capture (uuid )
164+ storage = response ['storage' ]
165+ self .assertEqual (storage ['origins' ][0 ]['origin' ], 'https://mdn.github.io' )
166+ self .assertEqual (len (storage ['origins' ][0 ]['indexedDB' ]), 1 )
167+ indexeddb = storage ['origins' ][0 ]['indexedDB' ][0 ]
168+ self .assertEqual (indexeddb ['name' ], 'mdn-demo-indexeddb-epublications' )
169+ self .assertEqual (len (indexeddb ['stores' ][0 ]['records' ]), 1 )
0 commit comments