Disable Amazee AI auto-trial provisioning in drupal_cms_ai tests
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3569627. --> Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !802 !785 >>> <h3 id="summary-problem-motivation">Problem/Motivation</h3> <p>It looks like now that <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/drupal_cms/-/work_items/3567008" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/drupal_cms/-/work_items/3567008</a></span> got resolved the drupal_cms_ai recipe (maybe others as well?) tries to auto privisioning trial access on Amazee AI which could lead to flaky tests and many unwanted trial accounts on Amazee's end.</p> <p><details><br> <summary>Test execution output</summary></details></p> <pre>Process exit code mismatch.<br>Expected: 0<br>Actual: 1<br><br>STDOUT:<br>Provisioning amazee.ai trial account...<br>&nbsp;&nbsp;&nbsp; 0% [&gt;---------------------------] Waiting for API response...<br>&nbsp;&nbsp; 14% [-&gt;--------------------------] Waiting for API response...<br>&nbsp;&nbsp; 18% [---&gt;------------------------] Waiting for API response...<br>&nbsp;&nbsp; 22% [-----&gt;----------------------] Waiting for API response...<br>&nbsp;&nbsp; 26% [-------&gt;--------------------] Waiting for API response...<br>&nbsp;&nbsp; 30% [---------&gt;------------------] Waiting for API response...<br>&nbsp;&nbsp; 34% [-----------&gt;----------------] Waiting for API response...<br>&nbsp;&nbsp; 38% [-------------&gt;--------------] Waiting for API response...<br>&nbsp;&nbsp; 42% [--------------&gt;-------------] Waiting for API response...<br>&nbsp;&nbsp; 46% [----------------&gt;-----------] Waiting for API response...<br>&nbsp;&nbsp; 50% [------------------&gt;---------] Waiting for API response...<br>&nbsp;&nbsp; 54% [--------------------&gt;-------] Waiting for API response...<br>&nbsp;&nbsp; 58% [----------------------&gt;-----] Waiting for API response...<br>&nbsp;&nbsp; 62% [------------------------&gt;---] Waiting for API response...<br>&nbsp;&nbsp; 66% [--------------------------&gt;-] Waiting for API response...<br>&nbsp;&nbsp; 70% [&gt;---------------------------] Waiting for API response...<br>&nbsp;&nbsp; 74% [-&gt;--------------------------] Waiting for API response...<br>&nbsp;&nbsp; 78% [---&gt;------------------------] Waiting for API response...<br>&nbsp;&nbsp; 82% [-----&gt;----------------------] Waiting for API response...<br>&nbsp;&nbsp; 86% [-------&gt;--------------------] Waiting for API response...<br>&nbsp;&nbsp; 90% [---------&gt;------------------] Waiting for API response...<br>&nbsp;&nbsp; 94% [-----------&gt;----------------] Waiting for API response...<br>&nbsp;&nbsp; 98% [-------------&gt;--------------] Waiting for API response...<br>&nbsp; 102% [--------------&gt;-------------] Waiting for API response...<br>&nbsp; 106% [----------------&gt;-----------] Waiting for API response...<br>&nbsp; 110% [------------------&gt;---------] Waiting for API response...<br>&nbsp; 114% [--------------------&gt;-------] Waiting for API response...<br>&nbsp; 118% [----------------------&gt;-----] Waiting for API response...<br>&nbsp; 122% [------------------------&gt;---] Waiting for API response...<br>&nbsp; 126% [--------------------------&gt;-] Waiting for API response...<br>&nbsp; 130% [&gt;---------------------------] Waiting for API response...<br>&nbsp; 134% [-&gt;--------------------------] Waiting for API response...<br>Failed: cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api.amazee.ai/auth/generate-trial-access<br><br><br>STDERR:<br> 0/13 [&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;]<br>Applying recipe<br><br> 2/13 [&#9619;&#9619;&#9619;&#9619;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;]<br>Applied Content editor role recipe.<br><br> 4/13 [&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;]<br>Applied Content editor role recipe.<br><br> 7/13 [&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;]<br>Installed configuration for Content Basics recipe.<br><br> 8/13 [&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;]<br>Applied Content Basics recipe.<br><br>10/13 [&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;&#9617;]<br>Created content for Basic Privacy recipe.<br><br>In EnsureAmazeeAiAccess.php line 58:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl&nbsp; <br>&nbsp; /c/libcurl-errors.html) for https://api.amazee.ai/auth/generate-trial-access&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>In TrialAccountProvisioner.php line 194:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl&nbsp; <br>&nbsp; /c/libcurl-errors.html) for https://api.amazee.ai/auth/generate-trial-access&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>In CurlFactory.php line 277:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; cURL error 28: Operation timed out after 30000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl&nbsp; <br>&nbsp; /c/libcurl-errors.html) for https://api.amazee.ai/auth/generate-trial-access&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>recipe [-i|--input INPUT] [--] &lt;path&gt;<br><br><br>Failed asserting that 1 is identical to 0.<br>/var/www/html/web/core/tests/Drupal/FunctionalTests/Core/Recipe/RecipeTestTrait.php:71<br>/var/www/html/recipes/drupal_cms_ai/tests/src/Functional/ComponentValidationTest.php:96</pre><p> </p> <h4 id="summary-steps-reproduce">Steps to reproduce</h4> <h3 id="summary-proposed-resolution">Proposed resolution</h3> <p>By swapping the trial provisioner service <a href="https://git.drupalcode.org/project/ai_provider_amazeeio_recipe/-/blob/1.2.x/tests/src/Funtional/RecipeApplicationTest.php?ref_type=heads#L35">the same way I did we can in the ai_provider_amazeeio_recipe</a> we could mitigate this problem, however that was<a href="https://git.drupalcode.org/project/ai_provider_amazeeio_recipe/-/blob/1.2.1/composer.json?ref_type=tags#L21"> a duct taped solution</a>, <a href="https://drupal.slack.com/archives/C2THUBAVA/p1767958362377809">since recipes cannot contain code,</a> not even for test fixtures. </p> <p>So we probably need better alternatives, like:<br> 1. The test fixture module from the recipe could be moved to the ai_provider_amazeeio module and unprecedentedly could become part of its public API that recipes can depend on. (Catch 22 that as a recipe author you have to know that you need to enabled this test fixture in your tests.)<br> 2. Since recipes trigger trial key provisioning via the <code>ensureAmazeeAiAccess</code> config action, we may add a check to that config action whether it is triggered in a SUT context and do nothing. Coupling a code with a environment check in this level could be acceptable, better than doing similar in TrialAccessProvisioner service.<br> 3. ... ?</p> <h3 id="summary-ui-changes">User interface changes</h3> <h3 id="summary-data-model-changes">Configuration changes</h3> > Related issue: [Issue #3567008](https://www.drupal.org/node/3567008) > Related issue: [Issue #3569665](https://www.drupal.org/node/3569665)
issue