Best Python code snippet using localstack_python
tests.py
Source:tests.py  
1import time2from django.test import TestCase3from django.conf.urls.defaults import *4from django.http import HttpResponse5from django.conf import settings6import paranoidsessions7def test_view(request):8    """Simple little view for testing purposes.9    This adds a unique timestamp into the session if it doesn't already10    have one; used to make sure no info leaks between sessions.11    """12    if "timestamp" not in request.session:13        request.session["timestamp"] = time.time()14    return HttpResponse("OK")15def request_filter(request):16    """Test filtering of requests; anything with "safe" in it is filtered."""17    if "safe" in request.path:18        return False19    return True20urlpatterns = patterns('',21  (r'^$', test_view), 22  (r'^safeview$', test_view),23)24def with_settings(**new_settings):25    """Decorator to temporarily change django settings during a test."""26    def with_settings_dec(func):27        def newfunc(*args,**kwds):28            old_settings = {}29            for (key,value) in new_settings.iteritems():30                old_settings[key] = getattr(settings,key)31                setattr(settings,key,value)32            try:33                return func(*args,**kwds)34            finally:35                for (key,value) in old_settings.iteritems():36                    setattr(settings,key,value)37        return newfunc38    return with_settings_dec39class TestParanoidSessions(TestCase):40    """Testcases for paranoidsessions module."""41    urls = "paranoidsessions.tests"42    def setUp(self):43        self.orig_clear_session = settings.PSESSION_CLEAR_SESSION_FUNCTION44        settings.PSESSION_CLEAR_SESSION_FUNCTION = lambda r: r.session.flush()45    def tearDown(self):46        settings.PSESSION_CLEAR_SESSION_FUNCTION = self.orig_clear_session47    @with_settings(PSESSION_SECURE_COOKIE_NAME="secureid")48    def test_secure_key_handling(self):49        #  No secure key gets sent as it's not a secure request50        r = self.client.get("/")51        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value52        self.assertFalse("secureid" in self.client.cookies)53        #  Secure key generated and sent in secure cookie54        r = self.client.get("/",**{"wsgi.url_scheme":"https"})55        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value56        key1 = self.client.cookies["secureid"].value57        self.assertEquals(session1,session2)58        self.assertTrue(self.client.cookies["secureid"]["secure"])59        #  Additional request accepted, key not sent again60        r = self.client.get("/",**{"wsgi.url_scheme":"https"})61        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value62        self.assertEquals(session1,session3)63        self.assertFalse("secureid" in r.cookies)64        #  Insecure requests are accepted with an invalid secure key65        #  (Django test client dosen't respect 'secure' cookie setting)66        self.client.cookies["secureid"] = "invalid"67        r = self.client.get("/")68        session4 = self.client.cookies[settings.SESSION_COOKIE_NAME].value69        self.assertEquals(session1,session4)70        self.assertFalse("secureid" in r.cookies)71        #  And with no secure key at all72        del self.client.cookies["secureid"]73        r = self.client.get("/")74        session4 = self.client.cookies[settings.SESSION_COOKIE_NAME].value75        self.assertEquals(session1,session4)76        self.assertFalse("secureid" in r.cookies)77        #  But secure requests are rejected with an invalid key78        self.client.cookies["secureid"] = "invalid"79        r = self.client.get("/",**{"wsgi.url_scheme":"https"})80        session5 = self.client.cookies[settings.SESSION_COOKIE_NAME].value81        key2 = self.client.cookies["secureid"].value82        self.assertNotEquals(session1,session5)83        self.assertNotEquals(key1,key2)84        #  Rejected session is new, and works OK85        r = self.client.get("/",**{"wsgi.url_scheme":"https"})86        session6 = self.client.cookies[settings.SESSION_COOKIE_NAME].value87        self.assertEquals(session5,session6)88        #  But is rejected again when secureid is not provided89        del self.client.cookies["secureid"]90        r = self.client.get("/",**{"wsgi.url_scheme":"https"})91        session7 = self.client.cookies[settings.SESSION_COOKIE_NAME].value92        self.assertNotEquals(session5,session7)93        #  It's possible to directly start a session over secure connection94        del self.client.cookies[settings.SESSION_COOKIE_NAME]95        r = self.client.get("/",**{"wsgi.url_scheme":"https"})96        session8 = self.client.cookies[settings.SESSION_COOKIE_NAME].value97        self.assertNotEquals(session8,session7)98        r = self.client.get("/",**{"wsgi.url_scheme":"https"})99        session9 = self.client.cookies[settings.SESSION_COOKIE_NAME].value100        self.assertEquals(session8,session9)101    @with_settings(PSESSION_NONCE_TIMEOUT=0)102    def test_nonce_generation(self):103        #  We are initially assigned a nonce104        r = self.client.get("/")105        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value106        nonce1 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value107        #  And the next request gets a new one108        r = self.client.get("/")109        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value110        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value111        self.assertEqual(session1,session2)112        self.assertNotEqual(nonce1,nonce2)113    @with_settings(PSESSION_NONCE_TIMEOUT=0.2)114    def test_nonce_timeout(self):115        #  We keep the same nonce for a few requests116        r = self.client.get("/")117        nonce1 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value118        r = self.client.get("/")119        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value120        self.assertEqual(nonce1,nonce2)121        #  But get a new one after the timeout122        time.sleep(0.2)123        r = self.client.get("/")124        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value125        self.assertNotEqual(nonce1,nonce2)126    @with_settings(PSESSION_NONCE_TIMEOUT=0)127    def test_invalid_nonce(self):128        #  Proving proper nonces gives access to our session data129        r = self.client.get("/")130        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value131        timestamp1 = self.client.session["timestamp"]132        r = self.client.get("/")133        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value134        timestamp2 = self.client.session["timestamp"]135        self.assertEqual(session1,session2)136        self.assertEqual(timestamp1,timestamp2)137        #  But an invalid nonce gets us booted into a fresh session138        self.client.cookies[settings.PSESSION_COOKIE_NAME].value = "invalid"139        r = self.client.get("/")140        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value141        timestamp3 = self.client.session["timestamp"]142        self.assertNotEqual(session1,session3)143        self.assertNotEqual(timestamp1,timestamp3)144    @with_settings(PSESSION_NONCE_WINDOW=2,PSESSION_NONCE_TIMEOUT=0)145    def test_nonce_window(self):146        #  Generate two nonces, we'll use the old one for requests147        r = self.client.get("/")148        nonce1 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value149        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value150        r = self.client.get("/")151        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value152        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value153        self.assertEqual(session1,session2)154        #  Use the old nonce, it should still work155        self.client.cookies[settings.PSESSION_COOKIE_NAME].value = nonce1156        r = self.client.get("/")157        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value158        self.assertEqual(session1,session3)159        #  Use the old nonce again, it should still work160        self.client.cookies[settings.PSESSION_COOKIE_NAME].value = nonce1161        r = self.client.get("/")162        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value163        self.assertEqual(session1,session3)164        #  But using it a third time should fail165        self.client.cookies[settings.PSESSION_COOKIE_NAME].value = nonce1166        r = self.client.get("/")167        session4 = self.client.cookies[settings.SESSION_COOKIE_NAME].value168        self.assertNotEqual(session1,session4)169    @with_settings(PSESSION_NONCE_WINDOW=3,PSESSION_NONCE_TIMEOUT=0,PSESSION_NONCE_WINDOW_TIMEOUT=0.2)170    def test_nonce_window_timeout(self):171        #  Generate two nonces, we'll use the old one for requests172        r = self.client.get("/")173        nonce1 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value174        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value175        r = self.client.get("/")176        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value177        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value178        self.assertEqual(session1,session2)179        #  Use the old nonce, it should still work180        self.client.cookies[settings.PSESSION_COOKIE_NAME].value = nonce1181        r = self.client.get("/")182        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value183        self.assertEqual(session1,session3)184        #  After the window timeout has elapsed, we get our session booted.185        time.sleep(0.2)186        self.client.cookies[settings.PSESSION_COOKIE_NAME].value = nonce1187        r = self.client.get("/")188        session4 = self.client.cookies[settings.SESSION_COOKIE_NAME].value189        self.assertNotEqual(session1,session4)190    @with_settings(PSESSION_KEY_TIMEOUT=0.2)191    def test_key_timeout(self):192        # No nonces here, just check the session key.193        r = self.client.get("/")194        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value195        timestamp1 = self.client.session["timestamp"]196        # Session key stays the same for a while197        r = self.client.get("/")198        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value199        timestamp2 = self.client.session["timestamp"]200        self.assertEqual(session1,session2)201        self.assertEqual(timestamp1,timestamp2)202        # But is cycled after the timeout has elapsed203        time.sleep(0.2)204        r = self.client.get("/")205        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value206        timestamp3 = self.client.session["timestamp"]207        self.assertNotEqual(session1,session3)208        self.assertEqual(timestamp1,timestamp3)209    @with_settings(PSESSION_CHECK_HEADERS=["REMOTE_ADDR","HTTP_USER_AGENT"])210    def test_check_headers(self):211        #  Test a missing header suddenly appearing212        r = self.client.get("/")213        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value214        r = self.client.get("/",HTTP_USER_AGENT="attacker")215        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value216        self.assertNotEqual(session1,session2)217        #  Test a header changing its value218        r = self.client.get("/",HTTP_USER_AGENT="goodguy")219        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value220        r = self.client.get("/",HTTP_USER_AGENT="badguy")221        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value222        self.assertNotEqual(session1,session2)223        #  Test a header disappearing224        r = self.client.get("/",HTTP_USER_AGENT="goodguy")225        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value226        r = self.client.get("/")227        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value228        self.assertNotEqual(session1,session2)229        #  Test a change and a disappear230        r = self.client.get("/",HTTP_USER_AGENT="goodguy",REMOTE_ADDR="xxx")231        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value232        r = self.client.get("/",REMOTE_ADDR="yyy")233        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value234        self.assertNotEqual(session1,session2)235        #  Test everything staying the same236        r = self.client.get("/",HTTP_USER_AGENT="goodguy",REMOTE_ADDR="xxx")237        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value238        r = self.client.get("/",HTTP_USER_AGENT="goodguy",REMOTE_ADDR="xxx")239        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value240        self.assertEqual(session1,session2)241        r = self.client.get("/",HTTP_USER_AGENT="goodguy",REMOTE_ADDR="xxx")242        session3 = self.client.cookies[settings.SESSION_COOKIE_NAME].value243        self.assertEqual(session1,session3)244    @with_settings(PSESSION_REQUEST_FILTER_FUNCTION=request_filter,PSESSION_CHECK_HEADERS=["HTTP_USER_AGENT"])245    def test_request_filter(self):246        r = self.client.get("/")247        session1 = self.client.cookies[settings.SESSION_COOKIE_NAME].value248        nonce1 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value249        #  Requests to the safe view aren't validated250        r = self.client.get("/safeview",HTTP_USER_AGENT="attacker")251        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value252        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value253        self.assertEqual(session1,session2)254        self.assertEqual(nonce1,nonce2)255        #  But requests to the other view get booted256        r = self.client.get("/",HTTP_USER_AGENT="attacker")257        session2 = self.client.cookies[settings.SESSION_COOKIE_NAME].value258        nonce2 = self.client.cookies[settings.PSESSION_COOKIE_NAME].value259        self.assertNotEqual(session1,session2)...api.py
Source:api.py  
1__author__ = 'powergx'2import json3import requests4from crysadm_helper import r_session5from requests.adapters import HTTPAdapter6import time7from urllib.parse import urlparse, parse_qs8requests.packages.urllib3.disable_warnings()9# è¿
é·APIæ¥å£10appversion = '3.1.1'11server_address = 'http://2-api-red.xunlei.com'12agent_header = {'user-agent': "RedCrystal/3.0.0 (iPhone; iOS 9.9; Scale/2.00)"}13# è´è½½åè¡¡14def api_proxies():15    return {}16# æäº¤è¿
é·é¾æ¥ï¼è¿åä¿¡æ¯17def api_post(cookies, url, data, verify=False, headers=agent_header, timeout=60):18    address = server_address + url19    try:20        proxies = api_proxies()21        r = requests.post(url=address, data=data, proxies=proxies, verify=verify, headers=headers, cookies=cookies, timeout=timeout)        22    except requests.exceptions.RequestException as e:23        return __handle_exception(e=e)24    if r.status_code != 200: 25        return __handle_exception(rd=r.reason)26    return json.loads(r.text)27# ç³è¯·æç°è¯·æ±28def exec_draw_cash(cookies, limits=None):29    r = get_can_drawcash(cookies)30    if r.get('r') != 0:31        return r32    if r.get('is_tm') == 0:33        return dict(r=0, rd=r.get('tm_tip'))34    r = get_balance_info(cookies)35    if r.get('r') != 0:36        return r37    wc_pkg = r.get('wc_pkg')38    if limits is not None and wc_pkg < limits: 39        return dict(r=1, rd='叿·éé¢å°äºä¸éå¼%så
' % limits)40    if wc_pkg > 200:41        wc_pkg = 20042    r = draw_cash(cookies, wc_pkg)43    if r.get('r') != 0:44        return r45    return r46# è·åæç°ä¿¡æ¯47def get_can_drawcash(cookies):48    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'49    body = dict(v='1', appversion=appversion)50    return api_post(url='/?r=usr/drawcashInfo', data=body, cookies=cookies)51# æ£æµæç°ä½é¢52def get_balance_info(cookies):53    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'54    body = dict(v='2', appversion=appversion)55    return api_post(url='/?r=usr/asset', data=body, cookies=cookies)56# æäº¤æç°è¯·æ±57def draw_cash(cookies, money):58    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'59    body = dict(v='3', m=str(money))60    return api_post(url='?r=usr/drawpkg', data=body, cookies=cookies)61# è·åMINEä¿¡æ¯62def get_mine_info(cookies):63    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'64    body = dict(v='4', appversion=appversion)65    return api_post(url='/?r=mine/info', data=body, cookies=cookies)66# è·åæ¶çä¿¡æ¯67def get_produce_stat(cookies):68    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'69    body = dict(appversion=appversion)70    return api_post(url="/?r=mine/produce_stat", data=body, cookies=cookies)71# è·åéåº¦ç¶æ72def get_speed_stat(cookies):73    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'74    try:75        proxies = api_proxies()76        r = requests.post(server_address + '/?r=mine/speed_stat', data=None, proxies=proxies, verify=False, cookies=cookies, headers=agent_header, timeout=60)77    except requests.exceptions.RequestException as e:78        __handle_exception(e=e)79        return [0] * 2480    if r.status_code != 200:81        __handle_exception(rd=r.reason)82        return [0] * 2483    return json.loads(r.text).get('sds')84# è·å个人信æ¯85def get_privilege(cookies):86    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'87    body = dict(v='1', appversion=appversion, ver=appversion)88    return api_post(url='/?r=usr/privilege', data=body, cookies=cookies)89# è·å设å¤ç¶æ90def get_device_stat(s_type, cookies):91    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'92    body = dict(type=s_type, hand='0', v='2', ver='1')93    return api_post(url='/?r=mine/devices_stat', data=body, cookies=cookies)94# æäº¤æ¶éæ°´æ¶è¯·æ±95def collect(cookies):96    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'97    return api_post(url='/index.php?r=mine/collect', data=None, cookies=cookies)98# è·åå®ç®±ä¿¡æ¯99def api_giftbox(cookies):100    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'101    body = dict(tp='0', p='0', ps='60', t='', v='2', cmid='-1')102    return api_post(url='/?r=usr/giftbox', data=body, cookies=cookies)103# æäº¤æå¼å®ç®±è¯·æ±104def api_openStone(cookies, giftbox_id, direction):105    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'106    body = dict(v='1', id=str(giftbox_id), side=direction)107    return api_post(url='/?r=usr/openStone', data=body, cookies=cookies)108# æäº¤æ¾å¼å®ç®±è¯·æ±109def api_giveUpGift(cookies, giftbox_id):110    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'111    body = dict(v='2', id=str(giftbox_id), tag='0')112    return api_post(url='/?r=usr/giveUpGift', data=body, cookies=cookies)113# è·å幸è¿è½¬çä¿¡æ¯114def api_getconfig(cookies):115    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'116    return api_post(url='/?r=turntable/getconfig', data=None, cookies=cookies)117# æäº¤å¹¸è¿è½¬ç请æ±118def api_getaward(cookies):119    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'120    return api_post(url='/?r=turntable/getaward', data=None, cookies=cookies)121# è·åç§é¶è¿æ»ä¿¡æ¯122def api_sys_getEntry(cookies):123    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'124    body = dict(v='6')125    return api_post(url='/?r=sys/getEntry', data=body, cookies=cookies)126# è·åç§é¶å¤ä»ä¿¡æ¯127def api_steal_stolenSilverHistory(cookies):128    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'129    body = dict(v='2', p='0', ps='20')130    return api_post(url='/?r=steal/stolenSilverHistory', data=body, cookies=cookies)131# æäº¤ç§é¶è¿æ»è¯·æ±132def api_steal_search(cookies, searcht_id=0):133    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'134    body = dict(v='2', sid=str(searcht_id))135    return api_post(url='/?r=steal/search', data=body, cookies=cookies)136# æäº¤æ¶éç§é¶è¯·æ±137def api_steal_collect(cookies, searcht_id):138    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'139    body = dict(sid=str(searcht_id), cmid='-2', v='2')140    return api_post(url='/?r=steal/collect', data=body, cookies=cookies)141# æäº¤è¿æ»ç»æè¯·æ±142def api_steal_summary(cookies, searcht_id):143    cookies['origin'] = '4' if len(cookies.get('sessionid')) == 128 else '1'144    body = dict(sid=str(searcht_id), v='2')145    return api_post(url='/?r=steal/summary', data=body, cookies=cookies)146# è·åæååå¨ç¸å
³ä¿¡æ¯147def ubus_cd(session_id, account_id, action, out_params, url_param=None):148    url = "http://kjapi.peiluyou.com:5171/ubus_cd?account_id=%s&session_id=%s&action=%s" % (account_id, session_id, action)149    if url_param is not None:150        url += url_param151    params = ["%s" % session_id] + out_params152    data = {"jsonrpc": "2.0", "id": 1, "method": "call", "params": params}153    try:154        body = dict(data=json.dumps(data), action='onResponse%d' % int(time.time() * 1000))155        s = requests.Session()156        s.mount('http://', HTTPAdapter(max_retries=5))157        proxies = api_proxies()158        r = s.post(url, data=body, proxies=proxies)159        result = r.text[r.text.index('{'):r.text.rindex('}')+1]160        return json.loads(result)161    except requests.exceptions.RequestException as e:162        return __handle_exception(e=e)163# åéè®¾ç½®é¾æ¥164def parse_setting_url(url):165    query_s = parse_qs(urlparse(url).query, keep_blank_values=True)166    device_id = query_s['device_id'][0]167    session_id = query_s['session_id'][0]168    account_id = query_s['user_id'][0]169    return device_id, session_id, account_id170# æ£æµæ¯å¦APIé误171def is_api_error(r):172    if r.get('r') == -12345:173        return True174    return False175# æ¥å£æ
é176def __handle_exception(e=None, rd='æ¥å£æ
é', r=-12345):177    if e is None:178        print(rd)179    else:180        print(e)181    b_err_count = r_session.get('api_error_count')182    if b_err_count is None:183        r_session.setex('api_error_count', '1', 60)184        return dict(r=r, rd=rd)185    err_count = int(b_err_count.decode('utf-8')) + 1186    if err_count > 200:187        r_session.setex('api_error_info', 'è¿
é·ç¿åºAPIæ
éä¸,æ»åç®æ£å¨èµ¶å¾äºæ
ç°åº,请èå¿çå¾
.', 60)188    err_count_ttl = r_session.ttl('api_error_count')189    if err_count_ttl is None:190        err_count_ttl = 30191    r_session.setex('api_error_count', str(err_count), err_count_ttl + 1)192    return dict(r=r, rd=rd)...main.py
Source:main.py  
1#coding:utf-82import BeautifulSoup3import requests4from requests.cookies import RequestsCookieJar5import time6import re7import os8import sys9import json10from generic_variables import *11'''12get a raw_inpupt13return the striped string from the raw_input14'''15def GetRawInput(str = ''):16    message = str(raw_input(str))17    return message.strip()18'''19Read the recorded Cookies values20if get the cookies then return it 21else return None22'''23def ReadCookies():24    jar = RequestsCookieJar()25    try:26        with open('cookies.txt','r') as f:27            cookies = json.load(f)28            # print type(cookies)29            for cookie in cookies:30                # print cookie31                # jar.set(cookie["name"],cookie["value"])32                jar.set(cookie,cookies[cookie])33                # print jar34    except :35        # print 'get cookie error'36        return None37    return jar38'''39Save the Cookies value 40get a cookies and save it to 'cookies.txt' file41if saved successfully return True42else return False43'''44def SaveCookies(cookies):45    print 'save cookies',cookies46    cookies = requests.utils.dict_from_cookiejar(cookies)47    # print cookies48    try:49        with open('cookies.txt','w') as f:50            json.dump(cookies,f)51    except :52        # print 'save cookie error'53        return False54    return True55'''56Update the cookies value through access the LoginUrl and call SaveCookies57'''58def RenewCookies():59    # print 'renew the cookies'60    SaveCookies(requests.get(LoginUrl).cookies)61'''62check whether the cookies is valuable 63get the session(have the cookies)64if the session can get the home page return True65else return False66'''67def CheckCookies(session):68    print 'CheckCookies',session.cookies69    rsq  =session.get(LoginUrl+'/Home/StudentIndex')70    rr = re.compile(r'1\d{7}')71    # print rsq.content72    s = rr.findall(rsq.content)73    # print s74    if s != []:75        return True76    else :77        return False78'''79get the session that has the valuable cookies to login    80'''81def GetSession():82    session = requests.session()83    cookie = ReadCookies()84    if cookie != None :85        # print 'cookie is not none'86        session.cookies = cookie87        if (CheckCookies(session)):88            # print 'check login seccess'89            return session90        else:91            RenewCookies()92            cookie = ReadCookies()93            session.cookies = cookie94            LoginCMS(session)95            if (CheckCookies(session)):96                return session97    RenewCookies()98    GetSession()99'''100to get login the CurriculumManagementSystem101get a session that hasn't been logged in yet102get the Username and Password through input 103return a response from login104'''105def LoginCMS(session):106    UserName = GetRawInput('input the Username:')107    UserPassword = GetRawInput('input the Password:')108    ValidateCode = GetVc(session)109    print 'logincmscookie:',session.cookies110    parms = {'txtUserName':UserName,'txtPassword':UserPassword,'txtvaliCode':ValidateCode}111    return session.post(LoginUrl,parms)112'''113get the ValidateCode114get the validatecode through input and return it115'''116def GetVc(session):117    print 'getvccookie:',session.cookies118    res = session.get(LoginUrl+ValidateCodeUrl)119    with open('validatecode.png','wb') as f:120        f.write(res.content)121    return str(raw_input('input the validatecode:'))122'''123get the student course table message124get the logged session and access the trul url125save the response to a html file126'''127def GetCrouseTable(session):128    QueryCTUrl = LoginUrl+QueryCourseTableUrl129    # QueryCTUrl = 'http://xk.autoisp.shu.edu.cn:8080/StudentQuery/CtrlViewQueryCourseTable'130    rsp = session.get(QueryCTUrl)131    # print rsp.content132    with open('coursetable.html', 'wb')as f:133        f.write(rsp.content)134'''135get the student course rank table message136get the logged session and access the trul url137save the response to a html file138'''139def GetEnrollRankTable(session):140    QueryERUrl = LoginUrl+QueryEnrollRankUrl141    rsp = session.get(QueryERUrl)142    # print rsp.content143    with open('enrollranktable.html', 'wb')as f:144        f.write(rsp.content)145'''146get the student deleted course table message147get the logged session and access the trul url148save the response to a html file149'''150def GetDeleteCourseTable(session):151    QueryERUrl = LoginUrl+QueryDeleteCourseUrl152    rsp = session.get(QueryERUrl)153    # print rsp.content154    with open('deletecoursetable.html', 'wb')as f:155        f.write(rsp.content)156'''157get the student deleted course table message158get the logged session and access the trul url159save the response to a html file160'''161def GetQueryParmsData():162    ParmsName = ['CourseNo', 'CourseName', 'TeachNo', 'TeachName',163                 'CourseTime', 'NotFull', 'Credit', 'Campus', 'Enrolls',164                 'DataCount', 'MinCapacicy', 'MaxCapacity', 'PageIndex',165                 'PageSize', 'FunctionString']166    # ParmsValue = ['12', '', '', '',167    #               '', 'false', '', '0', '',168    #               '0', '', '', '1',169    #               '1000', 'InitPage']170    parms = {}171    for i in ParmsName:172        if i == 'NotFull':173            print i ,":0 is false and 1 is true,default false"174            print "input your choose [0/1]:"175            ForT = GetRawInput()176            parms[i] = 'false'177            if ForT == 1:178                parms[i] = 'true'179        elif i == 'Campus':180            print i,":get 7 choose"181            print "0ï¼å
¨é¨  1ï¼æ¬é¨  2ï¼å»¶é¿  3ï¼åå®  4ï¼å¾
ç¨  5ï¼å¾ç»  6ï¼å®å±±ä¸æ ¡åº"182            print "input you choose [0-6]:"183            ChooseCampus = GetRawInput()184            if ChooseCampus!='':185                parms[i] = ChooseCampus186            else:187                parms[i] = 0188        elif i == 'DataCount':189            print i,":0 is not limit and other num is the response data num"190            LimitDataCount = GetRawInput()191            if LimitDataCount != '':192                parms[i] = LimitDataCount193            else:194                parms[i] = 0195        elif i == 'PageSize':196            print i,"default 20:"197            PageSize = GetRawInput()198            if PageSize != '':199                parms[i] = PageSize200            else:201                parms[i] = 20202        elif i == 'FunctionString':203            parms[i] = 'InitPage'204        elif i == 'PageIndex':205            PageIndex = GetRawInput()206            if PageIndex != '':207                parms[i] = PageIndex208            else:209                parms[i] = 1210        else:211            print i,":"212            parms[i] = GetRawInput()213    return parms214'''215'''216def GetQueryCourseTable(session):217    QueryERUrl = LoginUrl+QueryCourseTUrl218    # QueryERUrl ='http://xk.autoisp.shu.edu.cn:8080/StudentQuery/CtrlViewQueryCourse'219    headers = {220        "Host": "xk.autoisp.shu.edu.cn:8080",221        "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0",222        "Accept": "*/*",223        "Accept-Language": "en-US,en;q=0.5",224        "Accept-Encoding": "gzip, deflate",225        "Content-Type": "application/x-www-form-urlencoded",226        "X-Requested-With": "XMLHttpRequest",227        "Referer": "http://xk.autoisp.shu.edu.cn:8080/StudentQuery/QueryCourse",228        "Content-Length": "181",229    }230    parms = GetQueryParmsData()231    rsp = session.post(QueryERUrl,parms,headers=headers)232    print rsp.content233    with open('querycoursetable.html', 'wb')as f:234        f.write(rsp.content)235'''236'''237def ValiWhereValue(session):238    QueryERUrl = 'http://xk.autoisp.shu.edu.cn:8080/Login/ValiWhereValue'239    headers = {240        "Host": "xk.autoisp.shu.edu.cn:8080",241        "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0",242        "Accept": "*/*",243        "Accept-Language": "en-US,en;q=0.5",244        "Accept-Encoding": "gzip, deflate",245        "Content-Type": "application/x-www-form-urlencoded",246        "X-Requested-With": "XMLHttpRequest",247        "Referer": "http://xk.autoisp.shu.edu.cn:8080/StudentQuery/QueryCourse",248        "Content-Length": "121",249    }250    ParmsName = ['CourseNo','CourseName','TeachNo','TeachName',251                 'CourseTime','NotFull','Credit','Campus','Enrolls',252                 'MinCapacicy','MaxCapacity']253    # ParmsValue = []254    ParmsValue = ['12', '', '', '',255                 '', 'false', '', '0', '','','',]256    parms = {}257    for i in range(len(ParmsName)):258        print "input the ",ParmsName[i],":"259        # parms[ParmsName[i]] = GetRawInput()260        print ParmsValue[i]261        parms[ParmsName[i]] = ParmsValue[i]262    print parms263    rsp = session.post(QueryERUrl,data=parms,headers = headers)264    print rsp.content265    with open('vali.html', 'wb')as f:266        f.write(rsp.content)267'''268'''269if __name__ == '__main__':270    session = GetSession()271    GetCrouseTable(session)272    GetEnrollRankTable(session)273    GetDeleteCourseTable(session)274    # ValiWhereValue(session)...test_auth_tkt.py
Source:test_auth_tkt.py  
...14        '''15        The returned cookies are in the format we expect, with HttpOnly flag.16        '''17        plugin = make_plugin(secret='sosecret')18        cookies = plugin._get_cookies(environ={'SERVER_NAME': '0.0.0.0'},19                                      value='HELLO')20        expected_cookies = [21            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; HttpOnly'),22            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=0.0.0.0; HttpOnly'),23            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=.0.0.0.0; HttpOnly')24        ]25        assert cookies == expected_cookies26    @helpers.change_config('who.httponly', False)27    def test_httponly_expected_cookies_with_config_httponly_false(self):28        '''29        The returned cookies are in the format we expect, without HttpOnly30        flag.31        '''32        plugin = make_plugin(secret='sosecret')33        cookies = plugin._get_cookies(environ={'SERVER_NAME': '0.0.0.0'},34                                      value='HELLO')35        expected_cookies = [36            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/'),37            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=0.0.0.0'),38            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=.0.0.0.0')39        ]40        assert cookies == expected_cookies41    def test_httponly_expected_cookies_without_config_httponly(self):42        '''43        The returned cookies are in the format we expect, with HttpOnly flag.44        '''45        plugin = make_plugin(secret='sosecret')46        cookies = plugin._get_cookies(environ={'SERVER_NAME': '0.0.0.0'},47                                      value='HELLO')48        expected_cookies = [49            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; HttpOnly'),50            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=0.0.0.0; HttpOnly'),51            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=.0.0.0.0; HttpOnly')52        ]53        assert cookies == expected_cookies54    @helpers.change_config('who.secure', True)55    def test_secure_expected_cookies_with_config_secure_true(self):56        '''57        The returned cookies are in the format we expect, with secure flag.58        '''59        plugin = make_plugin(secret='sosecret')60        cookies = plugin._get_cookies(environ={'SERVER_NAME': '0.0.0.0'},61                                      value='HELLO')62        expected_cookies = [63            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; secure; HttpOnly'),64            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=0.0.0.0; secure; HttpOnly'),65            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=.0.0.0.0; secure; HttpOnly')66        ]67        assert cookies == expected_cookies68    @helpers.change_config('who.secure', False)69    def test_secure_expected_cookies_with_config_secure_false(self):70        '''71        The returned cookies are in the format we expect, without secure72        flag.73        '''74        plugin = make_plugin(secret='sosecret')75        cookies = plugin._get_cookies(environ={'SERVER_NAME': '0.0.0.0'},76                                      value='HELLO')77        expected_cookies = [78            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; HttpOnly'),79            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=0.0.0.0; HttpOnly'),80            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=.0.0.0.0; HttpOnly')81        ]82        assert cookies == expected_cookies83    def test_secure_expected_cookies_without_config_secure(self):84        '''85        The returned cookies are in the format we expect, without secure flag.86        '''87        plugin = make_plugin(secret='sosecret')88        cookies = plugin._get_cookies(environ={'SERVER_NAME': '0.0.0.0'},89                                      value='HELLO')90        expected_cookies = [91            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; HttpOnly'),92            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=0.0.0.0; HttpOnly'),93            ('Set-Cookie', 'auth_tkt="HELLO"; Path=/; Domain=.0.0.0.0; HttpOnly')94        ]95        assert cookies == expected_cookies96    def test_timeout_not_set_in_config(self):97        '''98        Creating a CkanAuthTktCookiePlugin instance without setting timeout in99        config sets correct values in CkanAuthTktCookiePlugin instance.100        '''101        plugin = make_plugin(secret='sosecret')102        nose_tools.assert_equal(plugin.timeout, None)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
