from logging import LogRecord

from django.test import TestCase

from oscar.core.logging.formatters import PciFormatter


class TestLogging(TestCase):

    data = [
        ('some string', 'some string'),
        ('here is my bankcard 1000010000000007', 'here is my bankcard XXXX-XXXX-XXXX-XXXX'),
        ('here is my bankcard 1000-0100-0000-0007', 'here is my bankcard XXXX-XXXX-XXXX-XXXX'),
        ('here is my bankcard 1000 0100 0000 0007', 'here is my bankcard XXXX-XXXX-XXXX-XXXX'),
        ('here is my bankcard 10 00 01-00 0-000-0007', 'here is my bankcard XXXX-XXXX-XXXX-XXXX'),
    ]

    def test_pci_formatter(self):
        """PCI logging formatter """
        for string, expected in self.data:
            formatter = PciFormatter()
            record = LogRecord(
                name=None, level=None, pathname='', lineno=0,
                msg=string, args=None, exc_info=None)
            self.assertEqual(formatter.format(record), expected)