Releases: Ed-Fi-Alliance-OSS/ODS-Admin-API
Releases · Ed-Fi-Alliance-OSS/ODS-Admin-API
Release list
v2.3.3-alpha.0.194
Pre-Release-v2.3.3-alpha.0.194 [ADMINAPI-1448] Increase unit tests coverage in all unit tests V2/V3 …
v2.3.3-alpha.0.193
Pre-Release-v2.3.3-alpha.0.193 [ADMINAPI-1436] - Instance Management - Docker database template setu…
v2.3.3-alpha.0.192
Pre-Release-v2.3.3-alpha.0.192 [ADMINAPI-1447] - Include rows in adminapi.DbInstances on the sync en…
v2.3.3-alpha.0.191
Pre-Release-v2.3.3-alpha.0.191 [ADMINAPI-1446] Improve the "type" property to have the urn for probl…
v2.3.3-alpha.0.190
[ADMINAPI-1370] Vendor tests enhacements (#389) * [ADMINAPI-1370] S1: Expand EditVendorCommand tests (v2 + v3) Add happy-path update, system-reserved rejection, no-users-creates-new-user, and namespace-prefix replacement scenarios to both unit test projects. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] S2: Expand AddVendorCommand tests (v2 + v3) Add null-namespace, multi-comma-separated-namespace, and field-trimming scenarios to both unit test projects. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] S5: Add VendorMapperTests (v2 + v3) New test files covering ToModel (full mapping, no-users null-safe path) and ToModelList for both unit test projects. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] S4: Expand GetVendorsQuery filter tests (v2 + v3) Add id, namespace-prefix (exact-match), contact-name, contact-email, and empty-result filter scenarios to both unit test projects. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] S3: Expand DeleteVendorCommand tests (v2 + v3) Add system-reserved-vendor rejection and cascade-delete-with-applications scenarios to both unit test projects. Application initializers include OperationalContextUri = string.Empty to satisfy the EF in-memory nullability constraint on that required field. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] Add vendor coverage boost design spec Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] Add vendor coverage boost implementation plan Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] Add TestEndpointRouteBuilder helper to v2 and v3 test projects * [ADMINAPI-1370] Add VendorFeatureEndpointTests to cover MapEndpoints in v2 and v3 * [ADMINAPI-1370] Add null-NamespacePrefixes branch test to EditVendorCommandTests (v2 + v3) * [ADMINAPI-1370] Add null-vendor branch test to VendorExtensionsTests (v2 + v3) * [ADMINAPI-1370] Add null-NamespacePrefixes validator branch test to AddVendorTests (v2 + v3) * [ADMINAPI-1370] Add SqlServer engine branch test to GetVendorsQueryTests (v2 + v3) Added Execute_WithSqlServerDatabaseEngine_ReturnsVendors test to both v2 and v3 test files. Test validates SqlServer engine path in GetVendorsQuery constructor. Fallback to parameterless Execute() due to EF Core InMemory Collate() limitation. * [ADMINAPI-1370] Add ApiClient cleanup branch test to DeleteVendorCommandTests (v2 + v3) * [ADMINAPI-1370] Fix AddVendorCommand branch gap: null-field test (v2 + v3) Adds Execute_WithNullCompanyContactNameAndEmail test to cover the null path of Company?.Trim(), ContactName?.Trim(), and ContactEmailAddress?.Trim() null-conditional branches. Brings AddVendorCommand branch coverage from 62.5% to 100% in both assemblies. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * [ADMINAPI-1370] Implement vendor coverage boost plan: add unit tests for vendor features, enhance test infrastructure, and ensure ≥80% coverage across relevant classes. --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
v2.3.3-alpha.0.189
[ADMINAPI-1412] Update all GitHub Actions to Latest Available (#385) * Update GitHub Actions versions * feat: Upgrade to the latest version of the actions * feat: Enhance workflows with version validation and improved tagging logic * fix: Update action references to use latest versions for secure artifact download and SLSA generator --------- Co-authored-by: Stephen A. Fuqua <stephen@safnet.com>
v2.3.3-alpha.0.188
[ADMINAPI-1410] - Treat warnings as errors. (#382) * v3 specification - Adds PUT-request-aligned validation - Cover more scenarios. * docs: add design spec for TreatWarningsAsErrors rollout Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: enable TreatWarningsAsErrors in all projects and fix resulting warnings - Added TreatWarningsAsErrors to all 8 projects missing the property - Fixed NU1510: removed unnecessary explicit PackageReferences for System.Text.Json (4 projects) and System.Formats.Asn1 (2 projects) - Fixed NU1904: pinned System.Drawing.Common to 8.0.0 to address critical vulnerability (GHSA-rxg9-xrhp-64gj) - Fixed NUnit1033: replaced TestContext.WriteLine with TestContext.Out.WriteLine - Fixed CS0618: replaced System.Data.SqlClient with Microsoft.Data.SqlClient - Fixed CS8632: added #nullable enable to 15 files that use nullable annotations without nullable context - Fixed CS8600/CS8620: changed string to string? for decryptedConnectionString variables used as out parameters with nullable-annotated APIs - Fixed CS8602: added null-forgiving operator after okResult.ShouldNotBeNull() and after Ok<T>.Value (which returns T?) in GetJobStatusTests - Fixed CS8625: used null! for _usersContext field initialization/teardown - Fixed CS8625/CS8602/CS8620 in EducationOrganizationServiceTests: Dictionary<string,string?>, null! teardown, (v.ToString() ?? ...).Contains, and Func<It.IsAnyType, Exception?, string> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Removing files we don't need here * Removing files we don't need here * fix: update openssl from 3.5.6-r0 to 3.5.7-r0 in all Dockerfiles Alpine updated openssl to 3.5.7-r0; other packages (libcrypto3, libssl3) now require this version, causing a dependency conflict with the pinned 3.5.6-r0. Updated all four Dockerfiles. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
v2.3.3-alpha.0.187
Pre-Release-v2.3.3-alpha.0.187 [ADMINAPI-1383] Update Admin API error payload shape to support Probl…
v2.3.3-alpha.0.186
[ADMINAPI-1381] - v3 specification - ClaimSet name validation (#369)
* v3 specification - Adds PUT-request-aligned validation - Cover more scenarios.
* docs: add claimset no-whitespace validation design spec
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: add no-whitespace validation to claimset name fields (V3)
- Add ClaimSetNameNoWhitespaceMessage constant to FeatureConstants
- Add Must rule to AddClaimSet, EditClaimSet, ImportClaimSet, CopyClaimSet validators
- Add Must rule to AddApplication, EditApplication validators for ClaimSetName
- Add unit tests for all 6 validators (12 tests, all passing)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: add DB integration tests for no-whitespace claimset name validation (V3)
- AddClaimSetValidatorTests: verifies whitespace rejected/accepted using real DB query
- EditClaimSetValidatorTests: saves test ClaimSet entity, checks whitespace rule
- CopyClaimSetValidatorTests: saves test ClaimSet entity, checks whitespace rule
- ImportClaimSetValidatorTests: uses all 4 real queries to instantiate validator
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: add Bruno E2E tests for no-whitespace validation (V3)
- POST /claimSets: Invalid Name With Whitespace (seq 11.5)
- PUT /claimSets/{id}: Invalid Name With Whitespace (seq 49.5)
- POST /claimSets/copy: Invalid Name With Whitespace (seq 41.5)
- POST /claimSets/import: Invalid Name With Whitespace (seq 8.5)
- POST /applications: Invalid ClaimSetName With Whitespace (seq 3.5)
- PUT /applications/{id}: Invalid ClaimSetName With Whitespace (seq 17.5)
All tests expect HTTP 400 with errors containing 'white space'.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* refactor: use char.IsWhiteSpace to reject all whitespace in claimset names (V3)
Per code review: change Contains(' ') to !name.Any(char.IsWhiteSpace) so that
tabs, newlines, and non-breaking spaces are also rejected, matching the intent
of the 'must not contain white spaces' error message.
Also add parameterized unit test cases for tab, newline, leading/trailing space
edge cases (293 unit tests total, all passing).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: keep security context alive during ImportClaimSet validator DB tests
The CreateValidator() helper method was disposing the DbContext before
validation ran, causing ObjectDisposedException. Inline context creation
into each test method so the context stays alive for the entire validate call.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: update E2E tests to use claimset names without whitespace
- Rename ClaimSet test names: 'Test ClaimSet' -> 'TestClaimSet-', 'Updated Test ClaimSet' -> 'UpdatedTestClaimSet', 'Copied ClaimSet from' -> 'CopiedClaimSet-from', 'Other Test ClaimSet' -> 'OtherTestClaimSet-', 'Test ClaimSet import' -> 'TestClaimSet-import'
- Add dynamic claimset creation in pre-request scripts for Application, ApiClient, Vendors, DataStores, and ClaimSet-with-Applications tests that create applications using 'Ed-Fi Sandbox' or 'Ed-Fi ODS Admin App'
- Replace hardcoded 'Ed-Fi Sandbox' / 'Ed-Fi ODS Admin App' with {{ApplicationClaimSetName}} / {{UpdatedApplicationClaimSetName}} variables
- Update expect() assertions to use the dynamic variables
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: update remaining E2E test claimset names with spaces
- PUT - ClaimSets - System Reserved: 'Update System Reserved ClaimSet' -> 'UpdateSystemReservedClaimSet'
- Application Sorting folder.bru: 'ClaimSet Pre' -> 'ClaimSetPre-' (template literal)
- POST Import Invalid Resource Duplication: 'Wrong Relationship' -> 'WrongRelationship-'
- POST Import Invalid Wrong Parent Child Relationship: same pattern
- POST Import Wrong resource name: 'Wrong Resouce name' -> 'WrongResouceName-'
- POST ClaimSets-Copy Invalid ClaimSet Id: 'Claim set does not exists' -> 'ClaimSetDoesNotExist'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: add design doc for claimset name no-whitespace validation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: remove oversized spec file replaced by design doc
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: correct 'Resouce' typo to 'Resource' in E2E test claimset name
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
v2.3.3-alpha.0.185
Pre-Release-v2.3.3-alpha.0.185 [ADMINAPI-1424] Fixes for refresh endpoints (#368)