From a7dbb4ab9adc4984fb842a49f16caaeb3bb4cb1f Mon Sep 17 00:00:00 2001
From: Lyuben Penkovski <lyuben.penkovski@vereign.com>
Date: Sat, 24 Sep 2022 22:33:17 +0300
Subject: [PATCH] Fix storing of policy result in cache

---
 internal/service/policy/service.go | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/internal/service/policy/service.go b/internal/service/policy/service.go
index a6322285..8ff2196d 100644
--- a/internal/service/policy/service.go
+++ b/internal/service/policy/service.go
@@ -96,17 +96,6 @@ func (s *Service) Evaluate(ctx context.Context, req *policy.EvaluateRequest) (*p
 		return nil, errors.New("policy evaluation result expressions are empty")
 	}
 
-	jsonValue, err := json.Marshal(resultSet[0].Expressions[0].Value)
-	if err != nil {
-		logger.Error("error encoding result to json", zap.Error(err))
-		return nil, errors.New("error encoding result to json")
-	}
-
-	if err := s.cache.Set(ctx, evaluationID, "", "", jsonValue); err != nil {
-		logger.Error("error storing policy result in cache", zap.Error(err))
-		return nil, errors.New("error storing policy result in cache")
-	}
-
 	// If there is only a single result from the policy evaluation and it was assigned to an empty
 	// variable, then we'll return a custom response containing only the value of the empty variable
 	// without any mapping.
@@ -121,6 +110,17 @@ func (s *Service) Evaluate(ctx context.Context, req *policy.EvaluateRequest) (*p
 		}
 	}
 
+	jsonValue, err := json.Marshal(result)
+	if err != nil {
+		logger.Error("error encoding result to json", zap.Error(err))
+		return nil, errors.New("error encoding result to json")
+	}
+
+	if err := s.cache.Set(ctx, evaluationID, "", "", jsonValue); err != nil {
+		logger.Error("error storing policy result in cache", zap.Error(err))
+		return nil, errors.New("error storing policy result in cache")
+	}
+
 	return &policy.EvaluateResult{
 		Result: result,
 		ETag:   evaluationID,
-- 
GitLab