Skip to content
Open
Show file tree
Hide file tree
Changes from 117 commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
870b4f4
Fix API test authentication in BCApps
t-prda Aug 10, 2026
dedb354
Clarify credential file path parameter
t-prda Aug 10, 2026
16f3424
Avoid sensitive parameter name false positive
t-prda Aug 10, 2026
2ec8094
Scope API test authentication explicitly
t-prda Aug 11, 2026
0193a4f
Place Graph auth bindings after test properties
t-prda Aug 11, 2026
41fbc83
Fix E-Document Graph auth trigger placement
t-prda Aug 11, 2026
11c5ec5
Declare Graph library for E-Document test binding
t-prda Aug 11, 2026
3e3eacb
Resolve W1 warning failures
t-prda Aug 11, 2026
44b1d30
Propagate prepayment warning suppression
t-prda Aug 11, 2026
e2cdd65
Qualify Graph auth helper namespace
t-prda Aug 11, 2026
ed5f78c
Import Graph auth helper dependencies
t-prda Aug 11, 2026
c025edb
Scope Graph password file check to OnPrem
t-prda Aug 11, 2026
7488f41
Import System dotnet aliases for Graph auth
t-prda Aug 11, 2026
5e670d6
Remove unused Graph auth namespace import
t-prda Aug 11, 2026
a412589
Address API auth review findings
t-prda Aug 11, 2026
aacaea5
Fix resumed PR validation failures
t-prda Aug 12, 2026
f63a482
Keep build optimization baseline unchanged
t-prda Aug 12, 2026
0e9f2da
Update E-Document dependency count
t-prda Aug 12, 2026
624b437
Restore E-Document Graph helper variable
t-prda Aug 12, 2026
1aa001d
Narrow API test re-enablement
t-prda Aug 12, 2026
6677c1e
Run Expense API tests with disabled isolation
t-prda Aug 12, 2026
fac14d9
Revert "Run Expense API tests with disabled isolation"
t-prda Aug 13, 2026
16b5b9e
Enable Expense Agent API integration tests
t-prda Aug 13, 2026
89f8d6b
Keep stateful capability API tests disabled
t-prda Aug 13, 2026
9b063ea
Temporarily limit PR validation to W1
t-prda Aug 13, 2026
5131fb6
Fix temporary W1 project paths
t-prda Aug 13, 2026
ad2b38e
Make capability API assertions row-specific
t-prda Aug 13, 2026
d88a833
Use baseline artifacts for W1-only validation
t-prda Aug 13, 2026
74b131b
Benchmark test tenant refresh
t-prda Aug 14, 2026
77997bb
Fix tenant refresh benchmark cleanup
t-prda Aug 14, 2026
c60eb68
Remove temporary tenant refresh benchmark
t-prda Aug 14, 2026
59fc283
Run disabled-isolation tests on clean tenants
t-prda Aug 14, 2026
d809629
Enable APIV2 disabled-isolation tests
t-prda Aug 14, 2026
26ef27f
Stub test discovery in PowerShell tests
t-prda Aug 14, 2026
ed3be0c
Run all APIV1 and APIV2 tests with disabled isolation
t-prda Aug 14, 2026
3d3a6c1
Preauthenticate Graph API test requests
t-prda Aug 14, 2026
e9e26c3
Fix APIV2 test dates for CI license
t-prda Aug 14, 2026
0cebd0e
Reuse APIV2 sales credit memo ERM library
t-prda Aug 14, 2026
b09233c
Scope clean tenant tests to configured apps
t-prda Aug 15, 2026
a180779
Initialize API test work dates consistently
t-prda Aug 15, 2026
27bdffe
Fix purchase return shipment PDF report selection
t-prda Aug 15, 2026
e393e10
Fix isolated API test assertions
t-prda Aug 15, 2026
de891a8
Fix Automation RS Package clean runs
t-prda Aug 15, 2026
2f478c8
Match APIV2 enablement to NAV web service bucket
t-prda Aug 15, 2026
7f86625
Match all NAV API execution paths
t-prda Aug 15, 2026
3612c1f
Validate clean tenants for required-isolation apps
t-prda Aug 15, 2026
33c3f62
Build multitenant-safe API test URLs
t-prda Aug 15, 2026
f95a1c6
Use a license-safe API test work date
t-prda Aug 15, 2026
8dabd83
Enable scheduler for clean API tests
t-prda Aug 15, 2026
54d8180
Build nested API paths before tenant queries
t-prda Aug 15, 2026
9c6b299
Remove unused API test library variable
t-prda Aug 15, 2026
f4f819b
Fix final API test record matching
t-prda Aug 16, 2026
4ede6a1
Match APIV1 lines by composite identifiers
t-prda Aug 16, 2026
7c32c28
Identify created APIV1 lines by description
t-prda Aug 16, 2026
c005c68
Use GUID descriptions for APIV1 line tests
t-prda Aug 16, 2026
27f60fb
Scan document lines for APIV1 test records
t-prda Aug 16, 2026
c4eaac1
Reserve default tenant during clean test runs
t-prda Aug 16, 2026
d0114f5
Keep quality management integration ordering
t-prda Aug 16, 2026
a319973
Restore normal pull request validation
t-prda Aug 17, 2026
e5df951
Pin clean test retries to tenant results
t-prda Aug 17, 2026
04a6a7e
Use localized-safe API test setup
t-prda Aug 17, 2026
38cff89
Initialize localized API posting setup
t-prda Aug 17, 2026
a65ab83
Satisfy API test library analyzer
t-prda Aug 17, 2026
128cc1a
Stabilize localized API test setup
t-prda Aug 17, 2026
3cad877
Reuse graph journal test library variable
t-prda Aug 17, 2026
a8646da
Trigger API test validation
t-prda Aug 17, 2026
9c5c023
Merge remote-tracking branch 'origin/main' into prdas/646383-api-test…
t-prda Aug 17, 2026
1d98cc5
Merge latest main into API test branch
t-prda Aug 17, 2026
5036be5
Migrate new expense activity API tests
t-prda Aug 17, 2026
fed7972
Create exact localized VAT setup keys
t-prda Aug 17, 2026
74af994
Initialize localized API line setup
t-prda Aug 18, 2026
691ee7c
Initialize API item charge posting setup
t-prda Aug 18, 2026
962693f
Merge current API test exclusions
t-prda Aug 18, 2026
37dc3cf
Stabilize remaining API test setup
t-prda Aug 18, 2026
5513615
Run expense API tests on clean tenants
t-prda Aug 18, 2026
6d38d5b
Exclude clean codeunits from normal test passes
t-prda Aug 19, 2026
6a42664
Rebind activity API test authentication
t-prda Aug 19, 2026
1a26ef4
Restore cleared API auth subscriptions
t-prda Aug 19, 2026
5811206
Merge latest scheduler warmup changes
t-prda Aug 19, 2026
10dfcdf
Bind activity API auth after cleanup
t-prda Aug 19, 2026
e0f0fe4
Refresh API auth before each request
t-prda Aug 19, 2026
4e9af97
Apply API authentication directly
t-prda Aug 19, 2026
5cde7a2
Persist shared API authentication state
t-prda Aug 20, 2026
399810e
Apply environment-aware Graph authentication
t-prda Aug 20, 2026
0fdaea9
Build tenant-safe activity API URLs
t-prda Aug 20, 2026
b4d6ba6
Disable regressed expense capability API test
t-prda Aug 20, 2026
f033391
Scope disabled tests by country
t-prda Aug 21, 2026
c627dfb
Track second India capability regression
t-prda Aug 21, 2026
ec8404a
Address API test review comments
t-prda Aug 21, 2026
5fd8861
Document parallel test helpers
t-prda Aug 21, 2026
3340b9f
Scope India capability cold-start exclusion
t-prda Aug 21, 2026
8c22364
Remove obsolete API initialization state
t-prda Aug 21, 2026
b6c33c9
Merge latest test rerun infrastructure
t-prda Aug 21, 2026
4775979
Migrate new expense policy API tests
t-prda Aug 21, 2026
3955c2e
Fix newly enabled expense API tests
t-prda Aug 21, 2026
4ee01ad
Load activity event type for API records
t-prda Aug 22, 2026
3d08c14
Initialize activity API currency setup
t-prda Aug 22, 2026
aae2e00
Load activity fields before API trigger logic
t-prda Aug 22, 2026
6cc8c30
Create valid submitted activity fixture
t-prda Aug 22, 2026
48eb1d5
Unify clean and app retry state handling
t-prda Aug 22, 2026
79fa9b6
Enable Task Scheduler before test execution
t-prda Aug 23, 2026
7f83dd9
Address final API test review findings
t-prda Aug 25, 2026
556ec6f
Migrate remaining Graph auth caller
t-prda Aug 25, 2026
3b9bc36
Create reason codes for invoice cancellation tests
t-prda Aug 25, 2026
90d2f99
Update E-Document dependency count
t-prda Aug 25, 2026
450f5b2
Retry transient clean tenant database copies
t-prda Aug 25, 2026
1938bb2
Use docker exec for clean tenant database copies
t-prda Aug 26, 2026
0dc3ec8
Stub container script command in scheduler tests
t-prda Aug 26, 2026
e835162
Retry source tenant resolution for clean templates
t-prda Aug 26, 2026
f8fc045
Reuse known database name for clean template
t-prda Aug 26, 2026
31a0526
Isolate task scheduler to clean test phase
t-prda Aug 26, 2026
d220a68
Restore clean tenants before normal tests
t-prda Aug 26, 2026
d3ff48d
Clarify background job variable scope
t-prda Aug 26, 2026
2811a3e
Merge main into API test auth branch
t-prda Aug 26, 2026
874c98a
Retrigger validation after main merge
t-prda Aug 26, 2026
fdfb2e1
Retrigger validation after Actions recovery
t-prda Aug 26, 2026
51ba60b
Merge 30.0 obsolete-tag fixes from main
t-prda Aug 27, 2026
43fb2db
Retry test metadata selection races
t-prda Aug 27, 2026
89f74e8
Serialize clean tenant database resets
t-prda Aug 27, 2026
16a4e42
Propagate test metadata race markers
t-prda Aug 27, 2026
ae60ea9
Batch clean tenant restores before tests
t-prda Aug 27, 2026
7e6cb40
Retry clean API cold-start failures
t-prda Aug 28, 2026
3ada2aa
Address final automated review findings
t-prda Aug 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions build/scripts/NewBcContainer.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,64 @@ if ($platformVersion) {

New-BcContainer @parameters

if ($parameters.auth -in @('UserPassword', 'NavUserPassword')) {
if (-not $parameters.credential) {
throw "The BCApps UserPassword test container requires a credential."
}

$apiTestPasswordFile = 'C:\Run\my\ApiTestPassword'
$apiTestPassword = $parameters.credential.GetNetworkCredential().Password
$hostPasswordFile = Join-Path ([System.IO.Path]::GetTempPath()) "BCAppsApiTestPassword-$([Guid]::NewGuid().ToString('N'))"
try {
[System.IO.File]::WriteAllText($hostPasswordFile, $apiTestPassword)

try {
Copy-FileToBcContainer -containerName $parameters.ContainerName -localPath $hostPasswordFile -containerPath $apiTestPasswordFile
Invoke-ScriptInBcContainer -containerName $parameters.ContainerName -argumentList $apiTestPasswordFile -scriptblock {
param(
[string]$FilePath
)

$fileSecurity = [System.Security.AccessControl.FileSecurity]::new()
$fileSecurity.SetAccessRuleProtection($true, $false)
foreach ($accessEntry in @(
@{ Sid = 'S-1-5-18'; Rights = [System.Security.AccessControl.FileSystemRights]::FullControl },
@{ Sid = 'S-1-5-20'; Rights = [System.Security.AccessControl.FileSystemRights]::Read },
@{ Sid = 'S-1-5-32-544'; Rights = [System.Security.AccessControl.FileSystemRights]::FullControl }
)) {
$identity = [System.Security.Principal.SecurityIdentifier]::new($accessEntry.Sid)
$accessRule = [System.Security.AccessControl.FileSystemAccessRule]::new(
$identity,
$accessEntry.Rights,
[System.Security.AccessControl.AccessControlType]::Allow)
$fileSecurity.AddAccessRule($accessRule)
}
Set-Acl -LiteralPath $FilePath -AclObject $fileSecurity
}
}
catch {
$originalError = $_
try {
Invoke-ScriptInBcContainer -containerName $parameters.ContainerName -argumentList $apiTestPasswordFile -scriptblock {
param(
[string]$FilePath
)

Remove-Item -LiteralPath $FilePath -Force -ErrorAction SilentlyContinue
}
}
catch {
Write-Warning "Could not remove the API test credential file after setup failed."
}
throw $originalError
}
}
finally {
Remove-Item -LiteralPath $hostPasswordFile -Force -ErrorAction SilentlyContinue
Clear-Variable apiTestPassword -ErrorAction SilentlyContinue
}
}

Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "EnforceUserPathForAlFileOperations" -keyValue "false"
Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "UsePermissionSetsFromExtensions" -keyValue "true"
Restart-BcContainer -containerName $parameters.ContainerName
Expand Down
Loading
Loading