def test_add_new_rule_to_existing(self):
        e1 = dict(rule_id="rule1",
                  transition={
                      "storage_class": "glacier",
                      "days": 90
                  },
                  status="enabled",
                  state="present")
        e2 = dict(rule_id="rule2",
                  prefix="/f1",
                  expiration={"days": 31},
                  status="enabled",
                  state="present")
        existing_rules = [create_s3_lc_rule(e1), create_s3_lc_rule(e2)]

        a1 = dict(rule_id="rule3",
                  prefix="/f2",
                  expiration={"days": 7},
                  status="enabled",
                  state="present")
        ansible_rules = [a1, e1, e2]
        ret = calculate_net_rules(existing_rules, ansible_rules)
        self.assertEqual(3,
                         ret.rules.__len__(),
                         msg="Should contain 3 rules, only {} found".format(
                             ret.rules.__len__()))
        self.assertTrue(ret.changed)
        found_rule = None
        for rule in ret.rules:
            if rule.id == a1['rule_id']:
                found_rule = rule
                break
        self.assertIsNotNone(found_rule)
        self.assertTrue(is_same_rule(create_s3_lc_rule(a1), found_rule))
    def test_changed_rule_list(self):
        e1 = dict(rule_id="rule1",
                  transition={
                      "storage_class": "glacier",
                      "days": 90
                  },
                  status="enabled",
                  state="present")
        e2 = dict(rule_id="rule2",
                  prefix="/f1",
                  expiration={"days": 31},
                  status="enabled",
                  state="present")
        existing_rules = [create_s3_lc_rule(e1), create_s3_lc_rule(e2)]

        a1 = dict(rule_id="rule2",
                  prefix="/f1",
                  expiration={"days": 7},
                  status="enabled",
                  state="present")
        ansible_rules = [a1]

        ret = calculate_net_rules(existing_rules, ansible_rules)
        self.assertTrue(ret.changed)
        found_rule = None
        for rule in ret.rules:
            if rule.id == a1['rule_id']:
                found_rule = rule
                break
        self.assertIsNotNone(found_rule)
        self.assertTrue(is_same_rule(create_s3_lc_rule(a1), found_rule))
 def test_new_rule_list(self):
     existing_rules = None
     rule1 = dict(rule_id="rule1",
                  transition={
                      "storage_class": "frozen",
                      "days": 90
                  },
                  status="enabled",
                  state="present")
     lc_rule = create_s3_lc_rule(rule1)
     ansible_rules = [rule1]
     ret = calculate_net_rules(existing_rules, ansible_rules)
     self.assertTrue(ret.changed)
     self.assertTrue(is_same_rule(lc_rule, ret.rules[0]))
 def test_same_rule_id_mismatch(self):
     rule_a = create_s3_lc_rule({
         "rule_id": "myrule",
         "prefix": "/f1",
         "status": "enabled",
         "expiration": {
             "days": 10
         }
     })
     rule_b = create_s3_lc_rule({
         "rule_id": "myruler",
         "prefix": "/f1",
         "status": "enabled",
         "expiration": {
             "days": 10
         }
     })
     self.assertFalse(is_same_rule(rule_a, rule_b))
 def test_same_rule(self):
     rule_a = create_s3_lc_rule({
         "rule_id": "myrule",
         "prefix": None,
         "status": "enabled",
         "expiration": {
             "days": 10
         }
     })
     rule_b = create_s3_lc_rule({
         "rule_id": "myrule",
         "prefix": None,
         "status": "enabled",
         "expiration": {
             "days": 10
         }
     })
     self.assertTrue(is_same_rule(rule_a, rule_b))
 def test_same_rule_type_mismatch(self):
     rule_a = create_s3_lc_rule({
         "rule_id": "myrule",
         "prefix": None,
         "status": "enabled",
         "expiration": {
             "days": 10
         }
     })
     rule_b = create_s3_lc_rule({
         "rule_id": "myrule",
         "prefix": None,
         "status": "enabled",
         "transition": {
             "storage_class": "glacier",
             "days": 10
         }
     })
     self.assertFalse(is_same_rule(rule_a, rule_b))