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)
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)
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)
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)
def test_small_delta(): "should raise as delta isn't big enough" random_date_delta(datetime.timedelta(seconds=1000))
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):