def test_session_mixed(req, rsp): s = Session( cookie_names=['session', 'state'], cookie_vals={ 'session': ResponseCookie('session=foo; secure; httponly; path=/') }, header_vals={'auth': 'bar'}, ) s.apply_req(req) s.apply_rsp(rsp) assert req.cookies['session'] == 'foo' assert rsp.cookies['session'].key == 'session' assert rsp.cookies['session'].val == 'foo' assert rsp.cookies['session'].secure assert rsp.cookies['session'].http_only assert rsp.cookies['session'].path == '/' assert 'auth' not in rsp.headers r = Response() r.start_line = 'HTTP/1.1 200 OK' r.set_cookie(ResponseCookie('state=bazzers')) r.set_cookie(ResponseCookie('session=buzzers')) s.get_rsp(r) assert s.cookie_vals['session'].val == 'buzzers' assert s.cookie_vals['state'].val == 'bazzers'
def submit(line): """ Resubmit some requests, optionally with modified headers and cookies. Usage: submit reqids [-h] [-m] [-u] [-p] [-o REQID] [-c [COOKIES [COOKIES ...]]] [-d [HEADERS [HEADERS ...]]] """ parser = argparse.ArgumentParser(prog="submit", usage=submit.__doc__) parser.add_argument('reqids') parser.add_argument('-m', '--inmem', action='store_true', help='Store resubmitted requests in memory without storing them in the data file') parser.add_argument('-u', '--unique', action='store_true', help='Only resubmit one request per endpoint (different URL parameters are different endpoints)') parser.add_argument('-p', '--uniquepath', action='store_true', help='Only resubmit one request per endpoint (ignoring URL parameters)') parser.add_argument('-c', '--cookies', nargs='*', help='Apply a cookie to requests before submitting') parser.add_argument('-d', '--headers', nargs='*', help='Apply a header to requests before submitting') parser.add_argument('-o', '--copycookies', help='Copy the cookies used in another request') args = parser.parse_args(shlex.split(line)) headers = {} cookies = {} clear_cookies = False if args.headers: for h in args.headers: k, v = h.split('=', 1) headers[k] = v if args.copycookies: reqid = args.copycookies req = yield Request.load_request(reqid) clear_cookies = True for k, v in req.cookies.all_pairs(): cookies[k] = v if args.cookies: for c in args.cookies: k, v = c.split('=', 1) cookies[k] = v if args.unique and args.uniquepath: raise PappyException('Both -u and -p cannot be given as arguments') newsession = Session(cookie_vals=cookies, header_vals=headers) reqs = yield load_reqlist(args.reqids) for req in reqs: if clear_cookies: req.cookies.clear() newsession.apply_req(req) conf_message = "You're about to submit %d requests, continue?" % len(reqs) if not confirm(conf_message): defer.returnValue(None) for r in reqs: r.tags.add('resubmitted') save = not args.inmem yield async_submit_requests(reqs, save=save, save_in_mem=args.inmem, unique_paths=args.uniquepath, unique_path_and_args=args.unique)
def test_session_save_all(req, rsp): s = Session() rsp.set_cookie(ResponseCookie('state=bazzers')) rsp.set_cookie(ResponseCookie('session=buzzers')) s.save_rsp(rsp, save_all=True) assert s.cookies == ['state', 'session'] assert not 'state' in req.cookies assert not 'session' in req.cookies s.apply_req(req) assert req.cookies['state'] == 'bazzers' assert req.cookies['session'] == 'buzzers'
def test_session_basic(req, rsp): s = Session( cookie_vals={'session': 'foo'}, header_vals={'auth': 'bar'}, ) assert 'session' not in req.cookies assert 'session' not in rsp.cookies assert 'auth' not in req.headers assert 'auth' not in rsp.headers s.apply_req(req) s.apply_rsp(rsp) assert req.cookies['session'] == 'foo' assert rsp.cookies['session'].cookie_str == 'session=foo' assert req.headers['auth'] == 'bar' assert 'auth' not in rsp.headers
def test_session_cookieobj_basic(req, rsp): s = Session( cookie_vals={'session':ResponseCookie('session=foo; secure; httponly; path=/')}, header_vals={'auth':'bar'}, ) s.apply_req(req) s.apply_rsp(rsp) assert req.cookies['session'] == 'foo' assert rsp.cookies['session'].key == 'session' assert rsp.cookies['session'].val == 'foo' assert rsp.cookies['session'].secure assert rsp.cookies['session'].http_only assert rsp.cookies['session'].path == '/' assert req.headers['auth'] == 'bar' assert 'auth' not in rsp.headers
def test_session_basic(req, rsp): s = Session( cookie_vals={'session':'foo'}, header_vals={'auth':'bar'}, ) assert 'session' not in req.cookies assert 'session' not in rsp.cookies assert 'auth' not in req.headers assert 'auth' not in rsp.headers s.apply_req(req) s.apply_rsp(rsp) assert req.cookies['session'] == 'foo' assert rsp.cookies['session'].cookie_str == 'session=foo' assert req.headers['auth'] == 'bar' assert 'auth' not in rsp.headers
def test_session_mixed(req, rsp): s = Session( cookie_names=['session', 'state'], cookie_vals={'session':ResponseCookie('session=foo; secure; httponly; path=/')}, header_vals={'auth':'bar'}, ) s.apply_req(req) s.apply_rsp(rsp) assert req.cookies['session'] == 'foo' assert rsp.cookies['session'].key == 'session' assert rsp.cookies['session'].val == 'foo' assert rsp.cookies['session'].secure assert rsp.cookies['session'].http_only assert rsp.cookies['session'].path == '/' assert 'auth' not in rsp.headers r = Response() r.start_line = 'HTTP/1.1 200 OK' r.set_cookie(ResponseCookie('state=bazzers')) r.set_cookie(ResponseCookie('session=buzzers')) s.get_rsp(r) assert s.cookie_vals['session'].val == 'buzzers' assert s.cookie_vals['state'].val == 'bazzers'
def submit(line): """ Resubmit some requests, optionally with modified headers and cookies. Usage: submit reqids [-h] [-m] [-u] [-p] [-c [COOKIES [COOKIES ...]]] [-d [HEADERS [HEADERS ...]]] """ parser = argparse.ArgumentParser(prog="submit", usage=submit.__doc__) parser.add_argument('reqids') parser.add_argument('-m', '--inmem', action='store_true', help='Store resubmitted requests in memory without storing them in the data file') parser.add_argument('-u', '--unique', action='store_true', help='Only resubmit one request per endpoint (different URL parameters are different endpoints)') parser.add_argument('-p', '--uniquepath', action='store_true', help='Only resubmit one request per endpoint (ignoring URL parameters)') parser.add_argument('-c', '--cookies', nargs='*', help='Apply a cookie to requests before submitting') parser.add_argument('-d', '--headers', nargs='*', help='Apply a header to requests before submitting') args = parser.parse_args(shlex.split(line)) headers = {} cookies = {} if args.headers: for h in args.headers: k, v = h.split('=', 1) headers[k] = v if args.cookies: for c in args.cookies: k, v = c.split('=', 1) cookies[k] = v if args.unique and args.uniquepath: raise PappyException('Both -u and -p cannot be given as arguments') newsession = Session(cookie_vals=cookies, header_vals=headers) reqs = yield load_reqlist(args.reqids) if args.unique or args.uniquepath: endpoints = set() new_reqs = [] for r in reqs: if args.unique: s = r.url else: s = r.path if not s in endpoints: new_reqs.append(r.copy()) endpoints.add(s) reqs = new_reqs else: reqs = [r.copy() for r in reqs] for req in reqs: newsession.apply_req(req) conf_message = "You're about to submit %d requests, continue?" % len(reqs) if not confirm(conf_message): defer.returnValue(None) for r in reqs: r.tags.add('resubmitted') if args.inmem: yield async_submit_requests(reqs) for req in reqs: add_to_history(req) else: yield async_submit_requests(reqs, save=True)
def submit(line): """ Resubmit some requests, optionally with modified headers and cookies. Usage: submit reqids [-h] [-m] [-u] [-p] [-c [COOKIES [COOKIES ...]]] [-d [HEADERS [HEADERS ...]]] """ parser = argparse.ArgumentParser(prog="submit", usage=submit.__doc__) parser.add_argument('reqids') parser.add_argument( '-m', '--inmem', action='store_true', help= 'Store resubmitted requests in memory without storing them in the data file' ) parser.add_argument( '-u', '--unique', action='store_true', help= 'Only resubmit one request per endpoint (different URL parameters are different endpoints)' ) parser.add_argument( '-p', '--uniquepath', action='store_true', help='Only resubmit one request per endpoint (ignoring URL parameters)' ) parser.add_argument('-c', '--cookies', nargs='*', help='Apply a cookie to requests before submitting') parser.add_argument('-d', '--headers', nargs='*', help='Apply a header to requests before submitting') args = parser.parse_args(shlex.split(line)) headers = {} cookies = {} if args.headers: for h in args.headers: k, v = h.split('=', 1) headers[k] = v if args.cookies: for c in args.cookies: k, v = c.split('=', 1) cookies[k] = v if args.unique and args.uniquepath: raise PappyException('Both -u and -p cannot be given as arguments') newsession = Session(cookie_vals=cookies, header_vals=headers) reqs = yield load_reqlist(args.reqids) if args.unique or args.uniquepath: endpoints = set() new_reqs = [] for r in reqs: if args.unique: s = r.url else: s = r.path if not s in endpoints: new_reqs.append(r.copy()) endpoints.add(s) reqs = new_reqs else: reqs = [r.copy() for r in reqs] for req in reqs: newsession.apply_req(req) conf_message = "You're about to submit %d requests, continue?" % len(reqs) if not confirm(conf_message): defer.returnValue(None) for r in reqs: r.tags.add('resubmitted') if args.inmem: yield async_submit_requests(reqs) for req in reqs: add_to_history(req) else: yield async_submit_requests(reqs, save=True)
def submit(line): """ Resubmit some requests, optionally with modified headers and cookies. Usage: submit reqids [-h] [-m] [-u] [-p] [-o REQID] [-c [COOKIES [COOKIES ...]]] [-d [HEADERS [HEADERS ...]]] """ parser = argparse.ArgumentParser(prog="submit", usage=submit.__doc__) parser.add_argument('reqids') parser.add_argument( '-m', '--inmem', action='store_true', help= 'Store resubmitted requests in memory without storing them in the data file' ) parser.add_argument( '-u', '--unique', action='store_true', help= 'Only resubmit one request per endpoint (different URL parameters are different endpoints)' ) parser.add_argument( '-p', '--uniquepath', action='store_true', help='Only resubmit one request per endpoint (ignoring URL parameters)' ) parser.add_argument('-c', '--cookies', nargs='*', help='Apply a cookie to requests before submitting') parser.add_argument('-d', '--headers', nargs='*', help='Apply a header to requests before submitting') parser.add_argument('-o', '--copycookies', help='Copy the cookies used in another request') args = parser.parse_args(shlex.split(line)) headers = {} cookies = {} clear_cookies = False if args.headers: for h in args.headers: k, v = h.split('=', 1) headers[k] = v if args.copycookies: reqid = args.copycookies req = yield Request.load_request(reqid) clear_cookies = True for k, v in req.cookies.all_pairs(): cookies[k] = v if args.cookies: for c in args.cookies: k, v = c.split('=', 1) cookies[k] = v if args.unique and args.uniquepath: raise PappyException('Both -u and -p cannot be given as arguments') newsession = Session(cookie_vals=cookies, header_vals=headers) reqs = yield load_reqlist(args.reqids) for req in reqs: if clear_cookies: req.cookies.clear() newsession.apply_req(req) conf_message = "You're about to submit %d requests, continue?" % len(reqs) if not confirm(conf_message): defer.returnValue(None) for r in reqs: r.tags.add('resubmitted') save = not args.inmem yield async_submit_requests(reqs, save=save, save_in_mem=args.inmem, unique_paths=args.uniquepath, unique_path_and_args=args.unique)