#68 Clean vote and citizen Entity

remove last warnings
This commit is contained in:
2021-03-03 02:25:24 +01:00
parent 2e8215eafc
commit 79feed54dd
17 changed files with 52 additions and 142 deletions

View File

@@ -32,13 +32,12 @@ class Citizen(
override val id: UUID = UUID.randomUUID(), override val id: UUID = UUID.randomUUID(),
override val name: Name, override val name: Name,
override val email: String, override val email: String,
override val birthday: DateTime, val birthday: DateTime,
override val voteAnonymous: Boolean = true, override val voteAnonymous: Boolean = true,
override val followAnonymous: Boolean = true, override val followAnonymous: Boolean = true,
override val user: User, override val user: User,
deletedAt: DateTime? = null deletedAt: DateTime? = null
) : CitizenFull, ) : CitizenWithEmail,
CitizenBasicI,
CitizenCreatorI, CitizenCreatorI,
CitizenWithUserI, CitizenWithUserI,
CitizenRef(id), CitizenRef(id),
@@ -75,33 +74,14 @@ interface CitizenCreatorI : CitizenWithUserI, CitizenWithEmail, CitizenCartI, De
override val deletedAt: DateTime? override val deletedAt: DateTime?
} }
@Deprecated("")
data class CitizenBasic(
override var id: UUID = UUID.randomUUID(),
override var name: Name,
override var email: String,
override var birthday: DateTime,
override var voteAnonymous: Boolean = true,
override var followAnonymous: Boolean = true,
override val user: User,
override val deletedAt: DateTime? = null
) : CitizenBasicI,
CitizenRefWithUser(id, user),
DeletedAt by DeletedAt.Imp(deletedAt)
@Deprecated("")
open class CitizenSimple(
id: UUID = UUID.randomUUID(),
var name: Name,
user: UserRef
) : CitizenRefWithUser(id, user)
class CitizenCart( class CitizenCart(
id: UUID = UUID.randomUUID(), id: UUID = UUID.randomUUID(),
override val name: Name, override val name: Name,
override val user: UserRef override val user: UserRef,
override val deletedAt: DateTime? = null,
) : CitizenRef(id), ) : CitizenRef(id),
CitizenCartI CitizenCartI,
DeletedAt by DeletedAt.Imp(deletedAt)
interface CitizenCartI : CitizenI, CitizenWithUserI { interface CitizenCartI : CitizenI, CitizenWithUserI {
val name: Name val name: Name
@@ -133,19 +113,6 @@ interface CitizenI : EntityI {
} }
} }
@Deprecated("")
interface CitizenBasicI : CitizenWithUserI, CitizenWithEmail, DeletedAt {
val name: Name
val birthday: DateTime
val voteAnonymous: Boolean
val followAnonymous: Boolean
}
@Deprecated("")
interface CitizenFull : CitizenBasicI {
override val user: User
}
interface CitizenWithUserI : CitizenI { interface CitizenWithUserI : CitizenI {
val user: UserI val user: UserI
} }

View File

@@ -35,7 +35,7 @@ class CitizenRepository(override var requester: Requester) : RepositoryI {
sort: String? = null, sort: String? = null,
direction: RepositoryI.Direction? = null, direction: RepositoryI.Direction? = null,
search: String? = null search: String? = null
): Paginated<CitizenBasic> = requester ): Paginated<CitizenCart> = requester
.getFunction("find_citizens") .getFunction("find_citizens")
.select( .select(
page, page,

View File

@@ -9,7 +9,7 @@ import fr.dcproject.common.entity.TargetRef
import fr.dcproject.common.entity.VersionableId import fr.dcproject.common.entity.VersionableId
import fr.dcproject.component.article.ArticleForListing import fr.dcproject.component.article.ArticleForListing
import fr.dcproject.component.article.ArticleI import fr.dcproject.component.article.ArticleI
import fr.dcproject.component.citizen.CitizenSimple import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenWithUserI import fr.dcproject.component.citizen.CitizenWithUserI
import fr.dcproject.component.constitution.ConstitutionSimple.TitleSimple import fr.dcproject.component.constitution.ConstitutionSimple.TitleSimple
import java.util.UUID import java.util.UUID
@@ -21,8 +21,8 @@ class Constitution(
titles: MutableList<TitleSimple<ArticleForListing>> = mutableListOf(), titles: MutableList<TitleSimple<ArticleForListing>> = mutableListOf(),
draft: Boolean = false, draft: Boolean = false,
lastVersion: Boolean = false, lastVersion: Boolean = false,
override val createdBy: CitizenSimple override val createdBy: CitizenCreator
) : ConstitutionSimple<CitizenSimple, TitleSimple<ArticleForListing>>( ) : ConstitutionSimple<CitizenCreator, TitleSimple<ArticleForListing>>(
id, id,
title = title, title = title,
anonymous = anonymous, anonymous = anonymous,

View File

@@ -8,7 +8,7 @@ import fr.dcproject.common.entity.EntityI
import fr.dcproject.common.entity.TargetRef import fr.dcproject.common.entity.TargetRef
import fr.dcproject.component.article.ArticleRepository import fr.dcproject.component.article.ArticleRepository
import fr.dcproject.component.article.ArticleWithTitleI import fr.dcproject.component.article.ArticleWithTitleI
import fr.dcproject.component.citizen.CitizenBasicI import fr.dcproject.component.citizen.CitizenCreatorI
import fr.dcproject.component.citizen.CitizenRepository import fr.dcproject.component.citizen.CitizenRepository
import fr.dcproject.component.follow.FollowForView import fr.dcproject.component.follow.FollowForView
import java.util.UUID import java.util.UUID
@@ -42,7 +42,7 @@ class NotificationEmailSender(
} }
} }
private fun generateHtmlContent(citizen: CitizenBasicI, target: EntityI): String? { private fun generateHtmlContent(citizen: CitizenCreatorI, target: EntityI): String? {
return when (target) { return when (target) {
is ArticleWithTitleI -> """ is ArticleWithTitleI -> """
Hello ${citizen.name.getFullName()},<br/> Hello ${citizen.name.getFullName()},<br/>
@@ -52,7 +52,7 @@ class NotificationEmailSender(
} }
} }
private fun generateContent(citizen: CitizenBasicI, target: EntityI): String { private fun generateContent(citizen: CitizenCreatorI, target: EntityI): String {
return when (target) { return when (target) {
is ArticleWithTitleI -> """ is ArticleWithTitleI -> """
Hello ${citizen.name.getFullName()}, Hello ${citizen.name.getFullName()},

View File

@@ -6,7 +6,7 @@ import fr.dcproject.common.security.AccessControl
import fr.dcproject.common.security.AccessResponse import fr.dcproject.common.security.AccessResponse
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.vote.entity.VoteForUpdateI import fr.dcproject.component.vote.entity.VoteForUpdateI
import fr.dcproject.component.vote.entity.Vote as VoteEntity import fr.dcproject.component.vote.entity.VoteForView as VoteEntity
class VoteAccessControl : AccessControl() { class VoteAccessControl : AccessControl() {
fun <S> canCreate(subject: VoteForUpdateI<S, *>, citizen: CitizenI?): AccessResponse where S : DeletedAt, S : TargetI = when { fun <S> canCreate(subject: VoteForUpdateI<S, *>, citizen: CitizenI?): AccessResponse where S : DeletedAt, S : TargetI = when {

View File

@@ -15,7 +15,7 @@ import fr.postgresjson.connexion.Requester
import fr.postgresjson.repository.RepositoryI import fr.postgresjson.repository.RepositoryI
import java.util.UUID import java.util.UUID
import fr.dcproject.component.citizen.Citizen as CitizenEntity import fr.dcproject.component.citizen.Citizen as CitizenEntity
import fr.dcproject.component.vote.entity.Vote as VoteEntity import fr.dcproject.component.vote.entity.VoteForView as VoteEntity
abstract class VoteRepositoryAbs<T : TargetI>(override var requester: Requester) : RepositoryI { abstract class VoteRepositoryAbs<T : TargetI>(override var requester: Requester) : RepositoryI {
fun vote(vote: VoteForUpdateI<T, *>, anonymous: Boolean? = null): VoteAggregation { fun vote(vote: VoteForUpdateI<T, *>, anonymous: Boolean? = null): VoteAggregation {

View File

@@ -7,22 +7,21 @@ import fr.dcproject.common.entity.ExtraI
import fr.dcproject.common.entity.HasTarget import fr.dcproject.common.entity.HasTarget
import fr.dcproject.common.entity.TargetI import fr.dcproject.common.entity.TargetI
import fr.dcproject.common.entity.UpdatedAt import fr.dcproject.common.entity.UpdatedAt
import fr.dcproject.component.citizen.CitizenBasic import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenBasicI import fr.dcproject.component.citizen.CitizenCreatorI
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import java.util.UUID import java.util.UUID
@Deprecated("") class VoteForView<T : TargetI>(
class Vote<T : TargetI>(
id: UUID = UUID.randomUUID(), id: UUID = UUID.randomUUID(),
override val createdBy: CitizenBasic, override val createdBy: CitizenCreator,
override val target: T, override val target: T,
var note: Int, var note: Int,
var anonymous: Boolean = true var anonymous: Boolean = true
) : ExtraI<T, CitizenBasicI>, ) : ExtraI<T, CitizenCreatorI>,
VoteRef(id), VoteRef(id),
CreatedAt by CreatedAt.Imp(), CreatedAt by CreatedAt.Imp(),
CreatedBy<CitizenBasicI> by CreatedBy.Imp(createdBy), CreatedBy<CitizenCreatorI> by CreatedBy.Imp(createdBy),
UpdatedAt by UpdatedAt.Imp() { UpdatedAt by UpdatedAt.Imp() {
init { init {
if (note > 1 && note < -1) { if (note > 1 && note < -1) {

View File

@@ -1,6 +1,5 @@
package fr.dcproject.component.workgroup package fr.dcproject.component.workgroup
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCreator import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.citizen.CitizenRef import fr.dcproject.component.citizen.CitizenRef
@@ -59,24 +58,24 @@ class WorkgroupRepository(override var requester: Requester) : RepositoryI {
"members" to Member(citizen, roles).serialize() "members" to Member(citizen, roles).serialize()
) )
fun <Z : CitizenI> addMembers(workgroup: WorkgroupI, members: List<Member<Z>>): List<Member<CitizenBasic>> = requester fun <Z : CitizenI> addMembers(workgroup: WorkgroupI, members: List<Member<Z>>): List<Member<CitizenCreator>> = requester
.getFunction("add_workgroup_members") .getFunction("add_workgroup_members")
.select( .select(
"id" to workgroup.id, "id" to workgroup.id,
"members" to members.serialize() "members" to members.serialize()
) )
fun <Z : CitizenI> removeMember(workgroup: WorkgroupI, memberToDelete: Member<Z>): List<Member<CitizenBasic>> = fun <Z : CitizenI> removeMember(workgroup: WorkgroupI, memberToDelete: Member<Z>): List<Member<CitizenCreator>> =
removeMembers(workgroup, listOf(memberToDelete)) removeMembers(workgroup, listOf(memberToDelete))
fun <Z : CitizenI> removeMembers(workgroup: WorkgroupI, membersToDelete: List<Member<Z>>): List<Member<CitizenBasic>> = requester fun <Z : CitizenI> removeMembers(workgroup: WorkgroupI, membersToDelete: List<Member<Z>>): List<Member<CitizenCreator>> = requester
.getFunction("remove_workgroup_members") .getFunction("remove_workgroup_members")
.select( .select(
"id" to workgroup.id, "id" to workgroup.id,
"members" to membersToDelete "members" to membersToDelete
) )
fun <Z : CitizenI> updateMembers(workgroup: WorkgroupI, members: List<Member<Z>>): List<Member<CitizenBasic>> = requester fun <Z : CitizenI> updateMembers(workgroup: WorkgroupI, members: List<Member<Z>>): List<Member<CitizenCreator>> = requester
.getFunction("update_workgroup_members") .getFunction("update_workgroup_members")
.select( .select(
"id" to workgroup.id, "id" to workgroup.id,

View File

@@ -9,6 +9,7 @@ import fr.dcproject.common.email.Mailer
import io.ktor.locations.KtorExperimentalLocationsAPI import io.ktor.locations.KtorExperimentalLocationsAPI
import io.ktor.server.testing.withTestApplication import io.ktor.server.testing.withTestApplication
import io.ktor.util.KtorExperimentalAPI import io.ktor.util.KtorExperimentalAPI
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.InternalCoroutinesApi
import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags import org.junit.jupiter.api.Tags
@@ -24,6 +25,7 @@ import org.koin.test.get
@Tags(Tag("functional")) @Tags(Tag("functional"))
class MailerTest : KoinTest, AutoCloseKoinTest() { class MailerTest : KoinTest, AutoCloseKoinTest() {
@InternalCoroutinesApi @InternalCoroutinesApi
@ExperimentalCoroutinesApi
@Test @Test
@Tags(Tag("online")) @Tags(Tag("online"))
fun `can be send an email`() { fun `can be send an email`() {

View File

@@ -8,6 +8,7 @@ import fr.dcproject.component.citizen.CitizenRef
import io.ktor.locations.KtorExperimentalLocationsAPI import io.ktor.locations.KtorExperimentalLocationsAPI
import io.ktor.server.testing.withTestApplication import io.ktor.server.testing.withTestApplication
import io.ktor.util.KtorExperimentalAPI import io.ktor.util.KtorExperimentalAPI
import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.amshove.kluent.`should be equal to` import org.amshove.kluent.`should be equal to`
import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags import org.junit.jupiter.api.Tags
@@ -19,6 +20,7 @@ import java.util.UUID
@KtorExperimentalLocationsAPI @KtorExperimentalLocationsAPI
@KtorExperimentalAPI @KtorExperimentalAPI
@ExperimentalCoroutinesApi
@TestInstance(PER_CLASS) @TestInstance(PER_CLASS)
@Tags(Tag("functional")) @Tags(Tag("functional"))
class ViewTest { class ViewTest {

View File

@@ -46,13 +46,13 @@ fun createConstitution(
): Constitution { ): Constitution {
val constitutionRepository: ConstitutionRepository by lazy { GlobalContext.get().koin.get() } val constitutionRepository: ConstitutionRepository by lazy { GlobalContext.get().koin.get() }
val createdBy: CitizenWithUserI = createCitizen(createdBy) val creator: CitizenWithUserI = createCitizen(createdBy)
val constitution = ConstitutionSimple( val constitution = ConstitutionSimple(
id = id ?: UUID.randomUUID(), id = id ?: UUID.randomUUID(),
title = LoremIpsum().getTitle(3), title = LoremIpsum().getTitle(3),
titles = titles ?: createTitles(5), titles = titles ?: createTitles(5),
createdBy = createdBy, createdBy = creator,
versionId = UUID.randomUUID() versionId = UUID.randomUUID()
) )
return constitutionRepository.upsert(constitution) ?: error("Cannot create constitution") return constitutionRepository.upsert(constitution) ?: error("Cannot create constitution")

View File

@@ -34,6 +34,7 @@ fun WorkgroupForView<CitizenCreator>.`With members`(
addMemberToWorkgroup(this, *member) addMemberToWorkgroup(this, *member)
} }
@Suppress("UNCHECKED_CAST")
fun addMemberToWorkgroup(workgroup: WorkgroupForView<CitizenCreator>, vararg membersNames: CitizenI.Name) { fun addMemberToWorkgroup(workgroup: WorkgroupForView<CitizenCreator>, vararg membersNames: CitizenI.Name) {
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() } val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
val workgroupRepository: WorkgroupRepository by lazy { GlobalContext.get().koin.get() } val workgroupRepository: WorkgroupRepository by lazy { GlobalContext.get().koin.get() }
@@ -58,8 +59,8 @@ private fun createWorkgroup(
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() } val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
val workgroupRepository: WorkgroupRepository by lazy { GlobalContext.get().koin.get() } val workgroupRepository: WorkgroupRepository by lazy { GlobalContext.get().koin.get() }
val createdBy = createdBy ?: CitizenI.Name("Paul", "Langevin") val creatorName = createdBy ?: CitizenI.Name("Paul", "Langevin")
val creator = citizenRepository.findByName(createdBy) ?: run { val creator = citizenRepository.findByName(creatorName) ?: run {
val username = ("username" + UUID.randomUUID().toString()) val username = ("username" + UUID.randomUUID().toString())
.toLowerCase().replace(' ', '-') .toLowerCase().replace(' ', '-')
val user = UserForCreate( val user = UserForCreate(
@@ -67,7 +68,7 @@ private fun createWorkgroup(
password = "azerty", password = "azerty",
) )
CitizenForCreate( CitizenForCreate(
name = createdBy, name = creatorName,
email = "$username@dc-project.fr", email = "$username@dc-project.fr",
birthday = DateTime.now(), birthday = DateTime.now(),
user = user user = user

View File

@@ -5,7 +5,7 @@ import fr.dcproject.common.security.AccessDecision.GRANTED
import fr.dcproject.component.auth.User import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserI import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.CitizenAccessControl import fr.dcproject.component.citizen.CitizenAccessControl
import fr.dcproject.component.citizen.CitizenBasic import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import org.amshove.kluent.`should be` import org.amshove.kluent.`should be`
import org.joda.time.DateTime import org.joda.time.DateTime
@@ -20,32 +20,26 @@ import org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT
@Execution(CONCURRENT) @Execution(CONCURRENT)
@Tags(Tag("security"), Tag("unit")) @Tags(Tag("security"), Tag("unit"))
internal class `Citizen Access Control` { internal class `Citizen Access Control` {
private val tesla = CitizenBasic( private val tesla = CitizenCart(
user = User( user = User(
username = "nicolas-tesla", username = "nicolas-tesla",
roles = listOf(UserI.Roles.ROLE_USER) roles = listOf(UserI.Roles.ROLE_USER)
), ),
birthday = DateTime.now(),
email = "tesla@best.com",
name = CitizenI.Name("Nicolas", "Tesla") name = CitizenI.Name("Nicolas", "Tesla")
) )
private val einstein = CitizenBasic( private val einstein = CitizenCart(
user = User( user = User(
username = "albert-einstein", username = "albert-einstein",
roles = listOf(UserI.Roles.ROLE_USER) roles = listOf(UserI.Roles.ROLE_USER)
), ),
birthday = DateTime.now(),
email = "einstein@best.com",
name = CitizenI.Name("Albert", "Einstein") name = CitizenI.Name("Albert", "Einstein")
) )
private val curie = CitizenBasic( private val curie = CitizenCart(
user = User( user = User(
username = "marie-curie", username = "marie-curie",
roles = listOf(UserI.Roles.ROLE_USER) roles = listOf(UserI.Roles.ROLE_USER)
), ),
birthday = DateTime.now(),
email = "curie@best.com",
name = CitizenI.Name("Marie", "Curie"), name = CitizenI.Name("Marie", "Curie"),
deletedAt = DateTime.now() deletedAt = DateTime.now()
) )

View File

@@ -6,15 +6,14 @@ import fr.dcproject.component.article.ArticleForView
import fr.dcproject.component.auth.User import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserCreator import fr.dcproject.component.auth.UserCreator
import fr.dcproject.component.auth.UserI import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCart import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenCreator import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.citizen.CitizenRef
import fr.dcproject.component.opinion.OpinionAccessControl import fr.dcproject.component.opinion.OpinionAccessControl
import fr.dcproject.component.opinion.entity.Opinion import fr.dcproject.component.opinion.entity.Opinion
import fr.dcproject.component.opinion.entity.OpinionChoice import fr.dcproject.component.opinion.entity.OpinionChoice
import org.amshove.kluent.`should be` import org.amshove.kluent.`should be`
import org.joda.time.DateTime
import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
@@ -36,16 +35,8 @@ internal class `Opinion Access Control` {
followAnonymous = false followAnonymous = false
) )
private val einstein = CitizenBasic( private val einstein = CitizenRef(
id = UUID.fromString("319f1226-8f47-4df3-babd-2c7671ad0fbc"), id = UUID.fromString("319f1226-8f47-4df3-babd-2c7671ad0fbc"),
user = User(
username = "albert-einstein",
roles = listOf(UserI.Roles.ROLE_USER)
),
birthday = DateTime.now(),
email = "einstein@best.com",
name = CitizenI.Name("Albert", "Einstein"),
followAnonymous = true
) )
private val einstein2 = CitizenCart( private val einstein2 = CitizenCart(

View File

@@ -1,16 +1,10 @@
package unit.security package unit.security
import fr.dcproject.common.security.AccessDecision.GRANTED import fr.dcproject.common.security.AccessDecision.GRANTED
import fr.dcproject.component.article.ArticleForView import fr.dcproject.component.citizen.CitizenRef
import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.opinion.OpinionChoiceAccessControl import fr.dcproject.component.opinion.OpinionChoiceAccessControl
import fr.dcproject.component.opinion.entity.OpinionChoice import fr.dcproject.component.opinion.entity.OpinionChoice
import org.amshove.kluent.`should be` import org.amshove.kluent.`should be`
import org.joda.time.DateTime
import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
@@ -23,32 +17,12 @@ import java.util.UUID
@Execution(CONCURRENT) @Execution(CONCURRENT)
@Tags(Tag("security"), Tag("unit")) @Tags(Tag("security"), Tag("unit"))
internal class `OpinionChoice Access Control` { internal class `OpinionChoice Access Control` {
private val tesla = CitizenBasic( private val tesla = CitizenRef(
id = UUID.fromString("e6efc288-4283-4729-a268-6debb18de1a0"), id = UUID.fromString("e6efc288-4283-4729-a268-6debb18de1a0"),
user = User(
username = "nicolas-tesla",
roles = listOf(UserI.Roles.ROLE_USER)
),
birthday = DateTime.now(),
email = "tesla@best.com",
name = CitizenI.Name("Nicolas", "Tesla"),
followAnonymous = false
) )
private val tesla2 = CitizenCart( private val tesla2 = CitizenRef(
id = UUID.fromString("e6efc288-4283-4729-a268-6debb18de1a0"), id = UUID.fromString("e6efc288-4283-4729-a268-6debb18de1a0"),
user = User(
username = "nicolas-tesla",
roles = listOf(UserI.Roles.ROLE_USER)
),
name = CitizenI.Name("Nicolas", "Tesla")
)
private val article1 = ArticleForView(
content = "Hi",
createdBy = tesla2,
description = "blablabla",
title = "Super article"
) )
private val choice1 = OpinionChoice( private val choice1 = OpinionChoice(

View File

@@ -4,10 +4,11 @@ import fr.dcproject.common.security.AccessDecision.DENIED
import fr.dcproject.common.security.AccessDecision.GRANTED import fr.dcproject.common.security.AccessDecision.GRANTED
import fr.dcproject.component.article.ArticleForView import fr.dcproject.component.article.ArticleForView
import fr.dcproject.component.auth.User import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserCreator
import fr.dcproject.component.auth.UserI import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.Citizen import fr.dcproject.component.citizen.Citizen
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCart import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.vote.VoteAccessControl import fr.dcproject.component.vote.VoteAccessControl
import fr.dcproject.component.vote.entity.VoteForUpdate import fr.dcproject.component.vote.entity.VoteForUpdate
@@ -20,7 +21,7 @@ import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.parallel.Execution import org.junit.jupiter.api.parallel.Execution
import org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT import org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT
import java.util.UUID import java.util.UUID
import fr.dcproject.component.vote.entity.Vote as VoteEntity import fr.dcproject.component.vote.entity.VoteForView
@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Execution(CONCURRENT) @Execution(CONCURRENT)
@@ -37,13 +38,11 @@ internal class `Vote Access Control` {
name = CitizenI.Name("Nicolas", "Tesla"), name = CitizenI.Name("Nicolas", "Tesla"),
followAnonymous = false followAnonymous = false
) )
private val tesla3 = CitizenBasic( private val tesla3 = CitizenCreator(
id = UUID.fromString("a1e35c99-9d33-4fb4-9201-58d7071243bb"), id = UUID.fromString("a1e35c99-9d33-4fb4-9201-58d7071243bb"),
user = User( user = UserCreator(
username = "nicolas-tesla", username = "nicolas-tesla",
roles = listOf(UserI.Roles.ROLE_USER)
), ),
birthday = DateTime.now(),
email = "tesla@best.com", email = "tesla@best.com",
name = CitizenI.Name("Nicolas", "Tesla"), name = CitizenI.Name("Nicolas", "Tesla"),
followAnonymous = false followAnonymous = false
@@ -77,7 +76,7 @@ internal class `Vote Access Control` {
title = "Super article" title = "Super article"
) )
private val vote1 = VoteEntity( private val vote1 = VoteForView(
createdBy = tesla3, createdBy = tesla3,
target = article1, target = article1,
note = 1 note = 1

View File

@@ -5,14 +5,13 @@ import fr.dcproject.common.security.AccessDecision.GRANTED
import fr.dcproject.component.auth.User import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserCreator import fr.dcproject.component.auth.UserCreator
import fr.dcproject.component.auth.UserI import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCart import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenCreator import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.citizen.CitizenRef
import fr.dcproject.component.workgroup.WorkgroupAccessControl import fr.dcproject.component.workgroup.WorkgroupAccessControl
import fr.dcproject.component.workgroup.WorkgroupWithMembersI import fr.dcproject.component.workgroup.WorkgroupWithMembersI
import org.amshove.kluent.`should be` import org.amshove.kluent.`should be`
import org.joda.time.DateTime
import org.junit.jupiter.api.Tag import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
@@ -35,25 +34,8 @@ internal class `Workgroup Access Control` {
followAnonymous = false followAnonymous = false
) )
private val einstein = CitizenBasic( private val einstein = CitizenRef(
id = UUID.fromString("319f1226-8f47-4df3-babd-2c7671ad0fbc"), id = UUID.fromString("319f1226-8f47-4df3-babd-2c7671ad0fbc"),
user = User(
username = "albert-einstein",
roles = listOf(UserI.Roles.ROLE_USER)
),
birthday = DateTime.now(),
email = "einstein@best.com",
name = CitizenI.Name("Albert", "Einstein"),
followAnonymous = true
)
private val einstein2 = CitizenCart(
id = UUID.fromString("319f1226-8f47-4df3-babd-2c7671ad0fbc"),
user = User(
username = "albert-einstein",
roles = listOf(UserI.Roles.ROLE_USER)
),
name = CitizenI.Name("Albert", "Einstein")
) )
private val workgroupPublic = WorkgroupEntity( private val workgroupPublic = WorkgroupEntity(