Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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')
Esempio n. 6
0
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')
Esempio n. 7
0
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
Esempio n. 8
0
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