Exemple #1
0
  def testSuccess(self):

    # Create two properly-formed events to be returned.
    file_catalog_1 = bit9_test_utils.CreateFileCatalog(
        id=100, certificate_id=101)
    computer_1 = bit9_test_utils.CreateComputer(id=102)
    cert_1 = bit9_test_utils.CreateCertificate(id=101)
    event_1 = bit9_test_utils.CreateEvent(
        id=103, file_catalog_id=100, computer_id=102)
    event_1 = bit9_test_utils.Expand(
        event_1, api.Event.file_catalog_id, file_catalog_1)
    event_1 = bit9_test_utils.Expand(
        event_1, api.Event.computer_id, computer_1)

    file_catalog_2 = bit9_test_utils.CreateFileCatalog(
        id=200, certificate_id=201)
    computer_2 = bit9_test_utils.CreateComputer(id=202)
    cert_2 = bit9_test_utils.CreateCertificate(id=201)
    event_2 = bit9_test_utils.CreateEvent(
        id=203, file_catalog_id=200, computer_id=202)
    event_2 = bit9_test_utils.Expand(
        event_2, api.Event.file_catalog_id, file_catalog_2)
    event_2 = bit9_test_utils.Expand(
        event_2, api.Event.computer_id, computer_2)

    self._AppendMockApiResults([event_1, event_2], cert_2, cert_1)

    results = sync.GetEvents(0)
    self.assertEqual(2, len(results))
    self.assertListEqual([103, 203], [e.id for e, _ in results])
    self.assertListEqual(
        [[101], [201]], [[c.id for c in sc] for _, sc in results])
Exemple #2
0
  def testOtherException(self, mock_get_signing_chain):

    # Create a properly-formed event that will be returned.
    file_catalog_1 = bit9_test_utils.CreateFileCatalog(
        id=100, certificate_id=101)
    computer_1 = bit9_test_utils.CreateComputer(id=102)
    cert_1 = bit9_test_utils.CreateCertificate(id=101)
    signing_chain_1 = [cert_1]
    event_1 = bit9_test_utils.CreateEvent(
        id=103, file_catalog_id=100, computer_id=102)
    event_1 = bit9_test_utils.Expand(
        event_1, api.Event.file_catalog_id, file_catalog_1)
    event_1 = bit9_test_utils.Expand(
        event_1, api.Event.computer_id, computer_1)

    # Create a second event that will hit an exception.
    file_catalog_2 = bit9_test_utils.CreateFileCatalog(
        id=200, certificate_id=201)
    computer_2 = bit9_test_utils.CreateComputer(id=202)
    event_2 = bit9_test_utils.CreateEvent(
        id=203, file_catalog_id=200, computer_id=202)
    event_2 = bit9_test_utils.Expand(
        event_2, api.Event.file_catalog_id, file_catalog_2)
    event_2 = bit9_test_utils.Expand(
        event_2, api.Event.computer_id, computer_2)

    # Create another properly-formed event won't be returned.
    file_catalog_3 = bit9_test_utils.CreateFileCatalog(
        id=300, certificate_id=301)
    computer_3 = bit9_test_utils.CreateComputer(id=302)
    cert_3 = bit9_test_utils.CreateCertificate(id=301)
    signing_chain_3 = [cert_3]
    event_3 = bit9_test_utils.CreateEvent(
        id=303, file_catalog_id=300, computer_id=302)
    event_3 = bit9_test_utils.Expand(
        event_3, api.Event.file_catalog_id, file_catalog_3)
    event_3 = bit9_test_utils.Expand(
        event_3, api.Event.computer_id, computer_3)

    self._AppendMockApiResults([event_1, event_2, event_3], cert_3, cert_1)
    mock_get_signing_chain.side_effect = [
        signing_chain_3, Exception, signing_chain_1]

    results = sync.GetEvents(0)
    self.assertEqual(2, len(results))
    self.assertTrue(sync.monitoring.events_skipped.Increment.called)

    actual_event_1, actual_signing_chain_1 = results[0]
    self.assertEqual(1, len(actual_signing_chain_1))
    self.assertEqual(103, actual_event_1.id)
    self.assertEqual(101, actual_signing_chain_1[0].id)

    actual_event_3, actual_signing_chain_3 = results[1]
    self.assertEqual(1, len(actual_signing_chain_3))
    self.assertEqual(303, actual_event_3.id)
    self.assertEqual(301, actual_signing_chain_3[0].id)
Exemple #3
0
  def testFileCatalogMissing(self):

    # Simulate an event with a missing fileCatalog.
    computer = bit9_test_utils.CreateComputer(id=100)
    signing_chain = [bit9_test_utils.CreateCertificate(id=101)]
    event = bit9_test_utils.CreateEvent(
        id=102, computer_id=100, file_catalog_id=103)
    event = bit9_test_utils.Expand(event, api.Event.computer_id, computer)

    self._AppendMockApiResults(event, signing_chain)

    results = sync.GetEvents(0)
    self.assertEqual(0, len(results))
    self.assertTrue(sync.monitoring.events_skipped.Increment.called)
Exemple #4
0
  def testDuplicateEventsFromHost(self, mock_events_skipped):

    events, certs = _CreateEventsAndCerts(
        count=100, computer_kwargs={'id': 999},
        file_catalog_kwargs={'sha256': test_utils.RandomSHA256()})

    expected_event_id = events[-1].id
    expected_cert_id = certs[0].id

    self._AppendMockApiResults(events, *certs)

    results = sync.GetEvents(0)
    self.assertEqual(1, len(results))
    self.assertEqual(expected_event_id, results[0][0].id)
    self.assertEqual(expected_cert_id, results[0][1][0].id)

    self.assertEqual(99, mock_events_skipped.Increment.call_count)
Exemple #5
0
  def testFileCatalogMalformed(self):

    # Simulate an event with a malformed fileCatalog (in this case, no SHA256).
    file_catalog = bit9_test_utils.CreateFileCatalog(
        id=100, certificate_id=101, sha256=None)
    computer = bit9_test_utils.CreateComputer(id=102)
    signing_chain = [bit9_test_utils.CreateCertificate(id=101)]
    event = bit9_test_utils.CreateEvent(
        id=103, file_catalog_id=100, computer_id=102)
    event = bit9_test_utils.Expand(
        event, api.Event.file_catalog_id, file_catalog)
    event = bit9_test_utils.Expand(event, api.Event.computer_id, computer)

    self._AppendMockApiResults(event, signing_chain)

    results = sync.GetEvents(0)
    self.assertEqual(0, len(results))
    self.assertTrue(sync.monitoring.events_skipped.Increment.called)