From b6c7161e285bd5b3b538f3c9f5d142cb13265a6b Mon Sep 17 00:00:00 2001 From: Yissell Garma Date: Thu, 20 Feb 2025 17:09:52 -0500 Subject: [PATCH] fix lint errors --- pkg/go/graph/graph_builder.go | 49 +++++++-------------- pkg/go/graph/graph_edge.go | 6 +-- pkg/go/graph/weighted_graph_builder_test.go | 3 +- 3 files changed, 19 insertions(+), 39 deletions(-) diff --git a/pkg/go/graph/graph_builder.go b/pkg/go/graph/graph_builder.go index 8dfb3e18..8bf40608 100644 --- a/pkg/go/graph/graph_builder.go +++ b/pkg/go/graph/graph_builder.go @@ -117,7 +117,7 @@ func checkRewrite(graphBuilder *AuthorizationModelGraphBuilder, parentNode *Auth } } -func parseThis(graphBuilder *AuthorizationModelGraphBuilder, parentNode graph.Node, typeDef *openfgav1.TypeDefinition, relation string) error { +func parseThis(graphBuilder *AuthorizationModelGraphBuilder, parentNode graph.Node, typeDef *openfgav1.TypeDefinition, relation string) { directlyRelated := make([]*openfgav1.RelationReference, 0) var curNode *AuthorizationModelNode @@ -146,12 +146,8 @@ func parseThis(graphBuilder *AuthorizationModelGraphBuilder, parentNode graph.No // de-dup types that are conditioned, e.g. if define viewer: [user, user with condX] // we only draw one edge from user to x#viewer, but with two conditions: none and condX - _, err := graphBuilder.upsertEdge(curNode, parentNode, DirectEdge, "", directlyRelatedDef.Condition) - if err != nil { - return err - } + graphBuilder.upsertEdge(curNode, parentNode, DirectEdge, "", directlyRelatedDef.GetCondition()) } - return nil } func parseComputed(graphBuilder *AuthorizationModelGraphBuilder, parentNode *AuthorizationModelNode, typeDef *openfgav1.TypeDefinition, relation string) { @@ -167,7 +163,7 @@ func parseComputed(graphBuilder *AuthorizationModelGraphBuilder, parentNode *Aut graphBuilder.AddEdge(newNode, parentNode, nodeType, "", "") } -func parseTupleToUserset(graphBuilder *AuthorizationModelGraphBuilder, parentNode graph.Node, model *openfgav1.AuthorizationModel, typeDef *openfgav1.TypeDefinition, rewrite *openfgav1.TupleToUserset) error { +func parseTupleToUserset(graphBuilder *AuthorizationModelGraphBuilder, parentNode graph.Node, model *openfgav1.AuthorizationModel, typeDef *openfgav1.TypeDefinition, rewrite *openfgav1.TupleToUserset) { // e.g. define viewer: admin from parent // "parent" is the tupleset tuplesetRelation := rewrite.GetTupleset().GetRelation() @@ -181,7 +177,6 @@ func parseTupleToUserset(graphBuilder *AuthorizationModelGraphBuilder, parentNod } for _, relatedType := range directlyRelated { - tuplesetType := relatedType.GetType() if !typeAndRelationExists(model, tuplesetType, computedRelation) { @@ -192,11 +187,7 @@ func parseTupleToUserset(graphBuilder *AuthorizationModelGraphBuilder, parentNod nodeSource := graphBuilder.getOrAddNode(rewrittenNodeName, rewrittenNodeName, SpecificTypeAndRelation) typeTuplesetRelation := fmt.Sprintf("%s#%s", typeDef.GetType(), tuplesetRelation) - ok, err := graphBuilder.hasEdge(nodeSource, parentNode, TTUEdge, typeTuplesetRelation) - if err != nil { - return err - } - if ok { + if graphBuilder.hasEdge(nodeSource, parentNode, TTUEdge, typeTuplesetRelation) { // de-dup types that are conditioned, e.g. if define viewer: [user, user with condX] // we only draw one edge from user to x#viewer continue @@ -205,7 +196,6 @@ func parseTupleToUserset(graphBuilder *AuthorizationModelGraphBuilder, parentNod // new edge from "xxx#admin" to "yyy#viewer" tuplesetRelation on "yyy#parent" graphBuilder.upsertEdge(nodeSource, parentNode, TTUEdge, typeTuplesetRelation, relatedType.GetCondition()) } - return nil } func (g *AuthorizationModelGraphBuilder) getOrAddNode(uniqueLabel, label string, nodeType NodeType) *AuthorizationModelNode { @@ -257,53 +247,44 @@ func (g *AuthorizationModelGraphBuilder) AddEdge(from, to graph.Node, edgeType E return newLine } -func (g *AuthorizationModelGraphBuilder) upsertEdge(from, to graph.Node, edgeType EdgeType, tuplesetRelation string, condition string) (*AuthorizationModelEdge, error) { +func (g *AuthorizationModelGraphBuilder) upsertEdge(from, to graph.Node, edgeType EdgeType, tuplesetRelation string, condition string) { if from == nil || to == nil { - return nil, nil + return } iter := g.Lines(from.ID(), to.ID()) for iter.Next() { l := iter.Line() - edge, ok := l.(*AuthorizationModelEdge) - if !ok { - // if it is not a valid AuthorizationModelEdge then return error - return nil, ErrBuildingGraph - } + edge, _ := l.(*AuthorizationModelEdge) if edge.edgeType == edgeType && edge.tuplesetRelation == tuplesetRelation { for _, cond := range edge.conditions { if cond == condition { - return edge, nil + return } } edge.conditions = append(edge.conditions, condition) - return edge, nil + return } } - return g.AddEdge(from, to, edgeType, tuplesetRelation, condition), nil - + g.AddEdge(from, to, edgeType, tuplesetRelation, condition) } -func (g *AuthorizationModelGraphBuilder) hasEdge(from, to graph.Node, edgeType EdgeType, tuplesetRelation string) (bool, error) { +func (g *AuthorizationModelGraphBuilder) hasEdge(from, to graph.Node, edgeType EdgeType, tuplesetRelation string) bool { if from == nil || to == nil { - return false, nil + return false } iter := g.Lines(from.ID(), to.ID()) for iter.Next() { l := iter.Line() - edge, ok := l.(*AuthorizationModelEdge) - if !ok { - // if it is not a valid AuthorizationModelEdge then return error - return false, ErrBuildingGraph - } + edge, _ := l.(*AuthorizationModelEdge) if edge.edgeType == edgeType && edge.tuplesetRelation == tuplesetRelation { - return true, nil + return true } } - return false, nil + return false } func typeAndRelationExists(model *openfgav1.AuthorizationModel, typeName, relation string) bool { diff --git a/pkg/go/graph/graph_edge.go b/pkg/go/graph/graph_edge.go index 5ecb8b51..2d6402a1 100644 --- a/pkg/go/graph/graph_edge.go +++ b/pkg/go/graph/graph_edge.go @@ -12,11 +12,11 @@ const ( RewriteEdge EdgeType = 1 TTUEdge EdgeType = 2 ComputedEdge EdgeType = 3 - // when an edge does not have cond in the model, it will have a condition with value none. - // this is required to differentiate when an edge need to support condition and no condition + // When an edge does not have cond in the model, it will have a condition with value none. + // This is required to differentiate when an edge need to support condition and no condition // like define rel1: [user, user with condX], in this case the edge will have [none, condX] // or an edge needs to support only condition like define rel1: [user with condX], the edge will have [condX] - // in the case the edge does not have any condition like define rel1: [user], the edge will have [none] + // in the case the edge does not have any condition like define rel1: [user], the edge will have [none]. NoCond string = "none" ) diff --git a/pkg/go/graph/weighted_graph_builder_test.go b/pkg/go/graph/weighted_graph_builder_test.go index 73923845..7cb8bb99 100644 --- a/pkg/go/graph/weighted_graph_builder_test.go +++ b/pkg/go/graph/weighted_graph_builder_test.go @@ -517,7 +517,7 @@ func TestValidConditionalGraphModel(t *testing.T) { edges, _ := graph.GetEdgesFromNode(graph.nodes["permission#assignee"]) require.Len(t, edges, 1) conditions := edges[0].conditions - require.Len(t, edges[0].tuplesetRelation, 0) + require.Empty(t, edges[0].tuplesetRelation) require.Len(t, conditions, 2) edges, _ = graph.GetEdgesFromNode(graph.nodes["job#can_read"]) require.Len(t, edges, 1) @@ -584,5 +584,4 @@ func TestValidConditionalGraphModel(t *testing.T) { require.Equal(t, Infinite, graph.nodes["permission#member"].weights["user"]) require.Equal(t, Infinite, graph.nodes["job#can_view"].weights["user"]) require.Equal(t, 1, graph.nodes["job#owner"].weights["job"]) - }