Beispiel #1
0
def test_datetime_format():
    "confirm format works for random_date_delta"
    formated_date_anon = random_date_delta(datetime.timedelta(days=3650),
                                           format="%Y%m")
    input = "196908"
    result = formated_date_anon(input)
    assert(len(result) == 6)
    assert(int(result) > 197707 and int(result) < 198009)
Beispiel #2
0
def test_cached_date():
    "two calls return same altered date"
    random_f = random_date_delta(datetime.timedelta(days=5000))
    input = datetime.datetime.now()
    first = anon_term(input, random_f)
    second = anon_term(input, random_f)
    assert(first != input)
    assert(isinstance(first, datetime.datetime))
    assert(first == second)
Beispiel #3
0
def test_date_delta_predictability():
    """call many times expecting unique (random) results"""
    now = datetime.datetime.now()
    results = {}

    num = 500
    ten_years = datetime.timedelta(days=3650)
    for i in range(num):
        datetime_shift = random_date_delta(ten_years)
        x = datetime_shift(now)
        results[x] = True
        # Must remove cached delta to generate new.
        delete_term("date_delta-%s" % ten_years)
    assert(len(results) == num)
Beispiel #4
0
def test_date_delta_cache():
    """cached delta should maintain order"""
    datetime_shift = random_date_delta(datetime.timedelta(days=3650))

    now = datetime.datetime.now()
    hour_ago = now - datetime.timedelta(hours=1)
    min_ago = now - datetime.timedelta(minutes=1)

    adjusted_now = datetime_shift(now)
    adjusted_hour_ago = datetime_shift(hour_ago)
    adjusted_min_ago = datetime_shift(min_ago)

    assert(adjusted_min_ago - min_ago == adjusted_hour_ago - hour_ago)
    assert(adjusted_hour_ago + datetime.timedelta(hours=1) ==
           adjusted_now)
Beispiel #5
0
def test_small_delta():
    "should raise as delta isn't big enough"
    random_date_delta(datetime.timedelta(seconds=1000))
Beispiel #6
0
        segment, element, component = self.assert_triplekey(key)
        if dict.__contains__(self, segment):
            d = dict.__getitem__(self, segment)
            return element in d and component in d[element]
        return False


config = Config()
days = config.get("anonymize", "dayshift")

"""Define functions with parameters needed to anonymize fields"""
dotted_sequence = fixed_length_digits(30, (1, 7))
short_string = fixed_length_string(10)
site_string = fixed_length_string(12, prefix="Site ")
yyyymm = random_date_delta(datetime.timedelta(days=days), "%Y%m")
ymdhms = random_date_delta(datetime.timedelta(days=days), "%Y%m%d%H%M%S")
two_digits = fixed_length_digits(2)
five_digits = fixed_length_digits(5)
six_digits = fixed_length_digits(6)
nine_digits = fixed_length_digits(9)
ten_digits = fixed_length_digits(10)

def ten_digits_starting_w_1(initial):
    """specialized anon function for NPI like numbers

    10 digits in length, starting w/ 1 to prevent integer overflow at
    2,147,483,647

    """
    def one_and_nine(initial):