def test_delete_when_unknown_error_raises_error(self, mocker, mock_connection): case_file_event_service = CasesFileEventsService(mock_connection) mock_connection.post.side_effect = create_mock_error( Py42BadRequestError, mocker, UNKNOWN_ERROR) with pytest.raises(Py42BadRequestError): case_file_event_service.add(_TEST_CASE_NUMBER, event_id=u"x")
def test_add_when_unknown_error_raises_error(self, mock_connection, mock_unknown_error): case_file_event_service = CasesFileEventsService(mock_connection) mock_connection.post.side_effect = Py42BadRequestError( mock_unknown_error) with pytest.raises(Py42BadRequestError) as e: case_file_event_service.add(_TEST_CASE_NUMBER, event_id=u"x") assert e.value.response.status_code == 400
def test_add_on_a_closed_case_raises_error(self, mocker, mock_connection): mock_connection.post.side_effect = create_mock_error( Py42BadRequestError, mocker, UPDATE_ERROR_RESPONSE) case_file_event_service = CasesFileEventsService(mock_connection) with pytest.raises(Py42UpdateClosedCaseError) as err: case_file_event_service.add(_TEST_CASE_NUMBER, event_id=u"x") assert err.value.args[0] == u"Cannot update a closed case."
def test_add_when_same_event_is_added_multiple_times_raises_error( self, mock_connection, mock_add_same_event_multiple_times): case_file_event_service = CasesFileEventsService(mock_connection) mock_connection.post.side_effect = Py42BadRequestError( mock_add_same_event_multiple_times) with pytest.raises(Py42CaseAlreadyHasEventError) as e: case_file_event_service.add(_TEST_CASE_NUMBER, event_id=u"x") assert e.value.args[0] == u"Event is already associated to the case."
def test_delete_on_a_closed_case_raises_error(self, mock_connection, mock_update_failed_response): case_file_event_service = CasesFileEventsService(mock_connection) mock_connection.delete.side_effect = Py42BadRequestError( mock_update_failed_response) with pytest.raises(Py42UpdateClosedCaseError) as e: case_file_event_service.delete(_TEST_CASE_NUMBER, event_id=u"x") assert e.value.args[0] == u"Cannot update a closed case."
def test_add_when_same_event_is_added_multiple_times_raises_error( self, mocker, mock_connection): case_file_event_service = CasesFileEventsService(mock_connection) mock_connection.post.side_effect = create_mock_error( Py42BadRequestError, mocker, ADDED_SAME_EVENT_AGAIN_ERROR) with pytest.raises(Py42CaseAlreadyHasEventError) as err: case_file_event_service.add(_TEST_CASE_NUMBER, event_id=u"x") assert err.value.args[0] == u"Event is already associated to the case."
def test_get_all_called_with_expected_url_and_params( self, mock_connection): case_file_event_service = CasesFileEventsService(mock_connection) case_file_event_service.get_all(_TEST_CASE_NUMBER) assert mock_connection.get.call_args[0][ 0] == u"/api/v1/case/{}/fileevent".format(_TEST_CASE_NUMBER)
def test_delete_called_with_expected_url_and_params(self, mock_connection): case_file_event_service = CasesFileEventsService(mock_connection) case_file_event_service.delete(_TEST_CASE_NUMBER, "event-id") assert mock_connection.delete.call_args[0][ 0] == u"/api/v1/case/{}/fileevent/event-id".format( _TEST_CASE_NUMBER)
def _init_services(main_connection, main_auth): # services are imported within function to prevent circular imports when a service # imports anything from py42.sdk.queries from py42.services import Services from py42.services._keyvaluestore import KeyValueStoreService from py42.services.administration import AdministrationService from py42.services.alertrules import AlertRulesService from py42.services.alerts import AlertService from py42.services.archive import ArchiveService from py42.services.auditlogs import AuditLogsService from py42.services.cases import CasesService from py42.services.casesfileevents import CasesFileEventsService from py42.services.detectionlists.departing_employee import DepartingEmployeeService from py42.services.detectionlists.high_risk_employee import HighRiskEmployeeService from py42.services.detectionlists.user_profile import DetectionListUserService from py42.services.devices import DeviceService from py42.services.fileevent import FileEventService from py42.services.legalhold import LegalHoldService from py42.services.orgs import OrgService from py42.services.preservationdata import PreservationDataService from py42.services.savedsearch import SavedSearchService from py42.services.trustedactivities import TrustedActivitiesService from py42.services.users import UserService alert_rules_key = "FedObserver-API_URL" alerts_key = "AlertService-API_URL" file_events_key = "FORENSIC_SEARCH-API_URL" preservation_data_key = "PRESERVATION-DATA-SERVICE_API-URL" employee_case_mgmt_key = "employeecasemanagementV2-API_URL" kv_prefix = "simple-key-value-store" audit_logs_key = "AUDIT-LOG_API-URL" cases_key = "CASES_API-URL" trusted_activities_key = "TRUSTED-DOMAINS_API-URL" kv_connection = Connection.from_microservice_prefix( main_connection, kv_prefix) kv_service = KeyValueStoreService(kv_connection) alert_rules_conn = Connection.from_microservice_key(kv_service, alert_rules_key, auth=main_auth) alerts_conn = Connection.from_microservice_key(kv_service, alerts_key, auth=main_auth) file_events_conn = Connection.from_microservice_key(kv_service, file_events_key, auth=main_auth) pds_conn = Connection.from_microservice_key(kv_service, preservation_data_key, auth=main_auth) ecm_conn = Connection.from_microservice_key(kv_service, employee_case_mgmt_key, auth=main_auth) audit_logs_conn = Connection.from_microservice_key(kv_service, audit_logs_key, auth=main_auth) user_svc = UserService(main_connection) administration_svc = AdministrationService(main_connection) file_event_svc = FileEventService(file_events_conn) user_ctx = UserContext(administration_svc) user_profile_svc = DetectionListUserService(ecm_conn, user_ctx, user_svc) cases_conn = Connection.from_microservice_key(kv_service, cases_key, auth=main_auth) trusted_activities_conn = Connection.from_microservice_key( kv_service, trusted_activities_key, auth=main_auth) services = Services( administration=administration_svc, archive=ArchiveService(main_connection), devices=DeviceService(main_connection), legalhold=LegalHoldService(main_connection), orgs=OrgService(main_connection), users=UserService(main_connection), alertrules=AlertRulesService(alert_rules_conn, user_ctx, user_profile_svc), alerts=AlertService(alerts_conn, user_ctx), fileevents=file_event_svc, savedsearch=SavedSearchService(file_events_conn, file_event_svc), preservationdata=PreservationDataService(pds_conn), departingemployee=DepartingEmployeeService(ecm_conn, user_ctx, user_profile_svc), highriskemployee=HighRiskEmployeeService(ecm_conn, user_ctx, user_profile_svc), userprofile=user_profile_svc, auditlogs=AuditLogsService(audit_logs_conn), cases=CasesService(cases_conn), casesfileevents=CasesFileEventsService(cases_conn), trustedactivities=TrustedActivitiesService(trusted_activities_conn), ) return services, user_ctx
def test_get_called_with_expected_url_and_params(self, mock_connection): case_file_event_service = CasesFileEventsService(mock_connection) case_file_event_service.get(_TEST_CASE_NUMBER, "event-id") assert (mock_connection.get.call_args[0][0] == f"/api/v1/case/{_TEST_CASE_NUMBER}/fileevent/event-id")
def _init_services(main_connection, main_auth): alert_rules_key = u"FedObserver-API_URL" alerts_key = u"AlertService-API_URL" file_events_key = u"FORENSIC_SEARCH-API_URL" preservation_data_key = u"PRESERVATION-DATA-SERVICE_API-URL" employee_case_mgmt_key = u"employeecasemanagementV2-API_URL" kv_prefix = u"simple-key-value-store" audit_logs_key = u"AUDIT-LOG_API-URL" cases_key = u"CASES_API-URL" kv_connection = Connection.from_microservice_prefix( main_connection, kv_prefix) kv_service = KeyValueStoreService(kv_connection) alert_rules_conn = Connection.from_microservice_key(kv_service, alert_rules_key, auth=main_auth) alerts_conn = Connection.from_microservice_key(kv_service, alerts_key, auth=main_auth) file_events_conn = Connection.from_microservice_key(kv_service, file_events_key, auth=main_auth) pds_conn = Connection.from_microservice_key(kv_service, preservation_data_key, auth=main_auth) ecm_conn = Connection.from_microservice_key(kv_service, employee_case_mgmt_key, auth=main_auth) audit_logs_conn = Connection.from_microservice_key(kv_service, audit_logs_key, auth=main_auth) user_svc = UserService(main_connection) administration_svc = AdministrationService(main_connection) file_event_svc = FileEventService(file_events_conn) user_ctx = UserContext(administration_svc) user_profile_svc = DetectionListUserService(ecm_conn, user_ctx, user_svc) cases_conn = Connection.from_microservice_key(kv_service, cases_key, auth=main_auth) services = Services( administration=administration_svc, archive=ArchiveService(main_connection), devices=DeviceService(main_connection), legalhold=LegalHoldService(main_connection), orgs=OrgService(main_connection), securitydata=SecurityDataService(main_connection), users=UserService(main_connection), alertrules=AlertRulesService(alert_rules_conn, user_ctx, user_profile_svc), alerts=AlertService(alerts_conn, user_ctx), fileevents=file_event_svc, savedsearch=SavedSearchService(file_events_conn, file_event_svc), preservationdata=PreservationDataService(pds_conn), departingemployee=DepartingEmployeeService(ecm_conn, user_ctx, user_profile_svc), highriskemployee=HighRiskEmployeeService(ecm_conn, user_ctx, user_profile_svc), userprofile=user_profile_svc, auditlogs=AuditLogsService(audit_logs_conn), cases=CasesService(cases_conn), casesfileevents=CasesFileEventsService(cases_conn), ) return services, user_ctx