Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import com.normation.rudder.api.WoApiAccountRepository
import java.time.Instant
import zio.syntax.*

class MockServices(newToken: String, accounts: Map[ApiAccountId, ApiAccount] = Map.empty) { self =>
class MockApiAccount(newToken: String, accounts: Map[ApiAccountId, ApiAccount] = Map.empty) { self =>

object apiAccountRepository extends RoApiAccountRepository with WoApiAccountRepository {
override def getById(id: ApiAccountId): IOResult[Option[ApiAccount]] = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class UserApiTest extends ZIOSpecDefault {
)
)

val mockServices = new MockServices(newToken = "generated-test-token", accounts = accounts)
val mockApiAccount = new MockApiAccount(newToken = "generated-test-token", accounts = accounts)

val userService: UserService = new UserService {
// use an user that has access to the api, we do not test authorization checks in this file
Expand All @@ -63,18 +63,18 @@ class UserApiTest extends ZIOSpecDefault {

val modules = List(
new UserApiImpl(
mockServices.apiAccountRepository,
mockServices.apiAccountRepository,
mockApiAccount.apiAccountRepository,
mockApiAccount.apiAccountRepository,
null,
null,
mockServices.tokenGenerator,
mockApiAccount.tokenGenerator,
restTestSetUp.uuidGen,
java.time.Clock.fixed(fixedDate, ZoneOffset.UTC)
)(using AlwaysEnabledPluginStatus)
)

val apiVersions: List[ApiVersion] = ApiVersion(13, true) :: ApiVersion(14, false) :: Nil
val (rudderApi, liftRules) = TraitTestApiFromYamlFiles.buildLiftRules(modules, apiVersions, Some(userService))
val (rudderApi, liftRules) = TraitTestApiFromYamlFiles.buildLiftRules(modules, apiVersions, userService)

val transformations: Map[String, String => String] = Map()

Expand All @@ -92,6 +92,7 @@ class UserApiTest extends ZIOSpecDefault {
yamlSourceDirectory,
yamlDestTmpDirectory,
liftRules,
userService,
Nil,
transformations
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.normation.plugins.AlwaysEnabledPluginStatus
import com.normation.plugins.branding.api.BrandingApi
import com.normation.plugins.branding.api.BrandingApiService
import com.normation.rudder.api.ApiVersion
import com.normation.rudder.rest.TestUserService
import com.normation.rudder.rest.TraitTestApiFromYamlFiles
import com.normation.utils.StringUuidGeneratorImpl
import java.nio.file.Files
Expand Down Expand Up @@ -65,7 +66,8 @@ class BrandingApiTest extends ZIOSpecDefault {
)

val apiVersions = ApiVersion(13, true) :: ApiVersion(14, false) :: Nil
val (rudderApi, liftRules) = TraitTestApiFromYamlFiles.buildLiftRules(modules, apiVersions, None)
val userService = new TestUserService
val (rudderApi, liftRules) = TraitTestApiFromYamlFiles.buildLiftRules(modules, apiVersions, userService)

val transformations: Map[String, String => String] = Map()

Expand All @@ -83,6 +85,7 @@ class BrandingApiTest extends ZIOSpecDefault {
yamlSourceDirectory,
yamlDestTmpDirectory,
liftRules,
userService,
Nil,
transformations
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ import com.normation.rudder.rule.category.RuleCategoryId
import com.normation.rudder.rule.category.RuleCategoryService
import com.normation.rudder.services.eventlog.EventLogDetailsService
import com.normation.rudder.services.modification.DiffService
import com.normation.rudder.tenants.QueryContext
import com.normation.utils.DateFormaterService
import com.normation.utils.DateFormaterService.json.*
import io.scalaland.chimney.PartialTransformer
Expand Down Expand Up @@ -137,15 +138,16 @@ object ChangeRequestChangesJson {
)
}

def from(cr: ChangeRequest)(implicit
def from(cr: ChangeRequest)(using
techniqueByDirective: Map[DirectiveId, Technique],
diffService: DiffService,
nodeGroups: MapView[NodeGroupId, String],
directives: MapView[DirectiveId, Directive],
nodes: MapView[NodeId, String],
allTargets: MapView[RuleTarget, FullRuleTargetInfo],
ruleCategoryService: RuleCategoryService,
rootCategory: RuleCategory
rootCategory: RuleCategory,
qc: QueryContext
): PureResult[ChangeRequestChangesJson] = {
cr match {
case cr: ConfigurationChangeRequest =>
Expand Down Expand Up @@ -187,15 +189,16 @@ final case class ConfigurationChangesJson(

object ConfigurationChangesJson {

implicit def transformer(implicit
implicit def transformer(using
techniqueByDirective: Map[DirectiveId, Technique],
diffService: DiffService,
nodeGroups: MapView[NodeGroupId, String],
directives: MapView[DirectiveId, Directive],
nodes: MapView[NodeId, String],
allTargets: MapView[RuleTarget, FullRuleTargetInfo],
ruleCategoryService: RuleCategoryService,
rootCategory: RuleCategory
rootCategory: RuleCategory,
qc: QueryContext
): PartialTransformer[ConfigurationChangeRequest, ConfigurationChangesJson] = {
PartialTransformer
.define[ConfigurationChangeRequest, ConfigurationChangesJson]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ import com.normation.rudder.domain.queries.Query
import com.normation.rudder.domain.workflows.*
import com.normation.rudder.rule.category.RuleCategoryId
import com.normation.rudder.services.modification.DiffService
import com.normation.rudder.tenants.QueryContext
import com.typesafe.config.ConfigValue
import io.scalaland.chimney.PartialTransformer
import io.scalaland.chimney.Transformer
Expand Down Expand Up @@ -138,9 +139,10 @@ object ChangeRequestJson {
}

// Entrypoint to convert the whole tree of ChangeRequest + some context to a serializable object ChangeRequestJson
def from(cr: ChangeRequest, status: WorkflowNodeId, isAcceptable: Boolean)(implicit
def from(cr: ChangeRequest, status: WorkflowNodeId, isAcceptable: Boolean)(using
techniqueByDirective: Map[DirectiveId, Technique],
diffService: DiffService
diffService: DiffService,
qc: QueryContext
): PureResult[ChangeRequestJson] = {
val changesJson: PureResult[Option[ConfigurationChangeRequestJson]] = cr match {
case cr: ConfigurationChangeRequest => {
Expand Down Expand Up @@ -344,15 +346,17 @@ object DirectiveChangeJson {
}
}

implicit def createTransformer(implicit
technique: Technique
implicit def createTransformer(using
technique: Technique,
qc: QueryContext
): Transformer[AddDirectiveDiff, DirectiveCreateChangeJson] = {
case AddDirectiveDiff(techniqueName, directive) =>
DirectiveCreateChangeJson(JRDirective.fromDirective(technique, directive, None))
}

implicit def deleteTransformer(implicit
technique: Technique
technique: Technique,
qc: QueryContext
): Transformer[DeleteDirectiveDiff, DirectiveDeleteChangeJson] = {
case DeleteDirectiveDiff(_, directive) =>
DirectiveDeleteChangeJson(JRDirective.fromDirective(technique, directive, None))
Expand Down Expand Up @@ -383,7 +387,8 @@ object DirectiveChangeJson {
implicit def transformDirectiveDiff(implicit
change: DirectiveChange,
technique: Technique,
diffService: DiffService
diffService: DiffService,
qc: QueryContext
): PartialTransformer[ChangeRequestDirectiveDiff, DirectiveChangeJson] = {
PartialTransformer
.define[ChangeRequestDirectiveDiff, DirectiveChangeJson]
Expand Down Expand Up @@ -413,7 +418,8 @@ object DirectiveChangeActionJson {

implicit def transformer(implicit
technique: Technique,
diffService: DiffService
diffService: DiffService,
qc: QueryContext
): PartialTransformer[DirectiveChange, DirectiveChangeActionJson] = {
case (source, _) =>
implicit val change = source
Expand Down Expand Up @@ -821,12 +827,17 @@ object GlobalParameterChangeJson {
}
}

implicit val jrGlobalParameterTransformer: Transformer[GlobalParameter, JRGlobalParameter] =
implicit def jrGlobalParameterTransformer(using qc: QueryContext): Transformer[GlobalParameter, JRGlobalParameter] =
JRGlobalParameter.fromGlobalParameter(_, None)
implicit val createTransformer: Transformer[AddGlobalParameterDiff, GlobalParameterCreateChangeJson] =

implicit def createTransformer(using qc: QueryContext): Transformer[AddGlobalParameterDiff, GlobalParameterCreateChangeJson] =
Transformer.derive[AddGlobalParameterDiff, GlobalParameterCreateChangeJson]
implicit val deleteTransformer: Transformer[DeleteGlobalParameterDiff, GlobalParameterDeleteChangeJson] =

implicit def deleteTransformer(using
qc: QueryContext
): Transformer[DeleteGlobalParameterDiff, GlobalParameterDeleteChangeJson] =
Transformer.derive[DeleteGlobalParameterDiff, GlobalParameterDeleteChangeJson]

implicit def modifyTransformer(implicit
change: GlobalParameterChange,
diffService: DiffService
Expand All @@ -841,9 +852,10 @@ object GlobalParameterChangeJson {
Result.fromEitherString(result)
}

implicit def transformer(implicit
implicit def transformer(using
change: GlobalParameterChange,
diffService: DiffService
diffService: DiffService,
qc: QueryContext
): PartialTransformer[ChangeRequestGlobalParameterDiff, GlobalParameterChangeJson] = {
PartialTransformer
.define[ChangeRequestGlobalParameterDiff, GlobalParameterChangeJson]
Expand All @@ -868,10 +880,11 @@ final case class GlobalParameterChangeActionJson(
)

object GlobalParameterChangeActionJson {
import GlobalParameterChangeJson.*
import com.normation.plugins.changevalidation.GlobalParameterChangeJson.*

implicit def transformer(implicit
diffService: DiffService
implicit def transformer(using
diffService: DiffService,
qc: QueryContext
): PartialTransformer[GlobalParameterChange, GlobalParameterChangeActionJson] = {
case (source, _) =>
implicit val change = source
Expand Down Expand Up @@ -901,9 +914,10 @@ final case class ConfigurationChangeRequestJson(
)

object ConfigurationChangeRequestJson {
implicit def transformer(implicit
implicit def transformer(using
techniqueByDirective: Map[DirectiveId, Technique],
diffService: DiffService
diffService: DiffService,
qc: QueryContext
): PartialTransformer[ConfigurationChangeRequest, ConfigurationChangeRequestJson] = {
PartialTransformer
.define[ConfigurationChangeRequest, ConfigurationChangeRequestJson]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,15 +305,15 @@ class WorkflowInternalApiImpl(
}
}

private def getDirectives: IOResult[MapView[DirectiveId, Directive]] = {
private def getDirectives(using qc: QueryContext): IOResult[MapView[DirectiveId, Directive]] = {
for {
library <- directiveRepository.getFullDirectiveLibrary()
} yield {
library.allDirectives.view.mapValues(_._2)
}
}

private def getNodeNames(implicit qc: QueryContext): IOResult[MapView[NodeId, String]] = {
private def getNodeNames(using qc: QueryContext): IOResult[MapView[NodeId, String]] = {
for {
library <- nodeFactRepository.getAll()
} yield {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,27 +93,30 @@ class MockSupervisedTargets(unsupervisedDir: File, unsupervisedFilename: String,
fullNodeGroupCategory.succeed
}

override def categoryExists(id: NodeGroupCategoryId): IOResult[Boolean] = ???
override def getNodeGroupOpt(id: NodeGroupId)(implicit qc: QueryContext): IOResult[Option[(NodeGroup, NodeGroupCategoryId)]] =
override def categoryExists(id: NodeGroupCategoryId)(using qc: QueryContext): IOResult[Boolean] = ???
override def getNodeGroupOpt(id: NodeGroupId)(using qc: QueryContext): IOResult[Option[(NodeGroup, NodeGroupCategoryId)]] =
???
override def getNodeGroupCategory(id: NodeGroupId): IOResult[NodeGroupCategory] = ???
override def getAll(): IOResult[Seq[NodeGroup]] = ???
override def getAllByIds(ids: Seq[NodeGroupId]): IOResult[Seq[NodeGroup]] = ???
override def getAllNodeIds(): IOResult[Map[NodeGroupId, Set[NodeId]]] = ???
override def getAllNodeIdsChunk(): IOResult[Map[NodeGroupId, Chunk[NodeId]]] = ???
override def getGroupsByCategory(includeSystem: Boolean)(implicit
override def getNodeGroupCategory(id: NodeGroupId)(using qc: QueryContext): IOResult[NodeGroupCategory] = ???
override def getAll()(using qc: QueryContext): IOResult[Seq[NodeGroup]] = ???
override def getAllByIds(ids: Seq[NodeGroupId])(using qc: QueryContext): IOResult[Seq[NodeGroup]] = ???
override def getAllNodeIds()(using qc: QueryContext): IOResult[Map[NodeGroupId, Set[NodeId]]] = ???
override def getAllNodeIdsChunk()(using qc: QueryContext): IOResult[Map[NodeGroupId, Chunk[NodeId]]] = ???
override def getGroupsByCategory(includeSystem: Boolean)(using
qc: QueryContext
): IOResult[SortedMap[List[NodeGroupCategoryId], CategoryAndNodeGroup]] = ???
override def findGroupWithAnyMember(nodeIds: Seq[NodeId]): IOResult[Seq[NodeGroupId]] = ???
override def findGroupWithAllMember(nodeIds: Seq[NodeId]): IOResult[Seq[NodeGroupId]] = ???
override def getRootCategory(): NodeGroupCategory = ???
override def getRootCategoryPure(): IOResult[NodeGroupCategory] = ???
override def getCategoryHierarchy: IOResult[SortedMap[List[NodeGroupCategoryId], NodeGroupCategory]] = ???
override def getAllGroupCategories(includeSystem: Boolean): IOResult[Seq[NodeGroupCategory]] = ???
override def getGroupCategory(id: NodeGroupCategoryId): IOResult[NodeGroupCategory] = ???
override def getParentGroupCategory(id: NodeGroupCategoryId): IOResult[NodeGroupCategory] = ???
override def getParents_NodeGroupCategory(id: NodeGroupCategoryId): IOResult[List[NodeGroupCategory]] = ???
override def getAllNonSystemCategories(): IOResult[Seq[NodeGroupCategory]] = ???
override def findGroupWithAnyMember(nodeIds: Seq[NodeId])(using qc: QueryContext): IOResult[Seq[NodeGroupId]] = ???
override def findGroupWithAllMember(nodeIds: Seq[NodeId])(using qc: QueryContext): IOResult[Seq[NodeGroupId]] = ???
override def getRootCategory()(using qc: QueryContext): NodeGroupCategory = ???
override def getRootCategoryPure()(using qc: QueryContext): IOResult[NodeGroupCategory] = ???
override def getCategoryHierarchy(using qc: QueryContext): IOResult[SortedMap[List[NodeGroupCategoryId], NodeGroupCategory]] =
???
override def getAllGroupCategories(includeSystem: Boolean)(using qc: QueryContext): IOResult[Seq[NodeGroupCategory]] = ???
override def getGroupCategory(id: NodeGroupCategoryId)(using qc: QueryContext): IOResult[NodeGroupCategory] = ???
override def getParentGroupCategory(id: NodeGroupCategoryId)(using qc: QueryContext): IOResult[NodeGroupCategory] = ???
override def getParents_NodeGroupCategory(id: NodeGroupCategoryId)(using
qc: QueryContext
): IOResult[List[NodeGroupCategory]] = ???
override def getAllNonSystemCategories()(using qc: QueryContext): IOResult[Seq[NodeGroupCategory]] = ???
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import com.normation.rudder.MockNodeGroups
import com.normation.rudder.MockNodes
import com.normation.rudder.MockRules
import com.normation.rudder.MockTechniques
import com.normation.rudder.MockTenants
import com.normation.rudder.domain.policies.ActiveTechniqueId
import com.normation.rudder.domain.policies.GroupTarget
import com.normation.rudder.domain.policies.SimpleTarget
Expand All @@ -66,10 +67,11 @@ import zio.syntax.ToZio
@RunWith(classOf[JUnitRunner])
class ValidationNeededTest extends Specification {

val mockNodes: MockNodes = new MockNodes()
val mockNodeGroups: MockNodeGroups = new MockNodeGroups(mockNodes, new MockGlobalParam())
val mockTenants = new MockTenants()
val mockNodes: MockNodes = new MockNodes(mockTenants)
val mockNodeGroups: MockNodeGroups = new MockNodeGroups(mockNodes, new MockGlobalParam(mockTenants), mockTenants)
val actor: EventActor = EventActor("myActor")
val mockRules: MockRules = new MockRules()
val mockRules: MockRules = new MockRules(mockTenants)

val nodeGrpValNdd = new NodeGroupValidationNeeded(
() => Set[SimpleTarget](GroupTarget(mockNodeGroups.g0.id)).succeed,
Expand Down Expand Up @@ -125,9 +127,10 @@ class ValidationNeededTest extends Specification {
}
}

val mockTenants = new MockTenants()
val mockGitRepo = new MockGitConfigRepo("")
val mockTechniques = MockTechniques(mockGitRepo)
val mockDirectives = new MockDirectives(mockTechniques)
val mockDirectives = new MockDirectives(mockTechniques, mockTenants)
val sectionSpec = SectionSpec("ROOT")
val technique = mockDirectives.directives.commonTechnique

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import com.normation.plugins.changevalidation.TwoValidationStepsWorkflowServiceI
import com.normation.plugins.changevalidation.TwoValidationStepsWorkflowServiceImpl.*
import com.normation.rudder.MockGlobalParam
import com.normation.rudder.MockNodes
import com.normation.rudder.MockTenants
import com.normation.rudder.api.ApiVersion
import com.normation.rudder.batch.AsyncWorkflowInfo
import com.normation.rudder.domain.nodes.AddNodeGroupDiff
Expand Down Expand Up @@ -230,7 +231,8 @@ class ChangeRequestApiTest extends ZIOSpecDefault {
val mockDirectives = restTestSetUp.mockDirectives
val mockNodeGroups = restTestSetUp.mockNodeGroups
val mockRules = restTestSetUp.mockRules
val mockGlobalParam = new MockGlobalParam()
val mockTenants = new MockTenants()
val mockGlobalParam = new MockGlobalParam(mockTenants)

val mockServices = new MockServices(
Map(
Expand Down Expand Up @@ -641,7 +643,7 @@ class ChangeRequestApiTest extends ZIOSpecDefault {
)

val apiVersions = ApiVersion(13, true) :: ApiVersion(14, false) :: Nil
val (rudderApi, liftRules) = TraitTestApiFromYamlFiles.buildLiftRules(modules, apiVersions, Some(mockServices.userService))
val (rudderApi, liftRules) = TraitTestApiFromYamlFiles.buildLiftRules(modules, apiVersions, mockServices.userService)

val transformations: Map[String, String => String] = Map()

Expand All @@ -659,6 +661,7 @@ class ChangeRequestApiTest extends ZIOSpecDefault {
yamlSourceDirectory,
yamlDestTmpDirectory,
liftRules,
mockServices.userService,
List("api_changerequest.yml"),
transformations
)
Expand Down
Loading