from django.test import TestCase

from ..middleware import RealIPMiddleware


class MockRequest:
    def __init__(self, addr, forwarded_for=None):
        self.META = {"REMOTE_ADDR": addr}

        if forwarded_for:
            self.META["HTTP_X_FORWARDED_FOR"] = forwarded_for


class RealIPMiddlewareTests(TestCase):
    def test_middleware_sets_ip_from_remote_add(self):
        """Middleware sets ip from remote_addr header"""
        request = MockRequest("83.42.13.77")
        RealIPMiddleware().process_request(request)

        self.assertEqual(request.user_ip, request.META["REMOTE_ADDR"])

    def test_middleware_sets_ip_from_forwarded_for(self):
        """Middleware sets ip from forwarded_for header"""
        request = MockRequest("127.0.0.1", "83.42.13.77")
        RealIPMiddleware().process_request(request)

        self.assertEqual(request.user_ip, request.META["HTTP_X_FORWARDED_FOR"])
