def setUpClass(cls) -> None:
        # first af all, i introduce all value tha I need for the estructural testing
        # remove the old storeKeys
        requests_store = RequestJsonStore()
        keys_store = KeysJsonStore()

        requests_store.empty_store()
        keys_store.empty_store()

        # introduce a key valid and not expired and guest
        my_manager = AccessManager()
        my_manager.request_access_code("05270358T", "Pedro Martin", "Resident",
                                       "*****@*****.**", 0)

        my_manager.request_access_code("53935158C", "Marta Lopez", "Guest",
                                       "*****@*****.**", 5)

        my_manager.get_access_key(JSON_FILES_PATH + "key_ok.json")

        # introduce a key valid and expiration date = 0 , resident
        my_manager.get_access_key(JSON_FILES_PATH + "key_ok3_resident.json")

        # introduce a key expirated, I need to change expiration date before to store the key
        my_manager.request_access_code("68026939T", "Juan Perez", "Guest",
                                       "*****@*****.**", 2)
        # expected result 383a8eb306459919ef0dc819405f16a6
        # We generate the AccessKey for this AccessRequest
        my_key_expirated = AccessKey.create_key_from_file(
            JSON_FILES_PATH + "key_ok_testing_expired.json")
        # We manipulate the expiration date to obtain an expired AccessKey
        my_key_expirated.expiration_date = 0
        my_key_expirated.store_keys()
Example #2
0
 def test_get_access_key_bad_access_code(self):
     my_file = str(Path.home(
     )) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_bad_access_code.json"
     my_key = AccessManager()
     with self.assertRaises(AccessManagementException) as cm:
         key = my_key.get_access_key(my_file)
     self.assertEqual("access code invalid", cm.exception.message)
Example #3
0
 def test_get_access_key_bad_label1t(self):
     my_file = str(Path.home(
     )) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_bad_label1.json"
     my_key = AccessManager()
     with self.assertRaises(AccessManagementException) as cm:
         key = my_key.get_access_key(my_file)
     self.assertEqual("JSON Decode Error - Wrong label",
                      cm.exception.message)
Example #4
0
 def test_get_access_key_good(self):
     my_file = str(Path.home()
                   ) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_ok.json"
     my_key = AccessManager()
     key = my_key.get_access_key(my_file)
     self.assertEqual(
         "657244bdf89f067462e6a7f12b44749340f61030619f93bee391fbaf93361627",
         key)
Example #5
0
 def test_get_access_key_good3(self):
     my_file = str(Path.home(
     )) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_ok3_resident.json"
     my_key = AccessManager()
     key = my_key.get_access_key(my_file)
     self.assertEqual(
         "de000a04f3a9b1d15b07e38b166f00f3fb1bf46533f32ac37156faf43e47f722",
         key)
Example #6
0
 def test_get_access_key_good2(self):
     my_file = str(Path.home(
     )) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_ok2.json"
     my_key = AccessManager()
     key = my_key.get_access_key(my_file)
     self.assertEqual(
         "49688b213220ee38ee7f2f0c9dcf394b47bb17f376ae9f53564f135c4a247691",
         key)
Example #7
0
 def test_get_access_key_wrong(self):
     my_file = str(Path.home(
     )) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_nok.json"
     my_key = AccessManager()
     with self.assertRaises(AccessManagementException) as cm:
         key = my_key.get_access_key(my_file)
     self.assertEqual("access code is not correct for this DNI",
                      cm.exception.message)
    def test_parametrized_cases_tests(self):
        """Parametrized cases read from testingCases_RF1.csv"""
        my_cases = JSON_FILES_PATH + "testingCases_RF2.csv"
        with open(my_cases, newline='', encoding='utf-8') as csvfile:
            param_test_cases = csv.DictReader(csvfile, delimiter=';')
            my_code = AccessManager()
            for row in param_test_cases:
                test_id = row['ID TEST']
                result = row["EXPECTED RESULT"]
                valid = row["VALID INVALID"]
                file_name = JSON_FILES_PATH + row["FILE"]
                if valid == "VALID":
                    print("Param:" + test_id + valid)
                    valor = my_code.get_access_key(file_name)
                    self.assertEqual(result, valor)

                else:
                    print("Param:" + test_id + "-" + valid)
                    with self.assertRaises(AccessManagementException) as c_m:
                        my_code.get_access_key(file_name)
                    self.assertEqual(c_m.exception.message, result)
    def setUpClass(cls) -> None:
        # first af all, i introduce all value tha I need for the estructural testing
        # remove the old storeKeys
        dir_home = str(Path.home())
        dir_proyecto = "/PyCharmProjects/GE3_2021/src/JsonFiles/"
        fichero = "storeKeys.json"
        my_file = dir_home + dir_proyecto + fichero
        if os.path.exists(my_file):
            os.remove(my_file)
        # introduce a key valid and not expired and guest
        my_manager = AccessManager()
        my_manager.get_access_key(dir_home + dir_proyecto + "key_ok.json")

        # introduce a key valid and expiration date = 0 , resident
        my_manager.get_access_key(dir_home + dir_proyecto + "key_ok3_resident.json")

        # introduce a key expirated, I need to change expiration date before to store the key
        my_key_expirated = AccessKey("12345678Z", "51f829d314812a33744114c5d4bcb9d7",
                                     ["*****@*****.**", "*****@*****.**"], 20)
        # change the expiration date and store this key
        my_key_expirated.expiration_date = 1
        my_key_expirated.store_keys()
Example #10
0
 def test_parametrized_cases_tests(self):
     """Parametrized cases read from testingCases_RF1.csv"""
     my_cases = JSON_FILES_PATH + "testingCases_RF2.csv"
     with open(my_cases, newline='', encoding='utf-8') as csvfile:
         #pylint: disable=no-member
         param_test_cases = csv.DictReader(csvfile, delimiter=',')
         my_code = AccessManager()
         keys_store = KeysJsonStore()
         for row in param_test_cases:
             file_name = JSON_FILES_PATH + row["FILE"]
             print("Param:" + row['ID TEST'] + row["VALID INVALID"])
             if row["VALID INVALID"] == "VALID":
                 valor = my_code.get_access_key(file_name)
                 self.assertEqual(row["EXPECTED RESULT"], valor)
                 print("el valor: " + valor)
                 generated_key = keys_store.find_item(valor)
                 print(generated_key)
                 self.assertIsNotNone(generated_key)
             else:
                 with self.assertRaises(AccessManagementException) as c_m:
                     my_code.get_access_key(file_name)
                 self.assertEqual(c_m.exception.message,
                                  row["EXPECTED RESULT"])
Example #11
0
    def test_parametizer_Json_decode_error(self):
        file1 = str(
            Path.home()
        ) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_without_final_bracket.json"
        file2 = str(
            Path.home()
        ) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_eliminated_comma.json"
        file3 = str(
            Path.home()
        ) + "/PyCharmProjects/GE3_2021/src/JsonFiles/key_bad_bracket_mail.json"

        param_list = [file1, file2, file3]
        for p1 in param_list:
            my_key = AccessManager()
            with self.assertRaises(AccessManagementException) as cm:
                key = my_key.get_access_key(p1)
            self.assertEqual("JSON Decode Error - Wrong JSON Format",
                             cm.exception.message)
class TestAccessManager(unittest.TestCase):
    """test class for open_door"""
    def setUp(self) -> None:
        """Set up"""
        # pylint: disable=no-member
        requests_store = RequestJsonStore()
        keys_store = KeysJsonStore()
        revoked_store = RevokedKeysJsonStore()

        requests_store.empty_store()
        keys_store.empty_store()
        revoked_store.empty_store()

        self.my_manager = AccessManager()

        # introduce a key valid and not expired and guest
        self.my_manager = AccessManager()
        self.my_manager.request_access_code("05270358T", "Pedro Martin",
                                            "Resident", "*****@*****.**", 0)

        # introduce key valid , guest -> expiration_date = 0
        self.my_manager.request_access_code("53935158C", "Marta Lopez",
                                            "Guest", "*****@*****.**", 5)

        # introduce a key valid and expiration date = 0 , resident
        self.my_manager.get_access_key(JSON_FILES_PATH + "key_ok.json")

        self.my_manager.get_access_key(JSON_FILES_PATH +
                                       "key_ok3_resident.json")

        # introduce a key expirated, I need to change expiration date before to store the key
        self.my_manager.request_access_code("68026939T", "Juan Perez", "Guest",
                                            "*****@*****.**", 2)
        # expected result 383a8eb306459919ef0dc819405f16a6
        # We generate the AccessKey for this AccessRequest
        my_key_expirated = AccessKey.create_key_from_file(
            JSON_FILES_PATH + "key_ok_testing_expired.json")
        # We manipulate the expiration date to obtain an expired AccessKey
        my_key_expirated.issued_at = 12
        my_key_expirated.expiration_date = 0
        my_key_expirated.store_keys()

    def tearDown(self) -> None:
        revoked_store = RevokedKeysJsonStore()
        revoked_store.empty_store()

    def test_parametrized_cases_parser(self):
        """Parametrized cases read from testingCases_revokedParser.csv"""
        my_cases = JSON_FILES_PATH + "testingCases_revokedParser.csv"
        with open(my_cases, newline='', encoding='utf-8') as csvfile:
            param_test_cases = csv.DictReader(csvfile, delimiter=',')
            for row in param_test_cases:
                print("Param:" + row['ID_TEST'] + " : " + row["DESCRIPTION"] +
                      " " + row["OBSERVATIONS"])

                self.setUp()
                if row["ID_TEST"][0] == "V":
                    # test valido
                    result = self.my_manager.revoke_key(JSON_FILES_PATH +
                                                        row["FILE PATH"])

                    # convertimos el str a lista
                    expected_result = json.loads(row["EXPECTED_RESULT"])
                    self.assertEqual(result, expected_result)
                else:
                    # test invalido
                    with self.assertRaises(AccessManagementException) as c_m:
                        self.my_manager.revoke_key(JSON_FILES_PATH +
                                                   row["FILE PATH"])
                    self.assertEqual(row["EXPECTED_RESULT"],
                                     c_m.exception.message)

                self.tearDown()

    def test_rt_01(self):
        """Funciona correctamente"""
        result = (self.my_manager.revoke_key(JSON_FILES_PATH +
                                             "test_RT_01.json"))
        self.assertEqual(result, ['*****@*****.**', '*****@*****.**'])

    def test_rt_02(self):
        """La clave fue revocada previamente por este método"""
        self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_02.json")
        with self.assertRaises(AccessManagementException) as c_m:
            self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_02.json")
        self.assertEqual("La clave fue revocada previamente por este método",
                         c_m.exception.message)

    def test_rt_03(self):
        """La clave no existe en el fichero storeKeys.json"""
        with self.assertRaises(AccessManagementException) as c_m:
            self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_03.json")
        self.assertEqual("La clave recibida no existe", c_m.exception.message)

    def test_rt_04(self):
        """expedition_date es mayor que el time y es distinta de 0"""
        with self.assertRaises(AccessManagementException) as c_m:
            self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_04.json")
        self.assertEqual("La clave recibida ha caducado",
                         c_m.exception.message)

    def test_rt_05(self):
        """key no es str"""
        with self.assertRaises(AccessManagementException) as c_m:
            self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_05.json")
        self.assertEqual("key invalid", c_m.exception.message)

    def test_rt_07(self):
        """revocation no es str"""
        with self.assertRaises(AccessManagementException) as c_m:
            self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_07.json")
        self.assertEqual("revocation invalid", c_m.exception.message)

    def test_rt_09(self):
        """reason no es str"""
        with self.assertRaises(AccessManagementException) as c_m:
            self.my_manager.revoke_key(JSON_FILES_PATH + "test_RT_09.json")
        self.assertEqual("reason invalid", c_m.exception.message)