Esempio n. 1
0
class UseCaseTestCase(BaseTestCase):
    def setUp(self):
        super().setUp()
        self.usecase = UseCases(self.db_session, '')

    def _insert(self, classe_evento):
        evento = self.open_json_test_case(classe_evento)
        return self.usecase.insert_evento(classe_evento, evento)

    def _load(self, classe_evento, IDEvento):
        return self.usecase.load_evento(classe_evento, IDEvento)

    def _insert_and_load(self, classe_evento):
        evento = self.open_json_test_case(classe_evento)
        evento_banco = self._insert(classe_evento)
        evento_banco_load = self._load(classe_evento, evento['IDEvento'])

        self.compara_eventos(evento, evento_banco.dump())
        self.compara_eventos(evento, evento_banco_load.dump())

    def test_InspecaonaoInvasiva(self):
        evento = self.open_json_test_case(orm.InspecaonaoInvasiva)
        evento_banco = self.usecase.insert_inspecaonaoinvasiva(evento)
        evento_banco_load = self.usecase.load_inspecaonaoinvasiva(
            evento['codRecinto'], evento['idEvento'])
        print(sorted(evento.items(), key=lambda x: x[0]))
        print(sorted(evento_banco_load.items(), key=lambda x: x[0]))
        self.compara_eventos(evento, evento_banco_load)
        # assert False

    def test_PesagemVeiculoCarga(self):
        evento = self.open_json_test_case(orm.PesagemVeiculoCarga)
        evento_banco = self.usecase.insert_pesagemveiculocarga(evento)
        evento_banco_load = self.usecase.load_pesagemveiculocarga(
            evento['codRecinto'], evento['idEvento'])
        print(sorted(evento.items(), key=lambda x: x[0]))
        print(sorted(evento_banco_load.items(), key=lambda x: x[0]))
        self.compara_eventos(evento, evento_banco_load)

    def test_acessoveiculo(self):
        evento = self.open_json_test_case(orm.AcessoVeiculo)
        evento_banco = self.usecase.insert_acessoveiculo(evento)
        evento_banco_load = self.usecase.load_acessoveiculo(
            evento['codRecinto'], evento['idEvento'])
        print(sorted(evento.items(), key=lambda x: x[0]))
        print(sorted(evento_banco_load.items(), key=lambda x: x[0]))
        self.compara_eventos(evento, evento_banco_load)
        self.purge_datas(evento)
        self.purge_datas(evento_banco_load)
        self.assertDictContainsSubset(evento, evento_banco_load)
Esempio n. 2
0
class UseCaseTestCase(BaseTestCase):
    def setUp(self):
        super().setUp()
        self.usecase = UseCases(self.db_session, RECINTO, REQUEST_IP, '')

    def _insert(self, classe_evento):
        evento = self.testes[classe_evento.__name__]
        return self.usecase.insert_evento(classe_evento, evento)

    def _load(self, classe_evento, IDEvento):
        return self.usecase.load_evento(classe_evento, IDEvento)

    def _insert_and_load(self, classe_evento):
        evento = self.testes[classe_evento.__name__]
        evento_banco = self._insert(classe_evento)
        evento_banco_load = self._load(classe_evento, evento['IDEvento'])
        self.compara_eventos(evento, evento_banco.dump())
        self.compara_eventos(evento, evento_banco_load.dump())

    def test_AcessoPessoa(self):
        self._insert_and_load(orm.AcessoPessoa)

    def test_PesagemMaritimo(self):
        self._insert_and_load(orm.PesagemMaritimo)

    def test_PosicaoConteiner(self):
        self._insert_and_load(orm.PosicaoConteiner)

    def test_AvariaLote(self):
        self._insert_and_load(orm.AvariaLote)

    def test_PosicaoLote(self):
        self._insert_and_load(orm.PosicaoLote)

    def test_Ocorrencia(self):
        self._insert_and_load(orm.Ocorrencia)

    def test_OperacaoNavio(self):
        self._insert_and_load(orm.OperacaoNavio)

    def test_InspecaonaoInvasiva(self):
        evento = self.testes['InspecaonaoInvasiva']
        evento_banco = self.usecase.insert_inspecaonaoinvasiva(evento)

        self.compara_eventos(evento, evento_banco.dump())
        evento_banco_load = self.usecase.load_inspecaonaoinvasiva(
            evento['IDEvento'])
        self.compara_eventos(evento, evento_banco_load)

    def test_DTSC(self):
        self._insert_and_load(orm.DTSC)

    def test_ChavePublicaRecinto(self):
        """Adiciona dois recintos de numero diferente e checa chaves"""
        chave_recinto1 = orm.ChavePublicaRecinto('00001',
                                                 b'MIIBIjANBgkqhkiG9w0B')
        chave_recinto2 = orm.ChavePublicaRecinto('00002', b'TESTE123')
        self.db_session.add(chave_recinto1)
        self.db_session.add(chave_recinto2)
        self.db_session.commit()
        assert chave_recinto1.public_key == \
               orm.ChavePublicaRecinto.get_public_key(self.db_session,
                                                      chave_recinto1.recinto)
        assert chave_recinto2.public_key == \
               orm.ChavePublicaRecinto.get_public_key(self.db_session,
                                                      chave_recinto2.recinto)
        assert chave_recinto1.public_key != \
               orm.ChavePublicaRecinto.get_public_key(self.db_session,
                                                      chave_recinto2.recinto)

    def test_ChavePublicaRecinto_change(self):
        """Adiciona dois recintos de numero igual.
        Usando classe, dará erro de integridade.
        Usando set_public_key, chave deve ser editada."""
        chave_recinto1 = orm.ChavePublicaRecinto('00001',
                                                 b'MIIBIjANBgkqhkiG9w0B')
        chave_recinto2 = orm.ChavePublicaRecinto('00001', b'TESTE123')
        self.db_session.add(chave_recinto1)
        self.db_session.add(chave_recinto2)
        try:
            self.db_session.commit()
            assert False  # Deveria ter dado exceção
        except IntegrityError:
            self.db_session.rollback()
        chave_recinto1 = orm.ChavePublicaRecinto.set_public_key(
            self.db_session, '00001', b'MIIBIjANBgkqhkiG9w0B')
        assert chave_recinto1.public_key == \
               orm.ChavePublicaRecinto.get_public_key(self.db_session,
                                                      chave_recinto1.recinto)
        chave_recinto2 = orm.ChavePublicaRecinto.set_public_key(
            self.db_session, '00001', b'TESTE123')
        assert chave_recinto2.public_key == \
               orm.ChavePublicaRecinto.get_public_key(self.db_session,
                                                      chave_recinto2.recinto)

    def test_gerachaverecinto_and_sign(self):
        recinto = '00001'
        private_key_pem, assinado = UseCases.gera_chaves_recinto(
            self.db_session, recinto)
        public_key_pem = UseCases.get_public_key(self.db_session, recinto)
        private_key = assinador.load_private_key(private_key_pem)
        public_key = assinador.load_public_key(public_key_pem)
        message = b'TESTE'
        signed = assinador.sign(message, private_key)
        assinador.verify(signed, message, public_key)