Skip to content

fix: populate apis licenseConfigs in template install request#574

Merged
timkim merged 1 commit intostagefrom
fix/populate-apis-license-configs-in-install-request
Mar 26, 2026
Merged

fix: populate apis licenseConfigs in template install request#574
timkim merged 1 commit intostagefrom
fix/populate-apis-license-configs-in-install-request

Conversation

@deepessh
Copy link
Copy Markdown
Collaborator

Summary

  • Fixes a bug where POST /install/{templateId} was called with an empty apis array ([]), causing the Console API to fail with "Service CJA SDK requires selection of a product"
  • Root cause: templateData was initialized with only id, so templateData.apis was always undefined. fetchTemplateEntitlement() fetches the full template (including apis with licenseConfigs) but never stored it on templateData
  • fetchTemplateEntitlement() was also only called when requestAccessContainer existed, so templates without Request Access config never had APIs populated

Changes

  • fetchTemplateEntitlement(): store data.apis on templateData after parsing the template response
  • handleIMSCallback(), checkAlreadySignedIn(), renderPageAfterOrgChange: always call fetchTemplateEntitlement() regardless of requestAccessContainer, ensuring templateData.apis is populated before credential creation
  • createCredential(): explicitly map first licenseConfig with id, productId, and op: 'add'

Test plan

  • Sign in and create a credential for a template with CJA SDK (or similar service requiring product selection)
  • Verify the install request body includes populated apis array with licenseConfigs
  • Verify credential creation succeeds without "Service CJA SDK requires selection of a product" error
  • Verify org change re-fetches template data and updates templateData.apis
  • Verify templates without Request Access config also populate templateData.apis

Made with Cursor

@aem-code-sync
Copy link
Copy Markdown

aem-code-sync bot commented Mar 26, 2026

Hello, I'm the AEM Code Sync Bot and I will run some actions to deploy your branch and validate page speed.
In case there are problems, just click a checkbox below to rerun the respective action.

  • Re-run PSI checks
  • Re-sync branch
Commits

@github-actions
Copy link
Copy Markdown

❌ Test Results

Status: Some tests failed!

🔍 Click to view failed tests
📁 test/blocks/columns/columns.test.js:

❌ Columns block > Columns > columns-container
      AssertionError: expected false to be true
      + expected - actual
      
      -false
      +true
      
      at n.<anonymous> (test/blocks/columns/columns.test.js:29:117)

❌ Columns block > Columns > buttons
      AssertionError: expected false to be true
      + expected - actual
      
      -false
      +true
      
      at test/blocks/columns/columns.test.js:100:86
      at NodeList.forEach (<anonymous>)
      at n.<anonymous> (test/blocks/columns/columns.test.js:95:50)


📁 test/blocks/embed/embed.test.js:

❌ Could not import your test module. Check the browser logs or open the browser in debug mode for more information.


📁 test/blocks/contributors/contributors.test.js:

❌ Contributors block > contributors > firstDiv
      AssertionError: expected null to exist
        at n.<anonymous> (test/blocks/contributors/contributors.test.js:32:28)

❌ Contributors block > contributors > remove divs without children
      AssertionError: expected false to be true
      + expected - actual
      
      -false
      +true
      
      at test/blocks/contributors/contributors.test.js:42:44
      at NodeList.forEach (<anonymous>)
      at n.<anonymous> (test/blocks/contributors/contributors.test.js:41:51)

❌ Contributors block > contributors > last update div
      AssertionError: expected '' to equal 'https://github.com/AdobeDocs/express-add-ons-docs/commits/main/src/pages/references/index.md'
      + expected - actual
      
      +https://github.com/AdobeDocs/express-add-ons-docs/commits/main/src/pages/references/index.md
      
      at n.<anonymous> (test/blocks/contributors/contributors.test.js:53:40)

❌ Contributors block > contributors > image list div
      AssertionError: expected null to exist
        at test/blocks/contributors/contributors.test.js:71:27
        at Array.forEach (<anonymous>)
        at n.<anonymous> (test/blocks/contributors/contributors.test.js:69:33)


📁 test/blocks/tab/tab.test.js:

❌ Tab block > Tab Button Structure > tab > button load structure
      AssertionError: expected 'tab-button active' to equal 'tab-button'
      + expected - actual
      
      -tab-button active
      +tab-button
      
      at n.<anonymous> (test/blocks/tab/tab.test.js:60:38)

❌ Tab block > Sub-tabs > sub-tab > attributes
      AssertionError: expected 'subTab1' to equal 'subTab3'
      + expected - actual
      
      -subTab1
      +subTab3
      
      at test/blocks/tab/tab.test.js:135:58
      at NodeList.forEach (<anonymous>)
      at n.<anonymous> (test/blocks/tab/tab.test.js:133:23)



Test Coverage Report

Overall Coverage Summary

Metric Percentage Coverage
Statements 60.06% 3403/5666
Branches 85.15% 459/539
Functions 54.58% 113/207
Lines 60.06% 3403/5666

Coverage by File/Directory

File Statements Branches Functions Lines
blocks/accordion 100% 100% 100% 100%
blocks/announcement 76.69% 60% 100% 76.69%
blocks/banner 94.28% 62.5% 100% 94.28%
blocks/cards 94.04% 94.73% 100% 94.04%
blocks/carousel 76.9% 77.77% 75% 76.9%
blocks/code 81.81% 60% 100% 81.81%
blocks/columns 67.51% 78.37% 100% 67.51%
blocks/contributors 83.61% 56% 100% 83.61%
blocks/edition 91.22% 57.14% 100% 91.22%
blocks/fragment 19.37% 100% 0% 19.37%
blocks/image-text 57.5% 55.55% 100% 57.5%
blocks/info 96.87% 100% 100% 96.87%
blocks/info-card 73.86% 30% 100% 73.86%
blocks/info-columns 75% 100% 100% 75%
blocks/list 59.09% 85.71% 100% 59.09%
blocks/mini-resource-card 97.89% 87.5% 100% 97.89%
blocks/product-card 78.57% 94.11% 100% 78.57%
blocks/profile-card 96.29% 100% 100% 96.29%
blocks/site-hero 93.93% 80% 100% 93.93%
blocks/summary 98.36% 88.88% 100% 98.36%
blocks/tab 95.39% 92.3% 100% 95.39%
blocks/table 100% 84.61% 100% 100%
blocks/text 49.01% 83.33% 50% 49.01%
blocks/title 84% 66.66% 100% 84%
components 64% 100% 66.66% 64%
scripts 48.04% 93.08% 42.17% 48.04%

Coverage report generated at 2026-03-26T22:30:05.169Z

@deepessh deepessh changed the base branch from main to stage March 26, 2026 22:30
…ial creation

fetchTemplateEntitlement() fetches the full template including apis with
licenseConfigs, but never stored it on templateData. This left
templateData.apis undefined, causing the /install endpoint to receive an
empty apis array and fail with "Service CJA SDK requires selection of a
product". Always call fetchTemplateEntitlement() in all auth flows to
ensure apis data is available, and explicitly map only the required
licenseConfig fields (id, productId, op) in the install request payload.

Made-with: Cursor
@github-actions
Copy link
Copy Markdown

❌ Test Results

Status: Some tests failed!

🔍 Click to view failed tests
📁 test/blocks/columns/columns.test.js:

❌ Columns block > Columns > columns-container
      AssertionError: expected false to be true
      + expected - actual
      
      -false
      +true
      
      at n.<anonymous> (test/blocks/columns/columns.test.js:29:117)

❌ Columns block > Columns > buttons
      AssertionError: expected false to be true
      + expected - actual
      
      -false
      +true
      
      at test/blocks/columns/columns.test.js:100:86
      at NodeList.forEach (<anonymous>)
      at n.<anonymous> (test/blocks/columns/columns.test.js:95:50)


📁 test/blocks/embed/embed.test.js:

❌ Could not import your test module. Check the browser logs or open the browser in debug mode for more information.


📁 test/blocks/contributors/contributors.test.js:

❌ Contributors block > contributors > firstDiv
      AssertionError: expected null to exist
        at n.<anonymous> (test/blocks/contributors/contributors.test.js:32:28)

❌ Contributors block > contributors > remove divs without children
      AssertionError: expected false to be true
      + expected - actual
      
      -false
      +true
      
      at test/blocks/contributors/contributors.test.js:42:44
      at NodeList.forEach (<anonymous>)
      at n.<anonymous> (test/blocks/contributors/contributors.test.js:41:51)

❌ Contributors block > contributors > last update div
      AssertionError: expected '' to equal 'https://github.com/AdobeDocs/express-add-ons-docs/commits/main/src/pages/references/index.md'
      + expected - actual
      
      +https://github.com/AdobeDocs/express-add-ons-docs/commits/main/src/pages/references/index.md
      
      at n.<anonymous> (test/blocks/contributors/contributors.test.js:53:40)

❌ Contributors block > contributors > image list div
      AssertionError: expected null to exist
        at test/blocks/contributors/contributors.test.js:71:27
        at Array.forEach (<anonymous>)
        at n.<anonymous> (test/blocks/contributors/contributors.test.js:69:33)


📁 test/blocks/tab/tab.test.js:

❌ Tab block > Tab Button Structure > tab > button load structure
      AssertionError: expected 'tab-button active' to equal 'tab-button'
      + expected - actual
      
      -tab-button active
      +tab-button
      
      at n.<anonymous> (test/blocks/tab/tab.test.js:60:38)

❌ Tab block > Sub-tabs > sub-tab > attributes
      AssertionError: expected 'subTab1' to equal 'subTab3'
      + expected - actual
      
      -subTab1
      +subTab3
      
      at test/blocks/tab/tab.test.js:135:58
      at NodeList.forEach (<anonymous>)
      at n.<anonymous> (test/blocks/tab/tab.test.js:133:23)



Test Coverage Report

Overall Coverage Summary

Metric Percentage Coverage
Statements 59.98% 3405/5676
Branches 85.02% 460/541
Functions 54.58% 113/207
Lines 59.98% 3405/5676

Coverage by File/Directory

File Statements Branches Functions Lines
blocks/accordion 100% 100% 100% 100%
blocks/announcement 76.69% 60% 100% 76.69%
blocks/banner 94.28% 62.5% 100% 94.28%
blocks/cards 94.04% 94.73% 100% 94.04%
blocks/carousel 76.9% 77.77% 75% 76.9%
blocks/code 81.81% 60% 100% 81.81%
blocks/columns 67.78% 76.92% 100% 67.78%
blocks/contributors 83.61% 56% 100% 83.61%
blocks/edition 91.22% 57.14% 100% 91.22%
blocks/fragment 19.37% 100% 0% 19.37%
blocks/image-text 57.5% 55.55% 100% 57.5%
blocks/info 96.87% 100% 100% 96.87%
blocks/info-card 73.86% 30% 100% 73.86%
blocks/info-columns 75% 100% 100% 75%
blocks/list 59.09% 85.71% 100% 59.09%
blocks/mini-resource-card 97.89% 87.5% 100% 97.89%
blocks/product-card 78.57% 94.11% 100% 78.57%
blocks/profile-card 96.29% 100% 100% 96.29%
blocks/site-hero 93.93% 80% 100% 93.93%
blocks/summary 98.36% 88.88% 100% 98.36%
blocks/tab 95.39% 92.3% 100% 95.39%
blocks/table 100% 84.61% 100% 100%
blocks/text 49.01% 83.33% 50% 49.01%
blocks/title 84% 66.66% 100% 84%
components 64% 100% 66.66% 64%
scripts 47.93% 93.08% 42.17% 47.93%

Coverage report generated at 2026-03-26T22:33:58.859Z

@timkim timkim merged commit 90addca into stage Mar 26, 2026
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants