def test_add_break(bugbuzz_client, source_file): source, uploaded_file = source_file local_vars = dict(foo='bar', eggs='spam') created_break_ = bugbuzz_client.add_break( 73, uploaded_file['id'], local_vars, ) url = urlparse.urljoin( bugbuzz_client.base_url, '/breaks/{}'.format(created_break_['id']), ) resp = requests.get(url) break_ = resp.json()['break'] assert break_['session'] == bugbuzz_client.session_id assert break_['lineno'] == 73 assert break_['file'] == uploaded_file['id'] iv = base64.b64decode(break_['aes_iv'].encode('latin1')) encrypted = base64.b64decode(break_['local_vars'].encode('latin1')) aes = AES.new(bugbuzz_client.aes_key, AES.MODE_CBC, iv) parsed_local_vars = json.loads( pkcs5_unpad(aes.decrypt(encrypted)).decode('latin1') ) assert parsed_local_vars == local_vars
def test_set_trace(mocker, bugbuzz_dbg): mocker.patch('webbrowser.open_new_tab') base_url = bugbuzz_dbg.client.base_url # post continue command def post_continue(): time.sleep(3) url = urlparse.urljoin( base_url, '/sessions/{}/actions/continue'.format( bugbuzz_dbg.client.session_id), ) resp = requests.post(url) resp.raise_for_status() thread = threading.Thread(target=post_continue) thread.daemon = True thread.start() # TODO: set a timeout here? bugbuzz_dbg.set_trace(sys._getframe()) sid = bugbuzz_dbg.client.session_id url = urlparse.urljoin(base_url, '/sessions/{}'.format(sid)) resp = requests.get(url) session = resp.json()['session'] assert len(session['files']) == 1 assert len(session['breaks']) == 2
def test_set_trace(mocker, bugbuzz_dbg): mocker.patch('webbrowser.open_new_tab') base_url = bugbuzz_dbg.client.base_url # post continue command def post_continue(): time.sleep(3) url = urlparse.urljoin( base_url, '/sessions/{}/actions/continue'.format( bugbuzz_dbg.client.session_id ), ) resp = requests.post(url) resp.raise_for_status() thread = threading.Thread(target=post_continue) thread.daemon = True thread.start() # TODO: set a timeout here? bugbuzz_dbg.set_trace(sys._getframe()) sid = bugbuzz_dbg.client.session_id url = urlparse.urljoin(base_url, '/sessions/{}'.format(sid)) resp = requests.get(url) session = resp.json()['session'] assert len(session['files']) == 1 assert len(session['breaks']) == 2
def test_add_break(bugbuzz_client, source_file): source, uploaded_file = source_file local_vars = dict(foo='bar', eggs='spam') created_break_ = bugbuzz_client.add_break( 73, uploaded_file['id'], local_vars, ) url = urlparse.urljoin( bugbuzz_client.base_url, '/breaks/{}'.format(created_break_['id']), ) resp = requests.get(url) break_ = resp.json()['break'] assert break_['session'] == bugbuzz_client.session_id assert break_['lineno'] == 73 assert break_['file'] == uploaded_file['id'] iv = base64.b64decode(break_['aes_iv'].encode('latin1')) encrypted = base64.b64decode(break_['local_vars'].encode('latin1')) aes = AES.new(bugbuzz_client.aes_key, AES.MODE_CBC, iv) parsed_local_vars = json.loads( pkcs5_unpad(aes.decrypt(encrypted)).decode('latin1')) assert parsed_local_vars == local_vars
def test_creating_session(bugbuzz_client): bugbuzz_client.start() assert bugbuzz_client.session_id.startswith('SE') url = urlparse.urljoin( bugbuzz_client.base_url, '/sessions/{}'.format(bugbuzz_client.session_id), ) resp = requests.get(url) session = resp.json()['session'] assert session['encrypted'] assert session.get('validation_code') assert session.get('aes_iv')
def test_upload_source(bugbuzz_client, source_file): source, uploaded_file = source_file url = urlparse.urljoin( bugbuzz_client.base_url, '/files/{}'.format(uploaded_file['id']), ) resp = requests.get(url) file_ = resp.json()['file'] assert file_['session'] == bugbuzz_client.session_id iv = base64.b64decode(file_['aes_iv'].encode('latin1')) content = base64.b64decode(file_['content'].encode('latin1')) aes = AES.new(bugbuzz_client.aes_key, AES.MODE_CBC, iv) assert pkcs5_unpad(aes.decrypt(content)) == source