2017-09-15 7 views
0

각 요청 후에 사용자가 쿠키를 지우더라도 속도 제한 방법이 작동하는지 확인하기 위해 단위 테스트를 작성해야합니다. 기존의 속도 제한 방법은 세션을 사용하여 요청을 계산합니다. 우리의 보안 전문가는 각 요청 후에 쿠키를 삭제함으로써 쉽게이를 우회 할 수 있다고 말합니다. 새로운 세션을 시뮬레이트하거나 단위 테스트에서 쿠키를 삭제하는 방법을 모르겠습니다. 서버는 Flask를 사용하는 Python2.7입니다. 기존 코드 : 당신은 단위 테스트를 작성하는 Flask.test_client를 사용하는 경우파이썬 unittest에서 요청할 때마다 쿠키를 지우는 시뮬레이션하기

def test_retry_protection(self): 
    # 
    prev1 = app.config['RETRY_PROTECTION_COUNT'] 
    app.config['RETRY_PROTECTION_COUNT'] = 3 
    prev2 = app.config['RETRY_PROTECTION_SECONDS'] 
    app.config['RETRY_PROTECTION_SECONDS'] = 5 
    username = 'retry.me' 
    password = 'ke52u&%y!jfueQ' 
    result = self.app.post('/add_password', 
          data=dict(username=username, password1=password, 
            password2=password)) 
    assert '": "ok"' in result.data, result.data 

    for x in range(app.config['RETRY_PROTECTION_COUNT'] - 1): 
     result = self.app.post('/update_password', 
           data=dict(username=username, password1=password, 
             password2=password, password_old=password + 'wrong')) 
     assert 'User and password not correct' in result.data, result.data 

    result = self.app.post('/update_password', 
          data=dict(username=username, password1=password + 'change', 
            password2=password + 'change', password_old=password)) 
    assert 'Excessive usage - wait 10 minutes to try again' in result.data, result.data 
    time.sleep(app.config['RETRY_PROTECTION_SECONDS'] + 1) 
    result = self.app.post('/update_password', 
          data=dict(username=username, password1=password + 'change', 
            password2=password + 'change', password_old=password)) 
    assert '": "ok"' in result.data, result.data 
    app.config['RETRY_PROTECTION_COUNT'] = prev1 
    app.config['RETRY_PROTECTION_SECONDS'] = prev2 
+0

쿠키가 있습니다 지워진 경우 나는 생각하지 않는다 그것을하는 어떤 방법. –

답변

1

당신은 쿠키에 액세스하기 위해 cookie_jar 속성을 사용할 수 있습니다 :

app = flask.Flask(__name__) 
client = app.test_client() 

client.cookie_jar.clear() 
# or 
client.cookie_jar.clear_session_cookies() 

Official documentation on CookieJar objects

+0

정확히 내가 원했던 것. – Martlark

관련 문제