diff --git a/article-api/src/test/scala/no/ndla/articleapi/service/ReadServiceTest.scala b/article-api/src/test/scala/no/ndla/articleapi/service/ReadServiceTest.scala index 5f5b34cbc..f0abc934b 100644 --- a/article-api/src/test/scala/no/ndla/articleapi/service/ReadServiceTest.scala +++ b/article-api/src/test/scala/no/ndla/articleapi/service/ReadServiceTest.scala @@ -202,7 +202,7 @@ class ReadServiceTest extends UnitSuite with TestEnvironment { val article1 = TestData.sampleDomainArticle.copy(id = Some(1), availability = Availability.everyone) val article2 = TestData.sampleDomainArticle.copy(id = Some(2), availability = Availability.everyone) val article3 = TestData.sampleDomainArticle.copy(id = Some(3), availability = Availability.teacher) - val teacherUser = FeideExtendedUserInfo("", eduPersonAffiliation = Seq("employee"), "", Seq.empty) + val teacherUser = FeideExtendedUserInfo("", eduPersonAffiliation = Seq("employee"), None, "", Seq.empty) when(feideApiClient.getFeideExtendedUser(any)).thenReturn(Success(teacherUser)) when(articleRepository.withIds(any, any, any)(any)) @@ -229,7 +229,7 @@ class ReadServiceTest extends UnitSuite with TestEnvironment { val article1 = TestData.sampleDomainArticle.copy(id = Some(1), availability = Availability.everyone) val article2 = TestData.sampleDomainArticle.copy(id = Some(2), availability = Availability.everyone) val article3 = TestData.sampleDomainArticle.copy(id = Some(3), availability = Availability.teacher) - val teacherUser = FeideExtendedUserInfo("", eduPersonAffiliation = Seq("student"), "", Seq.empty) + val teacherUser = FeideExtendedUserInfo("", eduPersonAffiliation = Seq("student"), None, "", Seq.empty) when(feideApiClient.getFeideExtendedUser(any)).thenReturn(Success(teacherUser)) when(articleRepository.withIds(any, any, any)(any)) diff --git a/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/ArenaTest.scala b/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/ArenaTest.scala index 5bf199857..3dcee6dfc 100644 --- a/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/ArenaTest.scala +++ b/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/ArenaTest.scala @@ -71,7 +71,7 @@ class ArenaTest when(feideApiClient.getFeideAccessTokenOrFail(any)).thenReturn(Success("notimportante")) when(feideApiClient.getFeideGroups(any)).thenReturn(Success(Seq.empty)) when(feideApiClient.getFeideExtendedUser(any)) - .thenReturn(Success(FeideExtendedUserInfo("", Seq("employee"), "email@ndla.no", Seq("email@ndla.no")))) + .thenReturn(Success(FeideExtendedUserInfo("", Seq("employee"), None, "email@ndla.no", Seq("email@ndla.no")))) when(feideApiClient.getOrganization(any)).thenReturn(Success("zxc")) when(configService.getMyNDLAEnabledOrgs).thenReturn(Success(List("zxc"))) when(clock.now()).thenReturn(someDate) diff --git a/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/CloneFolderTest.scala b/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/CloneFolderTest.scala index 0d4c72700..ca34177a2 100644 --- a/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/CloneFolderTest.scala +++ b/myndla-api/src/test/scala/no/ndla/myndlaapi/e2e/CloneFolderTest.scala @@ -70,7 +70,9 @@ class CloneFolderTest when(feideApiClient.getFeideAccessTokenOrFail(any)).thenReturn(Success("notimportante")) when(feideApiClient.getFeideGroups(any)).thenReturn(Success(Seq.empty)) when(feideApiClient.getFeideExtendedUser(any)) - .thenReturn(Success(FeideExtendedUserInfo("", Seq("employee"), "email@ndla.no", Seq("email@ndla.no")))) + .thenReturn( + Success(FeideExtendedUserInfo("", Seq("employee"), Some("employee"), "email@ndla.no", Seq("email@ndla.no"))) + ) when(feideApiClient.getOrganization(any)).thenReturn(Success("zxc")) when(clock.now()).thenReturn(NDLADate.of(2017, 1, 1, 1, 59)) } diff --git a/myndla-api/src/test/scala/no/ndla/myndlaapi/service/UserServiceTest.scala b/myndla-api/src/test/scala/no/ndla/myndlaapi/service/UserServiceTest.scala index d5e6e34a8..8bce9b05e 100644 --- a/myndla-api/src/test/scala/no/ndla/myndlaapi/service/UserServiceTest.scala +++ b/myndla-api/src/test/scala/no/ndla/myndlaapi/service/UserServiceTest.scala @@ -200,6 +200,7 @@ class UserServiceTest extends UnitTestSuite with TestEnvironment { val feideUserInfo = FeideExtendedUserInfo( displayName = "David", eduPersonAffiliation = Seq("student"), + None, eduPersonPrincipalName = "example@email.com", mail = Seq("example@email.com") ) @@ -329,6 +330,7 @@ class UserServiceTest extends UnitTestSuite with TestEnvironment { val updatedFeideUser = FeideExtendedUserInfo( displayName = "name", eduPersonAffiliation = Seq.empty, + None, eduPersonPrincipalName = "example@email.com", mail = Seq("example@email.com") ) diff --git a/network/src/main/scala/no/ndla/network/clients/FeideApiClient.scala b/network/src/main/scala/no/ndla/network/clients/FeideApiClient.scala index 5bdf755a1..b6b98d190 100644 --- a/network/src/main/scala/no/ndla/network/clients/FeideApiClient.scala +++ b/network/src/main/scala/no/ndla/network/clients/FeideApiClient.scala @@ -46,14 +46,16 @@ object FeideOpenIdUserInfo { case class FeideExtendedUserInfo( displayName: String, eduPersonAffiliation: Seq[String], + eduPersonPrimaryAffiliation: Option[String], eduPersonPrincipalName: String, mail: Seq[String] ) { private def isTeacherAffiliation: Boolean = { - this.eduPersonAffiliation.contains("staff") || - this.eduPersonAffiliation.contains("faculty") || - this.eduPersonAffiliation.contains("employee") + !this.eduPersonPrimaryAffiliation.contains("student") && + (this.eduPersonAffiliation.contains("staff") || + this.eduPersonAffiliation.contains("faculty") || + this.eduPersonAffiliation.contains("employee")) } def isTeacher: Boolean = { diff --git a/network/src/test/scala/no/ndla/network/clients/FeideApiClientTest.scala b/network/src/test/scala/no/ndla/network/clients/FeideApiClientTest.scala new file mode 100644 index 000000000..a00978f31 --- /dev/null +++ b/network/src/test/scala/no/ndla/network/clients/FeideApiClientTest.scala @@ -0,0 +1,47 @@ +/* + * Part of NDLA network + * Copyright (C) 2024 NDLA + * + * See LICENSE + * + */ + +package no.ndla.network.clients + +import no.ndla.network.UnitSuite + +class FeideApiClientTest extends UnitSuite { + + test("testFeideExtendedUserInfo roles") { + val user = FeideExtendedUserInfo("", Seq.empty, None, "", Seq("")) + assert(!user.isTeacher) + + val member = user.copy(eduPersonAffiliation = Seq("member")) + assert(!member.isTeacher) + + val student = user.copy(eduPersonAffiliation = Seq("member", "student")) + assert(!student.isTeacher) + + val studentWithPrimary = + user.copy(eduPersonAffiliation = Seq("member", "student"), eduPersonPrimaryAffiliation = Some("student")) + assert(!studentWithPrimary.isTeacher) + + val staff = user.copy(eduPersonAffiliation = Seq("member", "staff")) + assert(staff.isTeacher) + + val faculty = user.copy(eduPersonAffiliation = Seq("member", "faculty")) + assert(faculty.isTeacher) + + val employee = user.copy(eduPersonAffiliation = Seq("member", "employee")) + assert(employee.isTeacher) + + val employeeWithStudent = user.copy(eduPersonAffiliation = Seq("member", "employee", "student")) + assert(employeeWithStudent.isTeacher) + + val studentWithEmployee = user.copy( + eduPersonAffiliation = Seq("member", "student", "employee"), + eduPersonPrimaryAffiliation = Some("student") + ) + assert(!studentWithEmployee.isTeacher) + } +} diff --git a/search-api/src/test/scala/no/ndla/searchapi/controller/SearchControllerTest.scala b/search-api/src/test/scala/no/ndla/searchapi/controller/SearchControllerTest.scala index e927d6b5d..e818ea58c 100644 --- a/search-api/src/test/scala/no/ndla/searchapi/controller/SearchControllerTest.scala +++ b/search-api/src/test/scala/no/ndla/searchapi/controller/SearchControllerTest.scala @@ -247,6 +247,7 @@ class SearchControllerTest extends UnitSuite with TestEnvironment with TapirCont val teacheruser = FeideExtendedUserInfo( displayName = "Johnny Bravo", eduPersonAffiliation = Seq("employee", "staff"), + eduPersonPrimaryAffiliation = None, eduPersonPrincipalName = "example@email.com", mail = Seq("example@email.com") )