diff --git a/src/EdFi.AnalyticsMiddleTier.DataStandard2/RLS/MSSQL/0007-View-rls_UserAuthorization-Create.sql b/src/EdFi.AnalyticsMiddleTier.DataStandard2/RLS/MSSQL/0007-View-rls_UserAuthorization-Create.sql index dc5e0735..902b5c0c 100644 --- a/src/EdFi.AnalyticsMiddleTier.DataStandard2/RLS/MSSQL/0007-View-rls_UserAuthorization-Create.sql +++ b/src/EdFi.AnalyticsMiddleTier.DataStandard2/RLS/MSSQL/0007-View-rls_UserAuthorization-Create.sql @@ -46,7 +46,11 @@ AS WHEN 'AuthorizationScope.District' THEN 'ALL' ELSE CAST(staffToScopeMap.EducationOrganizationId AS VARCHAR) - END AS SchoolPermission + END AS SchoolPermission, + CASE staffToScopeMap.UserScope + WHEN 'AuthorizationScope.District' + THEN staffToScopeMap.EducationOrganizationId + END AS DistrictId FROM staffToScopeMap LEFT OUTER JOIN diff --git a/src/EdFi.AnalyticsMiddleTier.DataStandard31/RLS/MSSQL/0007-View-UserAuthorization-Create.sql b/src/EdFi.AnalyticsMiddleTier.DataStandard31/RLS/MSSQL/0007-View-UserAuthorization-Create.sql index 5acb492b..93cb570f 100644 --- a/src/EdFi.AnalyticsMiddleTier.DataStandard31/RLS/MSSQL/0007-View-UserAuthorization-Create.sql +++ b/src/EdFi.AnalyticsMiddleTier.DataStandard31/RLS/MSSQL/0007-View-UserAuthorization-Create.sql @@ -55,7 +55,11 @@ SELECT DISTINCT staffToScopeMap.StaffUniqueId AS UserKey WHEN 'AuthorizationScope.District' THEN 'ALL' ELSE CAST(staffToScopeMap.EducationOrganizationId AS VARCHAR) - END AS SchoolPermission + END AS SchoolPermission, + CASE staffToScopeMap.UserScope + WHEN 'AuthorizationScope.District' + THEN staffToScopeMap.EducationOrganizationId + END AS DistrictId FROM staffToScopeMap LEFT OUTER JOIN edfi.StaffSectionAssociation diff --git a/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/MSSQL/0007-View-UserAuthorization-Create.sql b/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/MSSQL/0007-View-UserAuthorization-Create.sql index 5acb492b..93cb570f 100644 --- a/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/MSSQL/0007-View-UserAuthorization-Create.sql +++ b/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/MSSQL/0007-View-UserAuthorization-Create.sql @@ -55,7 +55,11 @@ SELECT DISTINCT staffToScopeMap.StaffUniqueId AS UserKey WHEN 'AuthorizationScope.District' THEN 'ALL' ELSE CAST(staffToScopeMap.EducationOrganizationId AS VARCHAR) - END AS SchoolPermission + END AS SchoolPermission, + CASE staffToScopeMap.UserScope + WHEN 'AuthorizationScope.District' + THEN staffToScopeMap.EducationOrganizationId + END AS DistrictId FROM staffToScopeMap LEFT OUTER JOIN edfi.StaffSectionAssociation diff --git a/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/PostgreSQL/0007-View-rls_UserAuthorization-Create.sql b/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/PostgreSQL/0007-View-rls_UserAuthorization-Create.sql index ef16d610..05e6af36 100644 --- a/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/PostgreSQL/0007-View-rls_UserAuthorization-Create.sql +++ b/src/EdFi.AnalyticsMiddleTier.DataStandard32/RLS/PostgreSQL/0007-View-rls_UserAuthorization-Create.sql @@ -43,7 +43,11 @@ AS WHEN 'AuthorizationScope.District' THEN 'ALL' ELSE CAST(staffToScopeMap.EducationOrganizationId AS VARCHAR) - END AS SchoolPermission + END AS SchoolPermission, + CASE staffToScopeMap.UserScope + WHEN 'AuthorizationScope.District' + THEN staffToScopeMap.EducationOrganizationId + END AS DistrictId FROM staffToScopeMap LEFT OUTER JOIN diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/Classes/UserAuthorization.cs b/src/EdFi.AnalyticsMiddleTier.Tests/Classes/UserAuthorization.cs index afdd8420..66b008d6 100644 --- a/src/EdFi.AnalyticsMiddleTier.Tests/Classes/UserAuthorization.cs +++ b/src/EdFi.AnalyticsMiddleTier.Tests/Classes/UserAuthorization.cs @@ -15,5 +15,6 @@ public class UserAuthorization public string StudentPermission { get; set; } //(varchar(3), not null) public string SectionPermission { get; set; } //(varchar(50), null) public string SchoolPermission { get; set; } //(varchar(30), null) + public int? DistrictId { get; set; } //(int, null) } } \ No newline at end of file diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/Dimensions/When_querying_the_UserAuthorization_view.cs b/src/EdFi.AnalyticsMiddleTier.Tests/Dimensions/When_querying_the_UserAuthorization_view.cs index 180e0fb3..d72b7484 100644 --- a/src/EdFi.AnalyticsMiddleTier.Tests/Dimensions/When_querying_the_UserAuthorization_view.cs +++ b/src/EdFi.AnalyticsMiddleTier.Tests/Dimensions/When_querying_the_UserAuthorization_view.cs @@ -76,6 +76,12 @@ public class Given_an_StaffEducationOrganizationAssignmentAssociation_with_Autho { public Given_an_StaffEducationOrganizationAssignmentAssociation_with_AuthorizationScope_equal_to_District(TestHarness dataStandard) => SetDataStandard(dataStandard); + [Test] + public void Then_DistrictId_with_UserScope_equal_to_District_is_returned_properly() + { + (bool success, string errorMessage) testResult = DataStandard.RunTestCase($"{TestCasesFolder}.querying_DistrictId_with_UserScope_equal_to_District.json"); + testResult.success.ShouldBe(true, testResult.errorMessage); + } [Test] public void Then_SchoolPermission_with_UserScope_equal_to_District_is_returned_properly() { @@ -97,6 +103,13 @@ public class Given_an_StaffEducationOrganizationAssignmentAssociation_with_Autho { public Given_an_StaffEducationOrganizationAssignmentAssociation_with_AuthorizationScope_equal_to_School(TestHarness dataStandard) => SetDataStandard(dataStandard); + [Test] + public void Then_DistrictId_with_UserScope_equal_to_School_is_returned_properly() + { + (bool success, string errorMessage) testResult = DataStandard.RunTestCase($"{TestCasesFolder}.querying_DistrictId_with_UserScope_equal_to_School.json"); + testResult.success.ShouldBe(true, testResult.errorMessage); + } + [Test] public void Then_SchoolPermission_with_UserScope_equal_to_School_is_returned_properly() { @@ -118,6 +131,13 @@ public class Given_an_StaffEducationOrganizationAssignmentAssociation_with_Autho { public Given_an_StaffEducationOrganizationAssignmentAssociation_with_AuthorizationScope_equal_to_Section(TestHarness dataStandard) => SetDataStandard(dataStandard); + [Test] + public void Then_DistrictId_with_UserScope_equal_to_Section_is_returned_properly() + { + (bool success, string errorMessage) testResult = DataStandard.RunTestCase($"{TestCasesFolder}.querying_DistrictId_with_UserScope_equal_to_Section.json"); + testResult.success.ShouldBe(true, testResult.errorMessage); + } + [Test] public void Then_SchoolPermission_with_UserScope_equal_to_Section_is_returned_properly() { diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/EdFi.AnalyticsMiddleTier.Tests.csproj b/src/EdFi.AnalyticsMiddleTier.Tests/EdFi.AnalyticsMiddleTier.Tests.csproj index 03f01352..aa10542d 100644 --- a/src/EdFi.AnalyticsMiddleTier.Tests/EdFi.AnalyticsMiddleTier.Tests.csproj +++ b/src/EdFi.AnalyticsMiddleTier.Tests/EdFi.AnalyticsMiddleTier.Tests.csproj @@ -1,5 +1,8 @@  - + + 8.0 + + netcoreapp3.1 diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/0001_view_should_match_column_dictionary.json b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/0001_view_should_match_column_dictionary.json index dac618c8..275e092c 100644 --- a/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/0001_view_should_match_column_dictionary.json +++ b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/0001_view_should_match_column_dictionary.json @@ -21,6 +21,10 @@ { "ColumnName": "SchoolPermission", "DataType": "varchar" + }, + { + "ColumnName": "DistrictId", + "DataType": "int" } ] } \ No newline at end of file diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_District.json b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_District.json new file mode 100644 index 00000000..1dd1a690 --- /dev/null +++ b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_District.json @@ -0,0 +1,12 @@ +{ + "DBMS": "Any", + "ControlDataInsertion": "", + "DropControlData": "", + "Query": "select UserScope, DistrictId from analytics.rls_UserAuthorization where UserKey = 13449", + "Result": [ + { + "UserScope": "AuthorizationScope.District", + "DistrictId": 867530 + } + ] +} \ No newline at end of file diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_School.json b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_School.json new file mode 100644 index 00000000..3f2efafb --- /dev/null +++ b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_School.json @@ -0,0 +1,12 @@ +{ + "DBMS": "Any", + "ControlDataInsertion": "", + "DropControlData": "", + "Query": "select UserScope, DistrictId from analytics.rls_UserAuthorization where UserKey = 13630", + "Result": [ + { + "UserScope": "AuthorizationScope.School", + "DistrictId": null + } + ] +} \ No newline at end of file diff --git a/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_Section.json b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_Section.json new file mode 100644 index 00000000..498624f4 --- /dev/null +++ b/src/EdFi.AnalyticsMiddleTier.Tests/TestCases/UserAuthorization/querying_DistrictId_with_UserScope_equal_to_Section.json @@ -0,0 +1,12 @@ +{ + "DBMS": "Any", + "ControlDataInsertion": "", + "DropControlData": "", + "Query": "select UserScope, DistrictId from analytics.rls_UserAuthorization where UserKey = 11331", + "Result": [ + { + "UserScope": "AuthorizationScope.Section", + "DistrictId": null + } + ] +} \ No newline at end of file