test_clean_environment_doesnt_mutate_orignal()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
1
import app
2
import hug
3
from hug_sentry import SentryExceptionHandler
4
from unittest.mock import Mock
5
import pytest
6
7
8
def test_sentry_handler():
9
    client = Mock()
10
    handler = SentryExceptionHandler(client)
11
    app.__hug__.http.add_exception_handler(Exception, handler)
12
13
    with pytest.raises(ZeroDivisionError):
14
        hug.test.get(app, 'fail', amount=2)
15
16
    assert client.captureException.called
17
18
    data = client.captureException.call_args[1]['data']
19
    assert 'user' in data
20
    assert 'request' in data
21
    assert data['request']['method'] == 'GET'
22
    assert data['request']['query_string'] == 'amount=2'
23
24
25
def test_clean_environment():
26
    handler = SentryExceptionHandler(Mock())
27
    env = {'IRRELEVANT': 'remove me'}
28
29
    cleaned_env = handler.clean_environment(env)
30
    assert 'IRRELEVANT' not in cleaned_env
31
32
33
def test_clean_environment_doesnt_mutate_orignal():
34
    handler = SentryExceptionHandler(Mock())
35
    env = {'IRRELEVANT': 'remove me'}
36
37
    handler.clean_environment(env)
38
    assert 'IRRELEVANT' in env
39
40
41
def test_clean_environment_keeps_server_attributes():
42
    handler = SentryExceptionHandler(Mock())
43
    env = {
44
        'SERVER_A': 'a',
45
        'SERVER_B': 'b'
46
    }
47
48
    cleaned_env = handler.clean_environment(env)
49
    assert cleaned_env == env
50
51
52
def test_clean_environment_keeps_remote_addr():
53
    handler = SentryExceptionHandler(Mock())
54
    env = {'REMOTE_ADDR': '192.168.99.100'}
55
56
    cleaned_env = handler.clean_environment(env)
57
    assert cleaned_env == env
58
59
60
def test_guess_user_ip_from_request():
61
    handler = SentryExceptionHandler(Mock())
62
    request = Mock()
63
64
    request.env = {}
65
    request.headers = {}
66
    assert handler.guess_user_ip_from_request(request) == '127.0.0.1'
67
68
    request.env = {'REMOTE_ADDR': '192.168.99.100'}
69
    assert handler.guess_user_ip_from_request(request) == '192.168.99.100'
70
71
    request.headers = {'X-FORWARDED-FOR': '10.0.8.2'}
72
    assert handler.guess_user_ip_from_request(request) == '10.0.8.2'
73