diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results index 3da195e..9c647e6 100644 --- a/.phpunit.cache/test-results +++ b/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":"pest_3.8.4","defects":{"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":7},"times":{"P\\Tests\\Requests\\ManualEntries\\FetchAListOfManualEntriesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\GetNextReferenceNumberRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\CreateAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.022,"P\\Tests\\Requests\\BusinessYears\\FetchAListOfBusinessYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\FetchAListOfFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\FetchANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Reports\\JournalRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFilesOfAccountingEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\IssueAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_store_and_retrieve_an_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_handles_serialization_and_unserialization_correctly":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_uses_configured_cache_store":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_falls_back_to_default_cache_store_when_bexio_cache_store_is_not_configured":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_cached_data_cannot_be_decrypted":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_forget_cached_authenticator":0.004,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_no_authenticator_is_cached":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_refreshes_expired_token_automatically":0.003,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_encrypts_the_authenticator_when_storing":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAListOfContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DefaultPositions\\CreateADefaultPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.01,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactAdditionalAddresses\\DeleteAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\CreateContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\EditAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Accounts\\SearchAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\DeleteATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\EditAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Languages\\FetchAListOfLanguagesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CompanyProfiles\\FetchACompanyProfileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Users\\FetchAuthenticatedUserRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\EditAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchAListOfCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\FetchAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\FetchAListOfContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchAListOfTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CompanyProfiles\\FetchAListOfCompanyProfilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_throws_exception_when_required_config_is_missing":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_a_new_instance_each_time":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_resolves_to_a_ConnectWithOAuth_instance":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_ConnectWithOAuth_with_config_values":0,"P\\Tests\\Requests\\Invoices\\SubPositions\\CreateASubPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Core\\ArchTest::__pest_evaluable_it_will_not_use_any_debug_function":0.221,"P\\Tests\\Requests\\ContactAdditionalAddresses\\CreateContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_with_custom_redirect":0.005,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_authenticator_without_refresh_token":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_always_returns_success_result_for_any_connector":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_without_custom_redirect":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_expired_authenticator":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_success_result_using_static_method":0,"P\\Tests\\Requests\\Titles\\SearchTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\DownloadFIleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BankAccounts\\FetchAListOfBankAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Salutations\\FetchAListOfSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\SearchContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\CreateContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\SearchContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\SearchContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\DeleteATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\CreateContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\DeleteANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\RestoreAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\GetASingleFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\DeleteAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OAuth\\EndSessionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\EditASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\SearchContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessActivities\\FetchAListOfBusinessActivitiesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\DeleteASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BankAccounts\\FetchASingleBankAccountRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\DeleteACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\CreateANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\DeleteAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\IbanPayments\\CreateIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\SearchFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessYears\\FetchABusinessYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\DocumentSettings\\FetchAListOfDocumentSettingsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\SearchContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AccountGroups\\FetchAListOfAccountGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.003,"P\\Tests\\Requests\\Titles\\CreateATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\CreateQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\FetchAListOfPaymentsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\FetchASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":0.006,"P\\Tests\\Requests\\OAuth\\OpenIDConfigurationRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Notes\\SearchNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\DeleteFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OpenID\\FetchUserInfoRequestTest::__pest_evaluable_it_can_perform_the_request":0.006,"P\\Tests\\Requests\\Files\\GetAFilePreviewRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAListOfContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Invoices\\ShowPdfRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\VatPeriods\\FetchAVatPeriodRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Units\\FetchAListOfUnitsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Accounts\\FetchAListOfAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.046,"P\\Tests\\Requests\\Users\\FetchAListOfUsersRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\DeleteAnAdditonalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\FetchAListOfInvoicesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\FetchAListOfContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\FetchAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\EditAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\FetchACalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\SearchAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DeleteAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\CreateASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\CreateManualEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\SearchSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\EditACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.01,"P\\Tests\\Requests\\Notes\\EditANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\FetchAListOfNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\CreateAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\IbanPayments\\GetIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\DeleteAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Projects\\FetchAListOfProjectsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\CreateCurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\EditAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\EditAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\CancelAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\DeleteAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\PaymentTypes\\FetchAListOfPaymentTypesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Titles\\EditATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\VatPeriods\\FetchAListOfVatPeriodsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\DeleteAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\FetchExchangeRatesForCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\SetIssuedInvoiceToDraftRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\CancelAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Currencies\\FetchAllPossibleCurrencyCodesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\FetchAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\FetchAListOfContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\GetQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001}} \ No newline at end of file +{"version":"pest_3.8.4","defects":{"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":8,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":1,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":7,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":7},"times":{"P\\Tests\\Requests\\ManualEntries\\FetchAListOfManualEntriesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\GetNextReferenceNumberRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\AddFileToAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.005,"P\\Tests\\Requests\\Invoices\\CreateAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.005,"P\\Tests\\Requests\\BusinessYears\\FetchAListOfBusinessYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\FetchAListOfFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\FetchANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Reports\\JournalRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFilesOfAccountingEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\IssueAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_store_and_retrieve_an_authenticator":0.022,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_handles_serialization_and_unserialization_correctly":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_uses_configured_cache_store":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_falls_back_to_default_cache_store_when_bexio_cache_store_is_not_configured":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_cached_data_cannot_be_decrypted":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_can_forget_cached_authenticator":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_returns_null_when_no_authenticator_is_cached":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_refreshes_expired_token_automatically":0.02,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationStoreResolverTest::__pest_evaluable_it_encrypts_the_authenticator_when_storing":0.003,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAListOfContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DefaultPositions\\CreateADefaultPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Contacts\\BulkCreateContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\ContactAdditionalAddresses\\DeleteAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\CreateContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\EditAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\CreateCalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Accounts\\SearchAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\DeleteATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\FetchFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\EditAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Languages\\FetchAListOfLanguagesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CompanyProfiles\\FetchACompanyProfileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Users\\FetchAuthenticatedUserRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\CreateAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\EditAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchAListOfCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\FetchAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\FetchAListOfContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchAListOfTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0.003,"P\\Tests\\Requests\\CompanyProfiles\\FetchAListOfCompanyProfilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_throws_exception_when_required_config_is_missing":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_a_new_instance_each_time":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_resolves_to_a_ConnectWithOAuth_instance":0,"P\\Tests\\Support\\DefaultBexioOAuthConfigResolverTest::__pest_evaluable_it_returns_ConnectWithOAuth_with_config_values":0,"P\\Tests\\Requests\\Invoices\\SubPositions\\CreateASubPositionRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Core\\ArchTest::__pest_evaluable_it_will_not_use_any_debug_function":0.206,"P\\Tests\\Requests\\ContactAdditionalAddresses\\CreateContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_with_custom_redirect":0.005,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_authenticator_without_refresh_token":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_always_returns_success_result_for_any_connector":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_failed_result_without_custom_redirect":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_returns_success_result_for_connector_with_expired_authenticator":0,"P\\Tests\\Support\\DefaultBexioOAuthAuthenticationValidateResolverTest::__pest_evaluable_it_can_create_success_result_using_static_method":0,"P\\Tests\\Requests\\Titles\\SearchTitlesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\DownloadFIleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BankAccounts\\FetchAListOfBankAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Salutations\\FetchAListOfSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.003,"P\\Tests\\Requests\\Contacts\\SearchContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\IbanPayments\\EditIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\ContactRelations\\CreateContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\SearchContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\SearchCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\FetchAListOfAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\SearchContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\EditAnAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\DeleteATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\CreateContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\FetchATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\FetchAListOfCalendarYearsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\DeleteANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\RestoreAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchAListOfTaxesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\GetASingleFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\DeleteAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OAuth\\EndSessionRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Salutations\\EditASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\SearchContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessActivities\\FetchAListOfBusinessActivitiesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\DeleteASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BankAccounts\\FetchASingleBankAccountRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\DeleteACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\CreateANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Files\\DeleteAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\IbanPayments\\CreateIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\EditQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Files\\SearchFilesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\BusinessYears\\FetchABusinessYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\DocumentSettings\\FetchAListOfDocumentSettingsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactSectors\\SearchContactSectorsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AccountGroups\\FetchAListOfAccountGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Titles\\CreateATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Taxes\\FetchATaxRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\CreateQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\FetchAListOfPaymentsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\FetchASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\ShowFileUsageRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\OAuth\\OpenIDConfigurationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\SearchNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\DeleteFileOfAccountingEntryLineRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\OpenID\\FetchUserInfoRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\GetAFilePreviewRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Contacts\\FetchAListOfContactsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\ShowPdfRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\VatPeriods\\FetchAVatPeriodRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Units\\FetchAListOfUnitsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Accounts\\FetchAListOfAccountsRequestTest::__pest_evaluable_it_can_perform_the_request":0.002,"P\\Tests\\Requests\\Users\\FetchAListOfUsersRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\DeleteAnAdditonalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\FetchAListOfInvoicesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\FetchAListOfContactRelationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\FetchAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\EditAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\CalendarYears\\FetchACalendarYearRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\AdditionalAddresses\\SearchAdditionalAddressesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\DeleteAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\CreateASalutationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\FetchAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ManualEntries\\CreateManualEntryRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Salutations\\SearchSalutationsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\EditACurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\EditANoteRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Notes\\FetchAListOfNotesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Files\\CreateAFileRequestTest::__pest_evaluable_it_can_perform_the_request":0.004,"P\\Tests\\Requests\\IbanPayments\\GetIbanPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Payments\\DeleteAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Projects\\FetchAListOfProjectsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\CreateCurrencyRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactAdditionalAddresses\\EditAContactAdditionalAddressRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\EditAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.023,"P\\Tests\\Requests\\Invoices\\CancelAnInvoiceRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\DeleteAContactGroupRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\PaymentTypes\\FetchAListOfPaymentTypesRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Titles\\EditATitleRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\VatPeriods\\FetchAListOfVatPeriodsRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Contacts\\DeleteAContactRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchExchangeRatesForCurrenciesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Invoices\\SetIssuedInvoiceToDraftRequestTest::__pest_evaluable_it_can_perform_the_request":0,"P\\Tests\\Requests\\Payments\\CancelAPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\Currencies\\FetchAllPossibleCurrencyCodesRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactRelations\\FetchAContactRelationRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\ContactGroups\\FetchAListOfContactGroupsRequestTest::__pest_evaluable_it_can_perform_the_request":0.001,"P\\Tests\\Requests\\QrPayments\\GetQrPaymentRequestTest::__pest_evaluable_it_can_perform_the_request":0.001}} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 94bca0c..74cee2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,167 +2,24 @@ All notable changes to `laravel-bexio` will be documented in this file. -## [Unreleased] +## 20251110 -### 🚨 Breaking Changes +### Removed ContactAdditionalAddresses -#### OAuth Implementation +- **Removed** `ContactAdditionalAddressDTO` and `CreateEditContactAdditionalAddressDTO` +- **Removed** all `ContactAdditionalAddresses` request classes: + - `CreateContactAdditionalAddressRequest` + - `EditAContactAdditionalAddressRequest` + - `FetchAContactAdditionalAddressRequest` + - `FetchAListOfContactAdditionalAddressesRequest` + - `SearchContactAdditionalAddressesRequest` + - `DeleteAContactAdditionalAddressRequest` -**⚠️ MAJOR BREAKING CHANGES** - The authentication system has been completely redesigned to support OAuth alongside token authentication. - -##### BexioConnector Constructor Changes - -**Before (Token only):** -```php -// Old constructor - DEPRECATED -$connector = new BexioConnector($token); -$connector = new BexioConnector(); // Used config('bexio.auth.token') -``` - -**After (OAuth + Token support):** -```php -// New constructor - REQUIRED -use CodebarAg\Bexio\Dto\OAuthConfiguration\ConnectWithToken; -use CodebarAg\Bexio\Dto\OAuthConfiguration\ConnectWithOAuth; - -// Token authentication -$connector = new BexioConnector(new ConnectWithToken($token)); -$connector = new BexioConnector(new ConnectWithToken()); // Uses config - -// OAuth authentication -$connector = new BexioConnector(new ConnectWithOAuth($clientId, $clientSecret, $redirectUri, $scopes)); -$connector = new BexioConnector(new ConnectWithOAuth()); // Uses config - -// Auto-resolve from container (default behavior) -$connector = new BexioConnector(); // Will resolve OAuth config if available -``` - -##### Configuration Structure Changes - -**Before:** -```php -// config/bexio.php -return [ - 'auth' => [ - 'token' => env('BEXIO_API_TOKEN'), - ], -]; -``` - -**After:** -```php -// config/bexio.php -return [ - 'auth' => [ - 'token' => env('BEXIO_API_TOKEN'), - 'oauth' => [ - 'client_id' => env('BEXIO_OAUTH_CLIENT_ID'), - 'client_secret' => env('BEXIO_OAUTH_CLIENT_SECRET'), - 'redirect_uri' => env('BEXIO_OAUTH_REDIRECT_URI'), - 'scopes' => explode(',', env('BEXIO_OAUTH_SCOPES')), - ], - ], - 'cache_store' => env('BEXIO_CACHE_STORE'), - 'route_prefix' => null, - 'redirect_url' => env('BEXIO_REDIRECT_URL', ''), -]; -``` - -##### New Environment Variables Required - -Add these new environment variables for OAuth support: - -```dotenv -# OAuth Authentication (NEW) -BEXIO_OAUTH_CLIENT_ID=your_client_id_here -BEXIO_OAUTH_CLIENT_SECRET=your_client_secret_here -BEXIO_OAUTH_REDIRECT_URI=https://yourapp.com/bexio/callback -BEXIO_OAUTH_SCOPES=openid,profile,email,accounting,contact_show - -# Optional OAuth Configuration -BEXIO_CACHE_STORE=redis -BEXIO_REDIRECT_URL=/dashboard -``` - -##### Service Provider Changes - -- New OAuth resolver contracts are automatically registered -- OAuth routes are automatically registered at `/bexio/redirect` and `/bexio/callback` -- Route prefix can be customized via `config('bexio.route_prefix')` - -##### Migration Guide - -1. **Update your BexioConnector instantiation:** - ```php - // OLD - This will break - $connector = new BexioConnector($token); - - // NEW - Required change - $connector = new BexioConnector(new ConnectWithToken($token)); - ``` - -2. **Publish and update config file:** - ```bash - php artisan vendor:publish --provider="CodebarAg\Bexio\BexioServiceProvider" --tag="bexio-config" --force - ``` - -3. **For OAuth usage:** - - Register your application in Bexio Developer Portal - - Add OAuth environment variables to `.env` - - Use `ConnectWithOAuth` for OAuth authentication - - Use built-in routes `/bexio/redirect` and `/bexio/callback` - -4. **For multi-tenant applications:** - - Implement custom `BexioOAuthConfigResolver` interface - - Implement custom `BexioOAuthAuthenticationStoreResolver` interface - - Optionally implement custom `BexioOAuthAuthenticationValidateResolver` interface for validation logic - - Bind your implementations in a service provider - -### ✨ New Features - -- **OAuth 2.0 Support**: Full OAuth 2.0 implementation with PKCE support -- **Multi-tenant OAuth**: Support for multiple Bexio accounts via custom resolvers -- **OAuth Authentication Validation**: Custom validation logic before storing OAuth tokens with API access and custom redirects -- **Automatic Token Refresh**: OAuth tokens are automatically refreshed when expired -- **Encrypted Token Storage**: OAuth tokens are encrypted when cached -- **Built-in OAuth Routes**: Automatic OAuth flow handling -- **Configurable Cache Stores**: Support for custom cache stores for token storage -- **Comprehensive Scopes**: Support for all Bexio API and OpenID Connect scopes - -#### OAuth Authentication Validation - -The new `BexioOAuthAuthenticationValidateResolver` allows you to implement custom validation logic that runs after OAuth authentication but before the token is stored. This powerful feature provides: - -- **API Access**: Full `BexioConnector` instance with authenticated access to Bexio API -- **Custom Validation**: Validate user permissions, company restrictions, or any business logic -- **Custom Redirects**: Return custom redirect responses with your own error handling -- **Exception Handling**: Gracefully handle API errors during validation - -**Example Use Cases:** -- Validate user email against an allowlist -- Check company permissions via Bexio API calls -- Verify required OAuth scopes are present -- Implement custom business rules for authorization - -**Default Behavior**: By default, all OAuth authentications are accepted (validation returns success) - -### 🔧 Configuration - -- **New OAuth Configuration**: Complete OAuth configuration structure -- **Route Customization**: Customizable OAuth route prefix -- **Cache Store Configuration**: Configurable cache store for token storage -- **Redirect URL Configuration**: Configurable post-authentication redirect - -### 📚 Documentation - -- **Updated README**: Comprehensive OAuth and multi-tenant documentation -- **OAuth Validation Documentation**: Complete guide for custom OAuth authentication validation with examples -- **Migration Examples**: Detailed migration examples for all scenarios -- **Scope Documentation**: Complete OAuth scope enumeration and documentation +**Migration:** Use `AdditionalAddresses` instead, which provides the same functionality with additional fields (`street_name`, `house_number`, `address_addition`, `name_addition`). All requests now use `contactId` as the parameter name for consistency. ### 🔄 DTO Field Updates -The following DTOs have been updated with new fields: +- **AdditionalAddresses requests:** Standardized parameter naming to use `contactId` instead of `id` for consistency across all requests. The following DTOs have been updated with new fields: #### Contact & Additional Address Fields (2025-06-04) diff --git a/README.md b/README.md index 34b6e78..e32a70e 100644 --- a/README.md +++ b/README.md @@ -710,7 +710,6 @@ We provide DTOs for the following: | BusinessYearDTO | | CalendarYearDTO | | CompanyProfileDTO | -| ContactAdditionalAddressDTO | | ContactGroupDTO | | ContactRelationDTO | | ContactDTO | @@ -751,7 +750,6 @@ In addition to the above, we also provide DTOs to be used for create and edit re |---------------------------------------| | CreateCalendarYearDTO | | CreateEditAdditionalAddressDTO | -| CreateEditContactAdditionalAddressDTO | | CreateEditContactGroupDTO | | CreateEditContactRelationDTO | | CreateEditContactDTO | @@ -858,7 +856,7 @@ $addresses = $connector->send(new SearchAddressesRequest( * Create Address */ $address = $connector->send(new CreateAnAdditionalAddressRequest( - id: 1, + contactId: 1, data: new CreateEditAdditionalAddressDTO( name: 'Test', subject: 'Test Subject', @@ -974,18 +972,18 @@ $companyProfile = $connector->send(new FetchACompanyProfileRequest( ### Additional Addresses ```php /** - * Fetch A List Of Contact Additional Addresses + * Fetch A List Of Additional Addresses */ -$contactAdditionalAddresses = $connector->send(new FetchAListOfContactAdditionalAddressesRequest( +$additionalAddresses = $connector->send(new FetchAListOfAdditionalAddressesRequest( contactId: 1 ))->dto(); ``` ```php /** - * Fetch A Contact Additional Address + * Fetch An Additional Address */ -$contactAdditionalAddress = $connector->send(new FetchAContactAdditionalAddressRequest( +$additionalAddress = $connector->send(new FetchAnAdditionalAddressRequest( contactId: 1, id: 1 ))->dto(); @@ -993,9 +991,9 @@ $contactAdditionalAddress = $connector->send(new FetchAContactAdditionalAddressR ```php /** - * Search Contact Additional Address + * Search Additional Addresses */ -$contactAdditionalAddresses = $connector->send(new SearchContactAdditionalAddressesRequest( +$additionalAddresses = $connector->send(new SearchAdditionalAddressesRequest( contactId: 1, searchField: 'Name', searchTerm: 'Something' @@ -1004,16 +1002,18 @@ $contactAdditionalAddresses = $connector->send(new SearchContactAdditionalAddres ```php /** - * Create Contact Additional Address + * Create Additional Address */ -$contactAdditionalAddress = $connector->send(new CreateContactAdditionalAddressRequest( +$additionalAddress = $connector->send(new CreateAnAdditionalAddressRequest( contactId: 1, - data: new CreateEditContactAdditionalAddressDTO( + data: new CreateEditAdditionalAddressDTO( name: 'Test', subject: 'Test Subject', description: 'This is a test', - address: 'Test Address', - postcode: '1234', + street_name: 'Main Street', + house_number: '123', + address_addition: 'Apt 4B', + postcode: 1234, city: 'Test City', ) )); @@ -1021,17 +1021,19 @@ $contactAdditionalAddress = $connector->send(new CreateContactAdditionalAddressR ```php /** - * Edit Contact Additional Address + * Edit Additional Address */ -$contactAdditionalAddress = $connector->send(new EditAContactAdditionalAddressRequest( +$additionalAddress = $connector->send(new EditAnAdditionalAddressRequest( contactId: 1, id: 9, - data: new CreateEditContactAdditionalAddressDTO( + data: new CreateEditAdditionalAddressDTO( name: 'Test Edit', subject: 'Test Subject Edit', description: 'This is a test edit', - address: 'Test Address Edit', - postcode: '4567', + street_name: 'Main Street', + house_number: '456', + address_addition: 'Suite 2', + postcode: 4567, city: 'Test City Edit', ) )); @@ -1039,9 +1041,9 @@ $contactAdditionalAddress = $connector->send(new EditAContactAdditionalAddressRe ```php /** - * Delete Contact Additional Address + * Delete Additional Address */ -$contactAdditionalAddress = $connector->send(new DeleteAContactAdditionalAddressRequest( +$additionalAddress = $connector->send(new DeleteAnAdditionalAddressRequest( contactId: 1, id: 9, )); diff --git a/src/Dto/ContactAdditionalAddresses/ContactAdditionalAddressDTO.php b/src/Dto/ContactAdditionalAddresses/ContactAdditionalAddressDTO.php deleted file mode 100644 index 73a42a3..0000000 --- a/src/Dto/ContactAdditionalAddresses/ContactAdditionalAddressDTO.php +++ /dev/null @@ -1,51 +0,0 @@ -failed()) { - throw new \Exception('Failed to create DTO from Response'); - } - - $data = $response->json(); - - return self::fromArray($data); - } - - public static function fromArray(array $data): self - { - if (! $data) { - throw new Exception('Unable to create DTO. Data missing from response.'); - } - - return new self( - id: Arr::get($data, 'id'), - name: Arr::get($data, 'name'), - subject: Arr::get($data, 'subject'), - description: Arr::get($data, 'description'), - address: Arr::get($data, 'address'), - postcode: Arr::get($data, 'postcode'), - city: Arr::get($data, 'city'), - country_id: Arr::get($data, 'country_id') - ); - } -} diff --git a/src/Dto/ContactAdditionalAddresses/CreateEditContactAdditionalAddressDTO.php b/src/Dto/ContactAdditionalAddresses/CreateEditContactAdditionalAddressDTO.php deleted file mode 100644 index f8d9c6d..0000000 --- a/src/Dto/ContactAdditionalAddresses/CreateEditContactAdditionalAddressDTO.php +++ /dev/null @@ -1,49 +0,0 @@ -failed()) { - throw new \Exception('Failed to create DTO from Response'); - } - - $data = $response->json(); - - return self::fromArray($data); - } - - public static function fromArray(array $data): self - { - if (! $data) { - throw new Exception('Unable to create DTO. Data missing from response.'); - } - - return new self( - name: Arr::get($data, 'name'), - subject: Arr::get($data, 'subject'), - description: Arr::get($data, 'description'), - address: Arr::get($data, 'address'), - postcode: Arr::get($data, 'postcode'), - city: Arr::get($data, 'city'), - country_id: Arr::get($data, 'country_id') - ); - } -} diff --git a/src/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequest.php b/src/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequest.php index 3fdbd5c..392b791 100644 --- a/src/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequest.php +++ b/src/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequest.php @@ -18,13 +18,13 @@ class CreateAnAdditionalAddressRequest extends Request implements HasBody protected Method $method = Method::POST; public function __construct( - public readonly int $id, + public readonly int $contactId, protected readonly array|CreateEditAdditionalAddressDTO $data, ) {} public function resolveEndpoint(): string { - return '/2.0/contact/'.$this->id.'/additional_address'; + return '/2.0/contact/'.$this->contactId.'/additional_address'; } protected function defaultBody(): array diff --git a/src/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequest.php b/src/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequest.php index 378daf2..3333713 100644 --- a/src/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequest.php +++ b/src/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequest.php @@ -15,7 +15,7 @@ class FetchAListOfAdditionalAddressesRequest extends Request protected Method $method = Method::GET; public function __construct( - public readonly int $id, + public readonly int $contactId, public readonly string|OrderByEnum $orderBy = 'id', public readonly int $limit = 500, public readonly int $offset = 0, @@ -23,7 +23,7 @@ public function __construct( public function resolveEndpoint(): string { - return '/2.0/contact/'.$this->id.'/additional_address'; + return '/2.0/contact/'.$this->contactId.'/additional_address'; } public function defaultQuery(): array diff --git a/src/Requests/AdditionalAddresses/SearchAdditionalAddressesRequest.php b/src/Requests/AdditionalAddresses/SearchAdditionalAddressesRequest.php index bbbca48..980163f 100644 --- a/src/Requests/AdditionalAddresses/SearchAdditionalAddressesRequest.php +++ b/src/Requests/AdditionalAddresses/SearchAdditionalAddressesRequest.php @@ -20,7 +20,7 @@ class SearchAdditionalAddressesRequest extends Request implements HasBody protected Method $method = Method::POST; public function __construct( - public readonly int $id, + public readonly int $contactId, public readonly string $searchField, public readonly string $searchTerm, public readonly string|SearchCriteriaEnum $searchCriteria = '=', @@ -31,7 +31,7 @@ public function __construct( public function resolveEndpoint(): string { - return '/2.0/contact/'.$this->id.'/additional_address/search'; + return '/2.0/contact/'.$this->contactId.'/additional_address/search'; } public function defaultQuery(): array diff --git a/src/Requests/ContactAdditionalAddresses/CreateContactAdditionalAddressRequest.php b/src/Requests/ContactAdditionalAddresses/CreateContactAdditionalAddressRequest.php deleted file mode 100644 index 23240f6..0000000 --- a/src/Requests/ContactAdditionalAddresses/CreateContactAdditionalAddressRequest.php +++ /dev/null @@ -1,49 +0,0 @@ -contactId.'/additional_address'; - } - - protected function defaultBody(): array - { - $body = $this->data; - - if (! $body instanceof CreateEditContactAdditionalAddressDTO) { - $body = CreateEditContactAdditionalAddressDTO::fromArray($body); - } - - return $body->toArray(); - } - - public function createDtoFromResponse(Response $response): ContactAdditionalAddressDTO - { - if (! $response->successful()) { - throw new Exception('Request was not successful. Unable to create DTO.'); - } - - return ContactAdditionalAddressDTO::fromArray($response->json()); - } -} diff --git a/src/Requests/ContactAdditionalAddresses/DeleteAContactAdditionalAddressRequest.php b/src/Requests/ContactAdditionalAddresses/DeleteAContactAdditionalAddressRequest.php deleted file mode 100644 index 45a9378..0000000 --- a/src/Requests/ContactAdditionalAddresses/DeleteAContactAdditionalAddressRequest.php +++ /dev/null @@ -1,32 +0,0 @@ -contactId.'/additional_address/'.$this->id; - } - - public function createDtoFromResponse(Response $response): mixed - { - if (! $response->successful()) { - throw new Exception('Request was not successful. Unable to create DTO.'); - } - - return $response->json(); - } -} diff --git a/src/Requests/ContactAdditionalAddresses/EditAContactAdditionalAddressRequest.php b/src/Requests/ContactAdditionalAddresses/EditAContactAdditionalAddressRequest.php deleted file mode 100644 index c7246cd..0000000 --- a/src/Requests/ContactAdditionalAddresses/EditAContactAdditionalAddressRequest.php +++ /dev/null @@ -1,50 +0,0 @@ -contactId.'/additional_address/'.$this->id; - } - - protected function defaultBody(): array - { - $body = $this->data; - - if (! $body instanceof CreateEditContactAdditionalAddressDTO) { - $body = CreateEditContactAdditionalAddressDTO::fromArray($body); - } - - return $body->toArray(); - } - - public function createDtoFromResponse(Response $response): ContactAdditionalAddressDTO - { - if (! $response->successful()) { - throw new Exception('Request was not successful. Unable to create DTO.'); - } - - return ContactAdditionalAddressDTO::fromArray($response->json()); - } -} diff --git a/src/Requests/ContactAdditionalAddresses/FetchAContactAdditionalAddressRequest.php b/src/Requests/ContactAdditionalAddresses/FetchAContactAdditionalAddressRequest.php deleted file mode 100644 index 0157393..0000000 --- a/src/Requests/ContactAdditionalAddresses/FetchAContactAdditionalAddressRequest.php +++ /dev/null @@ -1,33 +0,0 @@ -contactId.'/additional_address/'.$this->id; - } - - public function createDtoFromResponse(Response $response): ContactAdditionalAddressDTO - { - if (! $response->successful()) { - throw new Exception('Request was not successful. Unable to create DTO.'); - } - - return ContactAdditionalAddressDTO::fromResponse($response); - } -} diff --git a/src/Requests/ContactAdditionalAddresses/FetchAListOfContactAdditionalAddressesRequest.php b/src/Requests/ContactAdditionalAddresses/FetchAListOfContactAdditionalAddressesRequest.php deleted file mode 100644 index e392f2f..0000000 --- a/src/Requests/ContactAdditionalAddresses/FetchAListOfContactAdditionalAddressesRequest.php +++ /dev/null @@ -1,53 +0,0 @@ -contactId.'/additional_address'; - } - - public function defaultQuery(): array - { - return [ - 'orderBy' => $this->orderBy, - 'limit' => $this->limit, - 'offset' => $this->offset, - ]; - } - - public function createDtoFromResponse(Response $response): Collection - { - if (! $response->successful()) { - throw new Exception('Request was not successful. Unable to create DTO.'); - } - - $res = $response->json(); - - $contacts = collect(); - - foreach ($res as $contact) { - $contacts->push(ContactAdditionalAddressDTO::fromArray($contact)); - } - - return $contacts; - } -} diff --git a/src/Requests/ContactAdditionalAddresses/SearchContactAdditionalAddressesRequest.php b/src/Requests/ContactAdditionalAddresses/SearchContactAdditionalAddressesRequest.php deleted file mode 100644 index 7a98f3e..0000000 --- a/src/Requests/ContactAdditionalAddresses/SearchContactAdditionalAddressesRequest.php +++ /dev/null @@ -1,72 +0,0 @@ -contactId.'/additional_address/search'; - } - - public function defaultQuery(): array - { - return [ - 'orderBy' => $this->orderBy, - 'limit' => $this->limit, - 'offset' => $this->offset, - ]; - } - - protected function defaultBody(): array - { - return [ - 'query' => [ - 'field' => $this->searchField, - 'value' => $this->searchTerm, - 'criteria' => $this->searchCriteria instanceof SearchCriteriaEnum ? $this->searchCriteria->value : $this->searchCriteria, - ], - ]; - } - - public function createDtoFromResponse(Response $response): Collection - { - if (! $response->successful()) { - throw new Exception('Request was not successful. Unable to create DTO.'); - } - - $res = $response->json(); - - $contacts = collect(); - - foreach ($res as $contact) { - $contacts->push(ContactAdditionalAddressDTO::fromArray($contact)); - } - - return $contacts; - } -} diff --git a/tests/Fixtures/Saloon/ContactAdditionalAddresses/create-contact-additional-address.json b/tests/Fixtures/Saloon/ContactAdditionalAddresses/create-contact-additional-address.json deleted file mode 100644 index f49ba8f..0000000 --- a/tests/Fixtures/Saloon/ContactAdditionalAddresses/create-contact-additional-address.json +++ /dev/null @@ -1 +0,0 @@ -{"statusCode":201,"headers":{"Date":"Tue, 02 Jan 2024 11:49:30 GMT","Content-Type":"application\/json","Content-Length":"158","Connection":"keep-alive","x-ratelimit-remaining-minute":"954","ratelimit-limit":"1000","ratelimit-remaining":"954","ratelimit-reset":"31","x-ratelimit-limit-minute":"1000","etag":"278dd39bdcac4f690049a16e5a8e4d18","Cache-Control":"no-store","pragma":"no-cache","vary":"Origin","access-control-allow-origin":"https:\/\/office.bexio.com","via":"1.1 google","alt-svc":"h3=\":443\"; ma=86400","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"83f2c76ddd6a730e-LHR"},"data":"{\"id\":3,\"name\":\"Test\",\"address\":\"Test Address\",\"postcode\":\"1234\",\"city\":\"Test City\",\"country_id\":null,\"subject\":\"Test Subject\",\"description\":\"This is a test\"}"} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/ContactAdditionalAddresses/delete-a-contact-additional-address.json b/tests/Fixtures/Saloon/ContactAdditionalAddresses/delete-a-contact-additional-address.json deleted file mode 100644 index 5a52f5f..0000000 --- a/tests/Fixtures/Saloon/ContactAdditionalAddresses/delete-a-contact-additional-address.json +++ /dev/null @@ -1 +0,0 @@ -{"statusCode":404,"headers":{"Date":"Tue, 02 Jan 2024 11:49:31 GMT","Content-Type":"application\/json","Transfer-Encoding":"chunked","Connection":"keep-alive","ratelimit-reset":"29","x-ratelimit-remaining-minute":"948","x-ratelimit-limit-minute":"1000","ratelimit-remaining":"948","ratelimit-limit":"1000","Cache-Control":"no-store","pragma":"no-cache","vary":"Origin","access-control-allow-origin":"https:\/\/office.bexio.com","via":"1.1 google","alt-svc":"h3=\":443\"; ma=86400","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"83f2c777ef10886b-LHR"},"data":"{\"error_code\":404,\"message\":\"Page not found\"}"} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/ContactAdditionalAddresses/edit-contact-additional-address.json b/tests/Fixtures/Saloon/ContactAdditionalAddresses/edit-contact-additional-address.json deleted file mode 100644 index d9c4e92..0000000 --- a/tests/Fixtures/Saloon/ContactAdditionalAddresses/edit-contact-additional-address.json +++ /dev/null @@ -1 +0,0 @@ -{"statusCode":404,"headers":{"Date":"Tue, 02 Jan 2024 11:49:37 GMT","Content-Type":"application\/json","Transfer-Encoding":"chunked","Connection":"keep-alive","ratelimit-reset":"23","x-ratelimit-remaining-minute":"929","x-ratelimit-limit-minute":"1000","ratelimit-remaining":"929","ratelimit-limit":"1000","Cache-Control":"no-store","pragma":"no-cache","vary":"Origin","access-control-allow-origin":"https:\/\/office.bexio.com","via":"1.1 google","alt-svc":"h3=\":443\"; ma=86400","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"83f2c79a09a32408-LHR"},"data":"{\"error_code\":404,\"message\":\"Page not found\"}"} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/ContactAdditionalAddresses/fetch-a-contact-additional-address.json b/tests/Fixtures/Saloon/ContactAdditionalAddresses/fetch-a-contact-additional-address.json deleted file mode 100644 index 1d5dc94..0000000 --- a/tests/Fixtures/Saloon/ContactAdditionalAddresses/fetch-a-contact-additional-address.json +++ /dev/null @@ -1 +0,0 @@ -{"statusCode":404,"headers":{"Date":"Tue, 02 Jan 2024 11:49:30 GMT","Content-Type":"application\/json","Transfer-Encoding":"chunked","Connection":"keep-alive","x-ratelimit-remaining-minute":"952","ratelimit-limit":"1000","ratelimit-remaining":"952","ratelimit-reset":"30","x-ratelimit-limit-minute":"1000","Cache-Control":"no-store","pragma":"no-cache","vary":"Origin","access-control-allow-origin":"https:\/\/office.bexio.com","via":"1.1 google","alt-svc":"h3=\":443\"; ma=86400","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"83f2c7717925650f-LHR"},"data":"{\"error_code\":404,\"message\":\"Page not found\"}"} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/ContactAdditionalAddresses/fetch-a-list-of-contact-additional-addresses.json b/tests/Fixtures/Saloon/ContactAdditionalAddresses/fetch-a-list-of-contact-additional-addresses.json deleted file mode 100644 index edcd725..0000000 --- a/tests/Fixtures/Saloon/ContactAdditionalAddresses/fetch-a-list-of-contact-additional-addresses.json +++ /dev/null @@ -1 +0,0 @@ -{"statusCode":200,"headers":{"Date":"Tue, 02 Jan 2024 11:49:39 GMT","Content-Type":"application\/json","Content-Length":"324","Connection":"keep-alive","x-ratelimit-remaining-minute":"919","x-ratelimit-limit-minute":"1000","ratelimit-remaining":"919","ratelimit-limit":"1000","ratelimit-reset":"21","Cache-Control":"no-store","pragma":"no-cache","vary":"Origin","access-control-allow-origin":"https:\/\/office.bexio.com","via":"1.1 google","alt-svc":"h3=\":443\"; ma=86400","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"83f2c7ac1bd7539f-LHR"},"data":"[{\"id\":3,\"name\":\"Test\",\"address\":\"Test Address\",\"postcode\":\"1234\",\"city\":\"Test City\",\"country_id\":null,\"subject\":\"Test Subject\",\"description\":\"This is a test\"},{\"id\":4,\"name\":\"Test name\",\"address\":\"Test address\",\"postcode\":\"12345\",\"city\":\"Test city\",\"country_id\":1,\"subject\":\"Test subject\",\"description\":\"Test description\"}]"} \ No newline at end of file diff --git a/tests/Fixtures/Saloon/ContactAdditionalAddresses/search-contact-additional-addresses.json b/tests/Fixtures/Saloon/ContactAdditionalAddresses/search-contact-additional-addresses.json deleted file mode 100644 index 1e867dc..0000000 --- a/tests/Fixtures/Saloon/ContactAdditionalAddresses/search-contact-additional-addresses.json +++ /dev/null @@ -1 +0,0 @@ -{"statusCode":200,"headers":{"Date":"Tue, 02 Jan 2024 11:49:15 GMT","Content-Type":"application\/json","Content-Length":"2","Connection":"keep-alive","x-ratelimit-remaining-minute":"996","ratelimit-limit":"1000","ratelimit-remaining":"996","ratelimit-reset":"45","x-ratelimit-limit-minute":"1000","Cache-Control":"no-store","pragma":"no-cache","vary":"Origin","access-control-allow-origin":"https:\/\/office.bexio.com","via":"1.1 google","alt-svc":"h3=\":443\"; ma=86400","CF-Cache-Status":"DYNAMIC","Server":"cloudflare","CF-RAY":"83f2c7117826653d-LHR"},"data":"[]"} \ No newline at end of file diff --git a/tests/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequestTest.php b/tests/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequestTest.php index 0beb4f9..eaee888 100644 --- a/tests/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequestTest.php +++ b/tests/Requests/AdditionalAddresses/CreateAnAdditionalAddressRequestTest.php @@ -15,7 +15,7 @@ $connector = new BexioConnector(new ConnectWithToken); $response = $connector->send(new CreateAnAdditionalAddressRequest( - id: 1, + contactId: 1, data: new CreateEditAdditionalAddressDTO( name: 'Test name', name_addition: null, diff --git a/tests/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequestTest.php b/tests/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequestTest.php index 07977bf..8dcf171 100644 --- a/tests/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequestTest.php +++ b/tests/Requests/AdditionalAddresses/FetchAListOfAdditionalAddressesRequestTest.php @@ -15,7 +15,7 @@ $connector = new BexioConnector(new ConnectWithToken); $response = $connector->send(new FetchAListOfAdditionalAddressesRequest( - id: 1, + contactId: 1, )); Saloon::assertSent(FetchAListOfAdditionalAddressesRequest::class); diff --git a/tests/Requests/AdditionalAddresses/SearchAdditionalAddressesRequestTest.php b/tests/Requests/AdditionalAddresses/SearchAdditionalAddressesRequestTest.php index 08d395b..e804bc5 100644 --- a/tests/Requests/AdditionalAddresses/SearchAdditionalAddressesRequestTest.php +++ b/tests/Requests/AdditionalAddresses/SearchAdditionalAddressesRequestTest.php @@ -15,7 +15,7 @@ $connector = new BexioConnector(new ConnectWithToken); $response = $connector->send(new SearchAdditionalAddressesRequest( - id: 1, + contactId: 1, searchField: 'name', searchTerm: 'Test', )); diff --git a/tests/Requests/ContactAdditionalAddresses/CreateContactAdditionalAddressRequestTest.php b/tests/Requests/ContactAdditionalAddresses/CreateContactAdditionalAddressRequestTest.php deleted file mode 100644 index 1834df7..0000000 --- a/tests/Requests/ContactAdditionalAddresses/CreateContactAdditionalAddressRequestTest.php +++ /dev/null @@ -1,30 +0,0 @@ - MockResponse::fixture('ContactAdditionalAddresses/create-contact-additional-address'), - ]); - - $connector = new BexioConnector(new ConnectWithToken); - - $response = $connector->send(new CreateContactAdditionalAddressRequest( - 1, - new CreateEditContactAdditionalAddressDTO( - name: 'Test', - subject: 'Test Subject', - description: 'This is a test', - address: 'Test Address', - postcode: '1234', - city: 'Test City', - ) - )); - - Saloon::assertSent(CreateContactAdditionalAddressRequest::class); -}); diff --git a/tests/Requests/ContactAdditionalAddresses/DeleteAContactAdditionalAddressRequestTest.php b/tests/Requests/ContactAdditionalAddresses/DeleteAContactAdditionalAddressRequestTest.php deleted file mode 100644 index 65d52a6..0000000 --- a/tests/Requests/ContactAdditionalAddresses/DeleteAContactAdditionalAddressRequestTest.php +++ /dev/null @@ -1,19 +0,0 @@ - MockResponse::fixture('ContactAdditionalAddresses/delete-a-contact-additional-address'), - ]); - - $connector = new BexioConnector(new ConnectWithToken); - - $response = $connector->send(new DeleteAContactAdditionalAddressRequest(contactId: 1, id: 9)); - - Saloon::assertSent(DeleteAContactAdditionalAddressRequest::class); -}); diff --git a/tests/Requests/ContactAdditionalAddresses/EditAContactAdditionalAddressRequestTest.php b/tests/Requests/ContactAdditionalAddresses/EditAContactAdditionalAddressRequestTest.php deleted file mode 100644 index c51a99d..0000000 --- a/tests/Requests/ContactAdditionalAddresses/EditAContactAdditionalAddressRequestTest.php +++ /dev/null @@ -1,31 +0,0 @@ - MockResponse::fixture('ContactAdditionalAddresses/edit-contact-additional-address'), - ]); - - $connector = new BexioConnector(new ConnectWithToken); - - $response = $connector->send(new EditAContactAdditionalAddressRequest( - 1, - 9, - new CreateEditContactAdditionalAddressDTO( - name: 'Test Edit', - subject: 'Test Subject Edit', - description: 'This is a test edit', - address: 'Test Address Edit', - postcode: '4567', - city: 'Test City Edit', - ) - )); - - Saloon::assertSent(EditAContactAdditionalAddressRequest::class); -}); diff --git a/tests/Requests/ContactAdditionalAddresses/FetchAContactAdditionalAddressRequestTest.php b/tests/Requests/ContactAdditionalAddresses/FetchAContactAdditionalAddressRequestTest.php deleted file mode 100644 index 40d231e..0000000 --- a/tests/Requests/ContactAdditionalAddresses/FetchAContactAdditionalAddressRequestTest.php +++ /dev/null @@ -1,19 +0,0 @@ - MockResponse::fixture('ContactAdditionalAddresses/fetch-a-contact-additional-address'), - ]); - - $connector = new BexioConnector(new ConnectWithToken); - - $response = $connector->send(new FetchAContactAdditionalAddressRequest(contactId: 1, id: 10)); - - Saloon::assertSent(FetchAContactAdditionalAddressRequest::class); -}); diff --git a/tests/Requests/ContactAdditionalAddresses/FetchAListOfContactAdditionalAddressRequestTest.php b/tests/Requests/ContactAdditionalAddresses/FetchAListOfContactAdditionalAddressRequestTest.php deleted file mode 100644 index 296bc3a..0000000 --- a/tests/Requests/ContactAdditionalAddresses/FetchAListOfContactAdditionalAddressRequestTest.php +++ /dev/null @@ -1,23 +0,0 @@ - MockResponse::fixture('ContactAdditionalAddresses/fetch-a-list-of-contact-additional-addresses'), - ]); - - $connector = new BexioConnector(new ConnectWithToken); - - $response = $connector->send(new FetchAListOfContactAdditionalAddressesRequest(contactId: 1)); - - Saloon::assertSent(FetchAListOfContactAdditionalAddressesRequest::class); - - expect($response->dto())->toBeInstanceOf(Collection::class) - ->and($response->dto()->count())->toBe(2); -}); diff --git a/tests/Requests/ContactAdditionalAddresses/SearchContactAdditionalAddressRequestTest.php b/tests/Requests/ContactAdditionalAddresses/SearchContactAdditionalAddressRequestTest.php deleted file mode 100644 index c3b0dc0..0000000 --- a/tests/Requests/ContactAdditionalAddresses/SearchContactAdditionalAddressRequestTest.php +++ /dev/null @@ -1,23 +0,0 @@ - MockResponse::fixture('ContactAdditionalAddresses/search-contact-additional-addresses'), - ]); - - $connector = new BexioConnector(new ConnectWithToken); - - $response = $connector->send(new SearchContactAdditionalAddressesRequest(1, 'name', 'Test')); - - Saloon::assertSent(SearchContactAdditionalAddressesRequest::class); - - expect($response->dto())->toBeInstanceOf(Collection::class) - ->and($response->dto()->count())->toBe(0); -});