예제 #1
0
    def test_exists_WhenProvidedANonExistingHosts_ReturnsFalse(self):
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
            [])

        self.assertFalse(self.hostRepository.exists("some_host"))
        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(
            existsQuery, "some_host", "some_host")
예제 #2
0
    def getServiceNamesTestCase(self, filters, expectedQuery):
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
            [{'name': 'service_name1'}, {'name': 'service_name2'}])
        service_names = self.repository.getServiceNames(filters)

        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery)
        self.assertEqual([{'name': 'service_name1'}, {'name': 'service_name2'}], service_names)
예제 #3
0
    def test_getPortsAndServicesByHostIP_InvokedWithFewFilters_ReturnsPortsAndServices(
            self):
        from app.auxiliary import Filters

        expected_query = (
            "SELECT hosts.ip, ports.portId, ports.protocol, ports.state, ports.hostId, ports.serviceId, "
            "services.name, services.product, services.version, services.extrainfo, services.fingerprint "
            "FROM portObj AS ports INNER JOIN hostObj AS hosts ON hosts.id = ports.hostId "
            "LEFT OUTER JOIN serviceObj AS services ON services.id = ports.serviceId "
            "WHERE hosts.ip = ? AND ports.protocol != 'tcp' AND ports.protocol != 'udp'"
        )
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
            [['ip1'], ['ip2']])

        filters: Filters = Filters()
        filters.apply(up=True,
                      down=True,
                      checked=True,
                      portopen=True,
                      portfiltered=True,
                      portclosed=True,
                      tcp=False,
                      udp=False)
        results = self.repository.getPortsAndServicesByHostIP(
            "some_host_ip", filters)

        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(
            expected_query, "some_host_ip")
        self.assertEqual([['ip1'], ['ip2']], results)
예제 #4
0
 def test_getProcesses_WhenProvidedShowProcessesWithNoFlag_ReturnsProcesses(self):
     expectedQuery = "SELECT * FROM process AS process WHERE process.display=? order by id asc"
     self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
         [['some-process'], ['some-process2']])
     processes = self.processRepository.getProcesses(self.mockFilters, "True", sort='asc', ncol='id')
     self.assertEqual(processes, [['some-process'], ['some-process2']])
     self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery, 'True')
예제 #5
0
    def test_getPortStatesByHostId_ReturnsPortsStates(self):
        expected_query = 'SELECT port.state FROM portObj as port WHERE port.hostId = ?'
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
            [['port-state1'], ['port-state2']])
        port_states = self.repository.getPortStatesByHostId("some_host_id")

        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expected_query, "some_host_id")
        self.assertEqual([['port-state1'], ['port-state2']], port_states)
예제 #6
0
    def test_getHostsByToolName_WhenProvidedToolNameAndClosedAsFetchAll_StoresProcessRunningElapsedTime(self):
        expectedQuery = ('SELECT "0", "0", "0", "0", "0", process.hostIp, process.port, process.protocol, "0", "0", '
                         'process.outputfile, "0", "0", "0" FROM process AS process WHERE process.name=?')
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll([["some-host1"], ["some-host2"]])

        hosts = self.processRepository.getHostsByToolName("some-toolname", "FetchAll")
        self.assertEqual([["some-host1"], ["some-host2"]], hosts)
        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery, "some-toolname")
예제 #7
0
    def test_getPIDByProcessId_WhenProcIdDoesNotExist_ReturnsNegativeOne(self):
        expectedQuery = 'SELECT process.pid FROM process AS process WHERE process.id=?'
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(False)

        actual_status = self.processRepository.getPIDByProcessId("some_process_id")

        self.assertEqual(actual_status, -1)
        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery, "some_process_id")
예제 #8
0
    def test_getPIDByProcessId_WhenGivenProcId_FetchesProcessId(self):
        expectedQuery = 'SELECT process.pid FROM process AS process WHERE process.id=?'
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll([['1234']])

        actual_status = self.processRepository.getPIDByProcessId("some_process_id")

        self.assertEqual(actual_status, '1234')
        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery, "some_process_id")
예제 #9
0
    def test_isKilledProcess_WhenProvidedNonKilledProcessId_ReturnsFalse(self):
        expectedQuery = "SELECT process.status FROM process AS process WHERE process.id=?"
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
            [["Running"]])

        self.assertFalse(
            self.processRepository.isKilledProcess("some_process_id"))
        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(
            expectedQuery, "some_process_id")
예제 #10
0
 def test_getProcesses_WhenProvidedShowProcessesWithFlagFalse_ReturnsProcesses(self):
     expectedQuery = ('SELECT process.id, process.hostIp, process.tabTitle, process.outputfile, output.output '
                      'FROM process AS process INNER JOIN process_output AS output ON process.id = output.processId '
                      'WHERE process.display = ? AND process.closed = "False" order by process.id desc')
     self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
         [['some-process'], ['some-process2']])
     processes = self.processRepository.getProcesses(self.mockFilters, showProcesses=False)
     self.assertEqual(processes, [['some-process'], ['some-process2']])
     self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery, 'False')
예제 #11
0
 def test_getProcesses_WhenProvidedShowProcessesWithNoNmapFlag_ReturnsProcesses(self):
     expectedQuery = ('SELECT "0", "0", "0", process.name, "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" '
                      'FROM process AS process WHERE process.closed = "False" AND process.name != "nmap" '
                      'GROUP BY process.name')
     self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
         [['some-process'], ['some-process2']])
     processes = self.processRepository.getProcesses(self.mockFilters, showProcesses='noNmap')
     self.assertEqual(processes, [['some-process'], ['some-process2']])
     self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery)
예제 #12
0
 def test_getHosts_InvokedWithNoFilters_ReturnsHosts(self):
     from app.auxiliary import Filters
     self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll([['host1'], ['host2']])
     expectedQuery = "SELECT * FROM hostObj AS hosts WHERE 1=1"
     filters: Filters = Filters()
     filters.apply(up=True, down=True, checked=True, portopen=True, portfiltered=True, portclosed=True,
                   tcp=True, udp=True)
     result = self.hostRepository.getHosts(filters)
     self.assertEqual([['host1'], ['host2']], result)
     self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(expectedQuery)
예제 #13
0
 def test_getCVEsByHostIP_WhenProvidedAHostIp_ReturnsCVEs(self):
     from db.repositories.CVERepository import CVERepository
     self.mock_db_adapter.metadata.bind.execute.return_value = mockExecuteFetchAll([['cve1'], ['cve2']])
     expected_query = ("SELECT cves.name, cves.severity, cves.product, cves.version, cves.url, cves.source, "
                       "cves.exploitId, cves.exploit, cves.exploitUrl FROM cve AS cves "
                       "INNER JOIN hostObj AS hosts ON hosts.id = cves.hostId "
                       "WHERE hosts.ip = ?")
     cveRepository = CVERepository(self.mock_db_adapter)
     result = cveRepository.getCVEsByHostIP("some_host")
     self.assertEqual([['cve1'], ['cve2']], result)
     self.mock_db_adapter.metadata.bind.execute.assert_called_once_with(expected_query, "some_host")
예제 #14
0
    def test_getScriptOutputById_WhenProvidedAScriptId_ReturnsScriptOutput(
            self):
        expectedQuery = "SELECT script.output FROM l1ScriptObj as script WHERE script.id = ?"
        self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
            [['some-script-output1'], ['some-script-output2']])

        scripts = self.scriptRepository.getScriptOutputById("some-id")
        self.assertEqual([['some-script-output1'], ['some-script-output2']],
                         scripts)
        self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(
            expectedQuery, "some-id")
예제 #15
0
 def test_getScriptsByHostIP_WhenProvidedAHostIP_ReturnsAllScripts(self):
     expectedQuery = (
         "SELECT host.id, host.scriptId, port.portId, port.protocol FROM l1ScriptObj AS host "
         "INNER JOIN hostObj AS hosts ON hosts.id = host.hostId "
         "LEFT OUTER JOIN portObj AS port ON port.id = host.portId WHERE hosts.ip=?"
     )
     self.mockDbAdapter.metadata.bind.execute.return_value = mockExecuteFetchAll(
         [['some-script1'], ['some-script2']])
     scripts = self.scriptRepository.getScriptsByHostIP("some-host-ip")
     self.assertEqual([['some-script1'], ['some-script2']], scripts)
     self.mockDbAdapter.metadata.bind.execute.assert_called_once_with(
         expectedQuery, "some-host-ip")