The createClient of OpenAiBasedProviderClientBase should check based on existing authentication
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3579446. --> Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1323 >>> <p>[Tracker]<br> <strong>Update Summary: </strong>[One-line status update for stakeholders]<br> <strong>Short Description: </strong>[One-line issue summary for stakeholders]<br> <strong>Check-in Date: </strong>MM/DD/YYYY<br> <em>Metadata is used by the <a href="https://www.drupalstarforge.ai/" title="AI Tracker">AI Tracker.</a> Docs and additional fields <a href="https://www.drupalstarforge.ai/ai-dashboard/docs" title="AI Issue Tracker Documentation">here</a>.</em><br> [/Tracker]</p> <h3 id="summary-problem-motivation">Problem/Motivation</h3> <p>This is an unintended regression from <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai/issues/3561504" title="Status: Closed (fixed)">#3561504: Incorrect hasAuthentication check causes authentication to run when not required in OpenAiBasedProviderClientBase</a></span> where we actually made it so it is checking correctly now if the hasAuthentication works according to how its documented. However this causes the problem that any client based on OpenAiBasedProviderClientBase.php fails to run if you want to mock the provider without having to stored the key in the config for this - for instance when validating an API Key before saving it - see issue: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai_provider_openai/issues/3579428" title="Status: Closed (fixed)">#3579428: "Selected API Key not working" after update to AI 1.3.0</a></span></p> <p>The createClient method of the OpenAIBasedProviderClientBase.php is the offender for this in 1.3.0 and should be reworked, so that if authentication is set via the setAuthentication method, then it should not reset the authentication.</p> <h4 id="summary-steps-reproduce">Steps to reproduce (required for bugs, but not feature requests)</h4> <p>See issue <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai_provider_openai/issues/3579428" title="Status: Closed (fixed)">#3579428: "Selected API Key not working" after update to AI 1.3.0</a></span> for an example</p> <h3 id="summary-proposed-resolution">Proposed resolution</h3> <p>Change the logic on row 200 of OpenAiBasedProviderClientBase.php to load the authentication only if it doesn't exist.</p> <h3 id="summary-remaining-tasks">Remaining tasks</h3> <h3>Optional: Other details as applicable (e.g., User interface changes, API changes, Data model changes)</h3> <h3 id="summary-ai-usage">AI usage (if applicable)</h3> <p>[ ] AI Assisted Issue<br> This issue was generated with AI assistance, but was reviewed and refined by the creator.</p> <p>[ ] AI Assisted Code<br> This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human supervision.</p> <p>[ ] AI Generated Code<br> This code was mainly generated by an AI with human guidance, and reviewed, tested, and refined by a human.</p> <p>[ ] Vibe Coded<br> This code was generated by an AI and has only been functionally tested.</p> > Related issue: [Issue #3579428](https://www.drupal.org/node/3579428)
issue