Unverified Commit 726ad2e6 authored by Roy Hadad's avatar Roy Hadad Committed by GitHub
Browse files

fix: make anonymous invocations fail with --policy flag (#559)

parent f6662ea3
No related merge requests found
Showing with 32 additions and 15 deletions
+32 -15
......@@ -121,7 +121,7 @@ func TestEvaluate(t *testing.T) {
}
prerunData := mockGetPreRunData()
policy, _ := policy_factory.CreatePolicy(prerunData.PoliciesJson, "")
policy, _ := policy_factory.CreatePolicy(prerunData.PoliciesJson, "", prerunData.RegistrationURL)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
......@@ -174,7 +174,7 @@ func request_evaluation_all_valid() *evaluateTestCase {
validFilePath := "internal/fixtures/kube/pass-all.yaml"
prerunData := mockGetPreRunData()
policy, _ := policy_factory.CreatePolicy(prerunData.PoliciesJson, "")
policy, _ := policy_factory.CreatePolicy(prerunData.PoliciesJson, "", prerunData.RegistrationURL)
return &evaluateTestCase{
name: "should request validation without invalid files",
......@@ -222,7 +222,7 @@ func request_evaluation_all_valid() *evaluateTestCase {
func request_evaluation_all_invalid() *evaluateTestCase {
prerunData := mockGetPreRunData()
policy, _ := policy_factory.CreatePolicy(prerunData.PoliciesJson, "")
policy, _ := policy_factory.CreatePolicy(prerunData.PoliciesJson, "", prerunData.RegistrationURL)
return &evaluateTestCase{
name: "should not request validation if there are no valid files",
......
......@@ -22,7 +22,11 @@ type RuleWithSchema struct {
MessageOnFailure string
}
func CreatePolicy(policies *cliClient.EvaluationPrerunPolicies, policyName string) (Policy, error) {
func CreatePolicy(policies *cliClient.EvaluationPrerunPolicies, policyName string, registrationURL string) (Policy, error) {
if policies == nil && policyName != "" && policyName != "Default" {
return Policy{}, fmt.Errorf("policy %s doesn't exist, sign in to the dashboard to customize your policies: %s", policyName, registrationURL)
}
defaultRules, err := internal_policy.GetDefaultRules()
if err != nil {
......@@ -46,8 +50,7 @@ func CreatePolicy(policies *cliClient.EvaluationPrerunPolicies, policyName strin
}
if chosenPolicy == nil {
err := fmt.Errorf("policy %s doesn't exist", policyName)
return Policy{}, err
return Policy{}, fmt.Errorf("policy %s doesn't exist", policyName)
}
rules, err = populateRules(chosenPolicy.Rules, policies.CustomRules, defaultRules.Rules)
......
......@@ -2,6 +2,7 @@ package policy
import (
"encoding/json"
"fmt"
"os"
"testing"
......@@ -17,7 +18,7 @@ import (
const policiesJsonPath = "../../internal/fixtures/policyAsCode/prerun.json"
func TestCreatePolicy(t *testing.T) {
policiesJson := mockGetPreRunData()
preRunData := mockGetPreRunData()
err := os.Chdir("../../")
if err != nil {
......@@ -25,7 +26,7 @@ func TestCreatePolicy(t *testing.T) {
}
t.Run("Test Create Policy With Default Policy", func(t *testing.T) {
policy, _ := CreatePolicy(policiesJson.PoliciesJson, "")
policy, _ := CreatePolicy(preRunData.PoliciesJson, "", preRunData.RegistrationURL)
var expectedRules []RuleWithSchema
defaultRules, err := internal_policy.GetDefaultRules()
......@@ -58,7 +59,7 @@ func TestCreatePolicy(t *testing.T) {
})
t.Run("Test Create Policy With Specific Policy", func(t *testing.T) {
policy, err := CreatePolicy(policiesJson.PoliciesJson, "labels_best_practices2")
policy, err := CreatePolicy(preRunData.PoliciesJson, "labels_best_practices2", preRunData.RegistrationURL)
var expectedRules []RuleWithSchema
if err != nil {
......@@ -80,7 +81,7 @@ func TestCreatePolicy(t *testing.T) {
})
t.Run("Test Create Policy With Custom Rules", func(t *testing.T) {
policy, err := CreatePolicy(policiesJson.PoliciesJson, "labels_best_practices3")
policy, err := CreatePolicy(preRunData.PoliciesJson, "labels_best_practices3", preRunData.RegistrationURL)
var expectedRules []RuleWithSchema
if err != nil {
panic(err)
......@@ -97,6 +98,17 @@ func TestCreatePolicy(t *testing.T) {
assert.Equal(t, expectedRules, policy.Rules)
})
t.Run("Test Create Policy for anonymous user with --policy flag Default", func(t *testing.T) {
_, err := CreatePolicy(nil, "Default", preRunData.RegistrationURL)
assert.Equal(t, nil, err)
})
t.Run("Test Create Policy for anonymous user with --policy flag not default", func(t *testing.T) {
policy, err := CreatePolicy(nil, "my-policy", preRunData.RegistrationURL)
assert.Equal(t, fmt.Errorf("policy my-policy doesn't exist, sign in to the dashboard to customize your policies: %s", preRunData.RegistrationURL), err)
assert.Equal(t, Policy{}, policy)
})
}
func mockGetPreRunData() *cliClient.EvaluationPrerunDataResponse {
......
......@@ -262,7 +262,7 @@ func GenerateTestCommandData(testCommandFlags *TestCommandFlags, localConfigCont
policies = evaluationPrerunDataResp.PoliciesJson
}
policy, err := policy_factory.CreatePolicy(policies, testCommandFlags.PolicyName)
policy, err := policy_factory.CreatePolicy(policies, testCommandFlags.PolicyName, evaluationPrerunDataResp.RegistrationURL)
if err != nil {
return nil, err
}
......
......@@ -326,7 +326,7 @@ func test_all_k8s_resources_tested() *TestFlowTestCase {
validK8sFilesConfigurations = append(validK8sFilesConfigurations, fileConfigurations)
}
preRunData := mockGetPreRunData()
policy, _ := policy_factory.CreatePolicy(preRunData.PoliciesJson, "")
policy, _ := policy_factory.CreatePolicy(preRunData.PoliciesJson, "", preRunData.RegistrationURL)
close(invalidFilesChan)
return &TestFlowTestCase{
......@@ -461,7 +461,7 @@ func test_all_k8s_resources_tested() *TestFlowTestCase {
func test_no_k8s_resources_found() *TestFlowTestCase {
root := pathFromRoot("internal/fixtures/nonKube/")
preRunData := mockGetPreRunData()
policy, _ := policy_factory.CreatePolicy(preRunData.PoliciesJson, "")
policy, _ := policy_factory.CreatePolicy(preRunData.PoliciesJson, "", preRunData.RegistrationURL)
paths := []string{root + "/docker-compose-config.yaml", root + "/simple.json", root + "/simple.yaml"}
filesConfigurationsChan := make(chan *extractor.FileConfigurations, 3)
go func() {
......@@ -683,7 +683,7 @@ func setup() {
FilesExtractor: filesExtractorMock,
}
testingPolicy, _ = policy_factory.CreatePolicy(prerunData.PoliciesJson, "")
testingPolicy, _ = policy_factory.CreatePolicy(prerunData.PoliciesJson, "", prerunData.RegistrationURL)
}
func TestTestCommandFlagsValidation(t *testing.T) {
......
......@@ -91,5 +91,7 @@
]
},
"accountExists": true,
"isPolicyAsCodeMode": false
"isPolicyAsCodeMode": false,
"registrationURL": "https://app.datree.io/login?t=gfdgdsteasgfsdgfdsfsd",
"promptRegistrationURL": "https://app.datree.io/promptLogin?t=gfdgdsteasgfsdgfdsfsd"
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment