Skip to content

[ODS-6626] API only allows tenant1's profiles when different profiles are set up for different tenants - 7.3 patch #4328

[ODS-6626] API only allows tenant1's profiles when different profiles are set up for different tenants - 7.3 patch

[ODS-6626] API only allows tenant1's profiles when different profiles are set up for different tenants - 7.3 patch #4328

GitHub Actions / MultiTenant Postman Tests succeeded Feb 4, 2025 in 0s

70 passed, 0 failed and 0 skipped

Tests passed successfully

✅ /home/runner/work/Ed-Fi-ODS-Implementation/Ed-Fi-ODS-Implementation/Ed-Fi-ODS-Implementation/reports/Ed-Fi ODS-API Multi-Tenancy.xml

70 tests were completed in 8s with 70 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Change Queries / Get Available Change Versions (Tenant1) 1✅ 14ms
Change Queries / Get Available Change Versions (Tenant2) 1✅ 5ms
Identities / Get Identities (Tenant1) 4ms
Identities / Get Identities (Tenant2) 2ms
Metadata / Dependencies / Tenant1 2✅ 833ms
Metadata / Dependencies / Tenant1 (GraphML) 2✅ 96ms
Metadata / Dependencies / Tenant2 2✅ 54ms
Metadata / Dependencies / Tenant2 (GraphML) 2✅ 88ms
Metadata / Open API / Resources / Tenant1 OpenApi V2 2✅ 2s
Metadata / Open API / Resources / Tenant1 OpenApi v3 2✅ 2s
Metadata / Open API / Resources / Tenant2 OpenApi v2 2✅ 21ms
Metadata / Open API / Resources / Tenant2 OpenApi v3 2✅ 19ms
Metadata / Open API / Sections / Tenant1 2✅ 38ms
Metadata / Open API / Sections / Tenant2 2✅ 5ms
Profiles / Setup / Create Tenant1 School 1✅ 15ms
Profiles / Setup / Create Tenant2 School 1✅ 14ms
Profiles / Teardown / Clean up Environment Variables 3ms
Profiles / Teardown / Delete Tenant1 School 1✅ 15ms
Profiles / Teardown / Delete Tenant2 School 1✅ 4ms
Profiles / Tenant1 Requests / Get School from Tenant1 using a profile with common name 4✅ 24ms
Profiles / Tenant1 Requests / Get School from Tenant1 using a Tenant1 Profile 4✅ 49ms
Profiles / Tenant1 Requests / Get School from Tenant1 using a Tenant2 Profile 2✅ 6ms
Profiles / Tenant2 Requests / Get School from Tenant2 using a profile with common name 4✅ 21ms
Profiles / Tenant2 Requests / Get School from Tenant2 using a Tenant1 Profile 2✅ 3ms
Profiles / Tenant2 Requests / Get School from Tenant2 using a Tenant2 Profile 4✅ 22ms
Resources / Setup / Create Tenant1 School 1✅ 560ms
Resources / Setup / Create Tenant2 School 1✅ 40ms
Resources / Teardown / Clean up Environment Variables 3ms
Resources / Tenant1 Requests / Delete School 1✅ 117ms
Resources / Tenant1 Requests / Delete Tenant2 School 1✅ 10ms
Resources / Tenant1 Requests / Get Composite Enrollment 1✅ 283ms
Resources / Tenant1 Requests / Get School 1✅ 104ms
Resources / Tenant1 Requests / Get School with Tenant2 SchoolId 1✅ 26ms
Resources / Tenant1 Requests / Get Schools Deletes 2✅ 59ms
Resources / Tenant1 Requests / Get Schools Key Changes 1✅ 31ms
Resources / Tenant2 Requests / Delete School 1✅ 88ms
Resources / Tenant2 Requests / Delete Tenant1 School 1✅ 5ms
Resources / Tenant2 Requests / Get Composite Enrollment 1✅ 21ms
Resources / Tenant2 Requests / Get School 1✅ 7ms
Resources / Tenant2 Requests / Get School with Tenant1 SchoolId 1✅ 4ms
Resources / Tenant2 Requests / Get Schools Deletes 2✅ 6ms
Resources / Tenant2 Requests / Get Schools Key Changes 1✅ 4ms
Token Info / Token Info (Tenant1) 2✅ 657ms
Token Info / Token Info (Tenant2) 2✅ 273ms
Version Endpoints / Get Versions (root) 2✅ 6ms

✅ Change Queries / Get Available Change Versions (Tenant1)

ChangeQueriesGetAvailableChangeVersionsTenant1
  ✅ Status code is 200

✅ Change Queries / Get Available Change Versions (Tenant2)

ChangeQueriesGetAvailableChangeVersionsTenant2
  ✅ Status code is 200

✅ Metadata / Dependencies / Tenant1

MetadataDependenciesTenant1
  ✅ Status code is 200
  ✅ Response Content-Type should be application/json

✅ Metadata / Dependencies / Tenant1 (GraphML)

MetadataDependenciesTenant1GraphMl
  ✅ Status code is 200
  ✅ Response Content-Type should be application/graphml

✅ Metadata / Dependencies / Tenant2

MetadataDependenciesTenant2
  ✅ Status code is 200
  ✅ Response Content-Type should be application/json

✅ Metadata / Dependencies / Tenant2 (GraphML)

MetadataDependenciesTenant2GraphMl
  ✅ Status code is 200
  ✅ Response Content-Type should be application/graphml

✅ Metadata / Open API / Resources / Tenant1 OpenApi V2

MetadataOpenApiResourcesTenant1OpenApiV2
  ✅ Status code is 200
  ✅ BasePath in OpenApi v2 metadata should include Tenant1

✅ Metadata / Open API / Resources / Tenant1 OpenApi v3

MetadataOpenApiResourcesTenant1OpenApiV3
  ✅ Status code is 200
  ✅ Server Url in OpenApi v3 metadata should include Tenant1

✅ Metadata / Open API / Resources / Tenant2 OpenApi v2

MetadataOpenApiResourcesTenant2OpenApiV2
  ✅ Status code is 200
  ✅ BasePath in OpenApi v2 metadata should include Tenant2

✅ Metadata / Open API / Resources / Tenant2 OpenApi v3

MetadataOpenApiResourcesTenant2OpenApiV3
  ✅ Status code is 200
  ✅ Server Url in OpenApi v3 metadata should include Tenant2

✅ Metadata / Open API / Sections / Tenant1

MetadataOpenApiSectionsTenant1
  ✅ Status code is 200
  ✅ Endpoint uris should include Tenant1

✅ Metadata / Open API / Sections / Tenant2

MetadataOpenApiSectionsTenant2
  ✅ Status code is 200
  ✅ Endpoint uris should include Tenant2

✅ Profiles / Setup / Create Tenant1 School

ProfilesSetupCreateTenant1School
  ✅ Status code is 201

✅ Profiles / Setup / Create Tenant2 School

ProfilesSetupCreateTenant2School
  ✅ Status code is 201

✅ Profiles / Teardown / Delete Tenant1 School

ProfilesTeardownDeleteTenant1School
  ✅ Status code is 204

✅ Profiles / Teardown / Delete Tenant2 School

ProfilesTeardownDeleteTenant2School
  ✅ Status code is 404

✅ Profiles / Tenant1 Requests / Get School from Tenant1 using a profile with common name

ProfilesTenant1RequestsGetSchoolFromTenant1UsingAProfileWithCommonName
  ✅ Status code is 200
  ✅ Response Content-Type header should match profile usage
  ✅ Response should not contain a property not included in the Tenant1 test profile
  ✅ The value of the property included in the Tenant1 test profile should match the expected value for Tenant1

✅ Profiles / Tenant1 Requests / Get School from Tenant1 using a Tenant1 Profile

ProfilesTenant1RequestsGetSchoolFromTenant1UsingATenant1Profile
  ✅ Status code is 200
  ✅ Response Content-Type header should match profile usage
  ✅ Response should not contain a property not included in the Tenant1 test profile
  ✅ The value of the property included in the Tenant1 test profile should match the expected value for Tenant1

✅ Profiles / Tenant1 Requests / Get School from Tenant1 using a Tenant2 Profile

ProfilesTenant1RequestsGetSchoolFromTenant1UsingATenant2Profile
  ✅ Status code is 406
  ✅ Error response should contain the expected content

✅ Profiles / Tenant2 Requests / Get School from Tenant2 using a profile with common name

ProfilesTenant2RequestsGetSchoolFromTenant2UsingAProfileWithCommonName
  ✅ Status code is 200
  ✅ Response Content-Type header should match profile usage
  ✅ Response should not contain a property not included in the Tenant2 test profile
  ✅ The value of the property included in the Tenant2 test profile should match the expected value for Tenant2

✅ Profiles / Tenant2 Requests / Get School from Tenant2 using a Tenant1 Profile

ProfilesTenant2RequestsGetSchoolFromTenant2UsingATenant1Profile
  ✅ Status code is 406
  ✅ Error response should contain the expected content

✅ Profiles / Tenant2 Requests / Get School from Tenant2 using a Tenant2 Profile

ProfilesTenant2RequestsGetSchoolFromTenant2UsingATenant2Profile
  ✅ Status code is 200
  ✅ Response Content-Type header should match profile usage
  ✅ Response should not contain a property not included in the Tenant2 test profile
  ✅ The value of the property included in the Tenant2 test profile should match the expected value for Tenant2

✅ Resources / Setup / Create Tenant1 School

ResourcesSetupCreateTenant1School
  ✅ Status code is 201

✅ Resources / Setup / Create Tenant2 School

ResourcesSetupCreateTenant2School
  ✅ Status code is 201

✅ Resources / Tenant1 Requests / Delete School

ResourcesTenant1RequestsDeleteSchool
  ✅ Status code is 204

✅ Resources / Tenant1 Requests / Delete Tenant2 School

ResourcesTenant1RequestsDeleteTenant2School
  ✅ Status code is 404

✅ Resources / Tenant1 Requests / Get Composite Enrollment

ResourcesTenant1RequestsGetCompositeEnrollment
  ✅ Status code is 200

✅ Resources / Tenant1 Requests / Get School

ResourcesTenant1RequestsGetSchool
  ✅ Status code is 200

✅ Resources / Tenant1 Requests / Get School with Tenant2 SchoolId

ResourcesTenant1RequestsGetSchoolWithTenant2SchoolId
  ✅ Status code is 404

✅ Resources / Tenant1 Requests / Get Schools Deletes

ResourcesTenant1RequestsGetSchoolsDeletes
  ✅ Status code is 200
  ✅ Response should include deleted Id

✅ Resources / Tenant1 Requests / Get Schools Key Changes

ResourcesTenant1RequestsGetSchoolsKeyChanges
  ✅ Status code is 200

✅ Resources / Tenant2 Requests / Delete School

ResourcesTenant2RequestsDeleteSchool
  ✅ Status code is 204

✅ Resources / Tenant2 Requests / Delete Tenant1 School

ResourcesTenant2RequestsDeleteTenant1School
  ✅ Status code is 404

✅ Resources / Tenant2 Requests / Get Composite Enrollment

ResourcesTenant2RequestsGetCompositeEnrollment
  ✅ Status code is 200

✅ Resources / Tenant2 Requests / Get School

ResourcesTenant2RequestsGetSchool
  ✅ Status code is 200

✅ Resources / Tenant2 Requests / Get School with Tenant1 SchoolId

ResourcesTenant2RequestsGetSchoolWithTenant1SchoolId
  ✅ Status code is 404

✅ Resources / Tenant2 Requests / Get Schools Deletes

ResourcesTenant2RequestsGetSchoolsDeletes
  ✅ Status code is 200
  ✅ Response should include deleted Id

✅ Resources / Tenant2 Requests / Get Schools Key Changes

ResourcesTenant2RequestsGetSchoolsKeyChanges
  ✅ Status code is 200

✅ Token Info / Token Info (Tenant1)

TokenInfoTokenInfoTenant1
  ✅ Status code is 200
  ✅ Client Id should be Tenant1 ApiKey

✅ Token Info / Token Info (Tenant2)

TokenInfoTokenInfoTenant2
  ✅ Status code is 200
  ✅ Client Id should be Tenant2 ApiKey

✅ Version Endpoints / Get Versions (root)

VersionEndpointsGetVersionsRoot
  ✅ Status code is 200
  ✅ Version urls should include the {tenantIdentifier} placeholder