chore: extend require-error rule from testifylint (#18681)

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
This commit is contained in:
Matthieu MOREL 2024-06-15 19:51:18 +02:00 committed by GitHub
parent e3fa52dd83
commit eac08dcf79
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 561 additions and 603 deletions

View file

@ -7,10 +7,6 @@ issues:
text: "require-error:"
linters:
- testifylint
- path: "util/(argo|cache|cert|clusterauth|config|db|dex|git|gpg)/"
text: "require-error:"
linters:
- testifylint
max-issues-per-linter: 0
max-same-issues: 0
linters:

View file

@ -42,7 +42,7 @@ func TestRefreshApp(t *testing.T) {
appClientset := appclientset.NewSimpleClientset(&testApp)
appIf := appClientset.ArgoprojV1alpha1().Applications("default")
_, err := RefreshApp(appIf, "test-app", argoappv1.RefreshTypeNormal)
assert.NoError(t, err)
require.NoError(t, err)
// For some reason, the fake Application interface doesn't reflect the patch status after Patch(),
// so can't verify it was set in unit tests.
//_, ok := newApp.Annotations[common.AnnotationKeyRefresh]
@ -82,7 +82,7 @@ func TestGetAppProjectWithNoProjDefined(t *testing.T) {
settingsMgr := settings.NewSettingsManager(context.Background(), kubeClient, test.FakeArgoCDNamespace)
argoDB := db.NewDB("default", settingsMgr, kubeClient)
proj, err := GetAppProject(&testApp, applisters.NewAppProjectLister(informer.GetIndexer()), namespace, settingsMgr, argoDB, ctx)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, proj.Name, projName)
}
@ -283,7 +283,7 @@ func TestValidatePermissionsEmptyDestination(t *testing.T) {
Destinations: []argoappv1.ApplicationDestination{{Server: "*", Namespace: "*"}},
},
}, nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, conditions, []argoappv1.ApplicationCondition{{Type: argoappv1.ApplicationConditionInvalidSpecError, Message: "Destination server missing from app spec"}})
}
@ -305,7 +305,7 @@ func TestValidateChartWithoutRevision(t *testing.T) {
Destinations: []argoappv1.ApplicationDestination{{Server: "*", Namespace: "*"}},
},
}, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Equal(t, argoappv1.ApplicationConditionInvalidSpecError, conditions[0].Type)
assert.Equal(t, "spec.source.targetRevision is required if the manifest source is a helm chart", conditions[0].Message)
@ -332,7 +332,7 @@ func TestAPIResourcesToStrings(t *testing.T) {
func TestValidateRepo(t *testing.T) {
repoPath, err := filepath.Abs("./../..")
assert.NoError(t, err)
require.NoError(t, err)
apiResources := []kube.APIResourceInfo{{
GroupVersionResource: schema.GroupVersionResource{Group: "apps", Version: "v1beta1"},
@ -428,7 +428,7 @@ func TestValidateRepo(t *testing.T) {
conditions, err := ValidateRepo(context.Background(), app, repoClientSet, db, &kubetest.MockKubectlCmd{Version: kubeVersion, APIResources: apiResources}, proj, settingsMgr)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, conditions)
assert.ElementsMatch(t, []string{"apps/v1beta1", "apps/v1beta1/Deployment", "apps/v1beta2", "apps/v1beta2/Deployment"}, receivedRequest.ApiVersions)
assert.Equal(t, kubeVersion, receivedRequest.KubeVersion)
@ -615,7 +615,7 @@ func TestValidatePermissions(t *testing.T) {
proj := argoappv1.AppProject{}
db := &dbmocks.ArgoDB{}
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Equal(t, argoappv1.ApplicationConditionInvalidSpecError, conditions[0].Type)
assert.Contains(t, conditions[0].Message, "are required")
@ -632,7 +632,7 @@ func TestValidatePermissions(t *testing.T) {
proj := argoappv1.AppProject{}
db := &dbmocks.ArgoDB{}
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Equal(t, argoappv1.ApplicationConditionInvalidSpecError, conditions[0].Type)
assert.Contains(t, conditions[0].Message, "are required")
@ -649,7 +649,7 @@ func TestValidatePermissions(t *testing.T) {
proj := argoappv1.AppProject{}
db := &dbmocks.ArgoDB{}
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Equal(t, argoappv1.ApplicationConditionInvalidSpecError, conditions[0].Type)
assert.Contains(t, conditions[0].Message, "is required if the manifest source is a helm chart")
@ -683,7 +683,7 @@ func TestValidatePermissions(t *testing.T) {
db := &dbmocks.ArgoDB{}
db.On("GetCluster", context.Background(), spec.Destination.Server).Return(cluster, nil)
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Contains(t, conditions[0].Message, "application repo http://some/where is not permitted")
})
@ -716,7 +716,7 @@ func TestValidatePermissions(t *testing.T) {
db := &dbmocks.ArgoDB{}
db.On("GetCluster", context.Background(), spec.Destination.Server).Return(cluster, nil)
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Contains(t, conditions[0].Message, "application destination")
})
@ -748,7 +748,7 @@ func TestValidatePermissions(t *testing.T) {
db := &dbmocks.ArgoDB{}
db.On("GetCluster", context.Background(), spec.Destination.Server).Return(nil, status.Errorf(codes.NotFound, "Cluster does not exist"))
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Contains(t, conditions[0].Message, "has not been configured")
})
@ -780,7 +780,7 @@ func TestValidatePermissions(t *testing.T) {
db := &dbmocks.ArgoDB{}
db.On("GetClusterServersByName", context.Background(), "does-not-exist").Return(nil, nil)
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Contains(t, conditions[0].Message, "unable to find destination server: there are no clusters with this name: does-not-exist")
})
@ -812,7 +812,7 @@ func TestValidatePermissions(t *testing.T) {
db := &dbmocks.ArgoDB{}
db.On("GetCluster", context.Background(), spec.Destination.Server).Return(nil, fmt.Errorf("Unknown error occurred"))
_, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.Error(t, err)
require.Error(t, err)
})
t.Run("Destination cluster name resolves to valid server", func(t *testing.T) {
@ -847,7 +847,7 @@ func TestValidatePermissions(t *testing.T) {
db.On("GetClusterServersByName", context.Background(), "does-exist").Return([]string{"https://127.0.0.1:6443"}, nil)
db.On("GetCluster", context.Background(), "https://127.0.0.1:6443").Return(&cluster, nil)
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, conditions)
})
}
@ -856,7 +856,7 @@ func TestSetAppOperations(t *testing.T) {
t.Run("Application not existing", func(t *testing.T) {
appIf := appclientset.NewSimpleClientset().ArgoprojV1alpha1().Applications("default")
app, err := SetAppOperation(appIf, "someapp", &argoappv1.Operation{Sync: &argoappv1.SyncOperation{Revision: "aaa"}})
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, app)
})
@ -870,7 +870,7 @@ func TestSetAppOperations(t *testing.T) {
}
appIf := appclientset.NewSimpleClientset(&a).ArgoprojV1alpha1().Applications("default")
app, err := SetAppOperation(appIf, "someapp", &argoappv1.Operation{Sync: &argoappv1.SyncOperation{Revision: "aaa"}})
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "operation is already in progress")
assert.Nil(t, app)
})
@ -884,7 +884,7 @@ func TestSetAppOperations(t *testing.T) {
}
appIf := appclientset.NewSimpleClientset(&a).ArgoprojV1alpha1().Applications("default")
app, err := SetAppOperation(appIf, "someapp", &argoappv1.Operation{Sync: nil})
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "Operation unspecified")
assert.Nil(t, app)
})
@ -898,7 +898,7 @@ func TestSetAppOperations(t *testing.T) {
}
appIf := appclientset.NewSimpleClientset(&a).ArgoprojV1alpha1().Applications("default")
app, err := SetAppOperation(appIf, "someapp", &argoappv1.Operation{Sync: &argoappv1.SyncOperation{Revision: "aaa"}})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, app)
})
}
@ -911,7 +911,7 @@ func TestValidateDestination(t *testing.T) {
}
appCond := ValidateDestination(context.Background(), &dest, nil)
assert.NoError(t, appCond)
require.NoError(t, appCond)
assert.False(t, dest.IsServerInferred())
})
@ -924,7 +924,7 @@ func TestValidateDestination(t *testing.T) {
db.On("GetClusterServersByName", context.Background(), "minikube").Return([]string{"https://127.0.0.1:6443"}, nil)
appCond := ValidateDestination(context.Background(), &dest, db)
assert.NoError(t, appCond)
require.NoError(t, appCond)
assert.Equal(t, "https://127.0.0.1:6443", dest.Server)
assert.True(t, dest.IsServerInferred())
})
@ -1003,19 +1003,19 @@ func TestFilterByName(t *testing.T) {
t.Run("Name is empty string", func(t *testing.T) {
res, err := FilterByName(apps, "")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, res, 2)
})
t.Run("Single app by name", func(t *testing.T) {
res, err := FilterByName(apps, "foo")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, res, 1)
})
t.Run("No such app", func(t *testing.T) {
res, err := FilterByName(apps, "foobar")
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, res)
})
}
@ -1263,7 +1263,7 @@ func Test_AppInstanceNameFromQualified(t *testing.T) {
func Test_GetRefSources(t *testing.T) {
repoPath, err := filepath.Abs("./../..")
assert.NoError(t, err)
require.NoError(t, err)
getMultiSourceAppSpec := func(sources argoappv1.ApplicationSources) *argoappv1.ApplicationSpec {
return &argoappv1.ApplicationSpec{
@ -1288,7 +1288,7 @@ func Test_GetRefSources(t *testing.T) {
Repo: *repo,
},
}
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, refSources, 1)
assert.Equal(t, expectedRefSource, refSources)
})
@ -1303,7 +1303,7 @@ func Test_GetRefSources(t *testing.T) {
return nil, errors.New("repo does not exist")
}, []string{}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, refSources)
})
@ -1317,7 +1317,7 @@ func Test_GetRefSources(t *testing.T) {
return nil, err
}, []string{}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, refSources)
})
@ -1331,7 +1331,7 @@ func Test_GetRefSources(t *testing.T) {
return nil, err
}, []string{}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, refSources)
})
}
@ -1347,7 +1347,7 @@ func TestValidatePermissionsMultipleSources(t *testing.T) {
proj := argoappv1.AppProject{}
db := &dbmocks.ArgoDB{}
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Equal(t, argoappv1.ApplicationConditionInvalidSpecError, conditions[0].Type)
assert.Contains(t, conditions[0].Message, "are required")
@ -1367,7 +1367,7 @@ func TestValidatePermissionsMultipleSources(t *testing.T) {
proj := argoappv1.AppProject{}
db := &dbmocks.ArgoDB{}
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Equal(t, argoappv1.ApplicationConditionInvalidSpecError, conditions[0].Type)
assert.Contains(t, conditions[0].Message, "are required")
@ -1403,7 +1403,7 @@ func TestValidatePermissionsMultipleSources(t *testing.T) {
db := &dbmocks.ArgoDB{}
db.On("GetCluster", context.Background(), spec.Destination.Server).Return(cluster, nil)
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, conditions, 1)
assert.Contains(t, conditions[0].Message, "application repo http://some/where is not permitted")
})
@ -1442,7 +1442,7 @@ func TestValidatePermissionsMultipleSources(t *testing.T) {
db.On("GetClusterServersByName", context.Background(), "does-exist").Return([]string{"https://127.0.0.1:6443"}, nil)
db.On("GetCluster", context.Background(), "https://127.0.0.1:6443").Return(&cluster, nil)
conditions, err := ValidatePermissions(context.Background(), &spec, &proj, db)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, conditions)
})
}
@ -1569,7 +1569,7 @@ func TestAugmentSyncMsg(t *testing.T) {
require.Error(t, err)
assert.Equal(t, tt.errMsg, err.Error())
} else {
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, tt.expectedMessage, msg)
}
})

View file

@ -140,7 +140,7 @@ func TestStateDiff(t *testing.T) {
result, err := argo.StateDiff(tc.liveState, tc.desiredState, dc)
// then
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, result)
assert.True(t, result.Modified)
normalized := testutil.YamlToUnstructured(string(result.NormalizedLive))

View file

@ -34,17 +34,17 @@ func TestNormalize(t *testing.T) {
require.NotNil(t, desiredResult)
desiredReplicas, ok, err := unstructured.NestedFloat64(desiredResult.Object, "spec", "replicas")
assert.False(t, ok)
assert.NoError(t, err)
require.NoError(t, err)
liveReplicas, ok, err := unstructured.NestedFloat64(liveResult.Object, "spec", "replicas")
assert.False(t, ok)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, liveReplicas, desiredReplicas)
liveRevisionHistory, ok, err := unstructured.NestedFloat64(liveResult.Object, "spec", "revisionHistoryLimit")
assert.False(t, ok)
assert.NoError(t, err)
require.NoError(t, err)
desiredRevisionHistory, ok, err := unstructured.NestedFloat64(desiredResult.Object, "spec", "revisionHistoryLimit")
assert.False(t, ok)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, liveRevisionHistory, desiredRevisionHistory)
})
t.Run("will keep conflicting fields if not from trusted manager", func(t *testing.T) {
@ -58,7 +58,7 @@ func TestNormalize(t *testing.T) {
liveResult, desiredResult, err := managedfields.Normalize(liveState, desiredState, trustedManagers, &pt)
// then
assert.NoError(t, err)
require.NoError(t, err)
validateNestedFloat64(t, float64(3), desiredResult, "spec", "replicas")
validateNestedFloat64(t, float64(1), desiredResult, "spec", "revisionHistoryLimit")
validateNestedFloat64(t, float64(2), liveResult, "spec", "replicas")
@ -74,7 +74,7 @@ func TestNormalize(t *testing.T) {
liveResult, desiredResult, err := managedfields.Normalize(nil, desiredState, trustedManagers, &pt)
// then
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, liveResult)
assert.Nil(t, desiredResult)
validateNestedFloat64(t, float64(3), desiredState, "spec", "replicas")
@ -90,7 +90,7 @@ func TestNormalize(t *testing.T) {
liveResult, desiredResult, err := managedfields.Normalize(liveState, nil, trustedManagers, &pt)
// then
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, liveResult)
assert.Nil(t, desiredResult)
validateNestedFloat64(t, float64(2), liveState, "spec", "replicas")
@ -106,7 +106,7 @@ func TestNormalize(t *testing.T) {
liveResult, desiredResult, err := managedfields.Normalize(liveState, desiredState, []string{}, &pt)
// then
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, liveResult)
assert.Nil(t, desiredResult)
validateNestedFloat64(t, float64(3), desiredState, "spec", "replicas")
@ -153,7 +153,7 @@ func getNestedFloat64(t *testing.T, obj *unstructured.Unstructured, fields ...st
t.Helper()
current, ok, err := unstructured.NestedFloat64(obj.Object, fields...)
assert.True(t, ok, "nested field not found")
assert.NoError(t, err)
require.NoError(t, err)
return current
}

View file

@ -21,22 +21,22 @@ func TestNormalizeObjectWithMatchedGroupKind(t *testing.T) {
JSONPointers: []string{"/not-matching-path", "/spec/template/spec/containers"},
}}, make(map[string]v1alpha1.ResourceOverride), IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
_, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, has)
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
_, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, has)
err = normalizer.Normalize(nil)
assert.Error(t, err)
require.Error(t, err)
}
func TestNormalizeNoMatchedGroupKinds(t *testing.T) {
@ -46,15 +46,15 @@ func TestNormalizeNoMatchedGroupKinds(t *testing.T) {
JSONPointers: []string{"/spec"},
}}, make(map[string]v1alpha1.ResourceOverride), IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
_, hasSpec, err := unstructured.NestedMap(deployment.Object, "spec")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, hasSpec)
}
@ -65,18 +65,18 @@ func TestNormalizeMatchedResourceOverrides(t *testing.T) {
},
}, IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
_, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, has)
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
_, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, has)
}
@ -119,19 +119,19 @@ func TestNormalizeMissingJsonPointer(t *testing.T) {
IgnoreDifferences: v1alpha1.OverrideIgnoreDiff{JSONPointers: []string{"/spec/additionalPrinterColumns/0/priority"}},
},
}, IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
crd := unstructured.Unstructured{}
err = yaml.Unmarshal([]byte(testCRDYAML), &crd)
assert.NoError(t, err)
require.NoError(t, err)
err = normalizer.Normalize(&crd)
assert.NoError(t, err)
require.NoError(t, err)
}
func TestNormalizeGlobMatch(t *testing.T) {
@ -141,18 +141,18 @@ func TestNormalizeGlobMatch(t *testing.T) {
},
}, IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
_, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, has)
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
_, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, has)
}
@ -163,7 +163,7 @@ func TestNormalizeJQPathExpression(t *testing.T) {
JQPathExpressions: []string{".spec.template.spec.initContainers[] | select(.name == \"init-container-0\")"},
}}, make(map[string]v1alpha1.ResourceOverride), IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
@ -171,22 +171,22 @@ func TestNormalizeJQPathExpression(t *testing.T) {
initContainers = append(initContainers, map[string]interface{}{"name": "init-container-0"})
initContainers = append(initContainers, map[string]interface{}{"name": "init-container-1"})
err = unstructured.SetNestedSlice(deployment.Object, initContainers, "spec", "template", "spec", "initContainers")
assert.NoError(t, err)
require.NoError(t, err)
actualInitContainers, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "initContainers")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, has)
assert.Len(t, actualInitContainers, 2)
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
actualInitContainers, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "initContainers")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, has)
assert.Len(t, actualInitContainers, 1)
actualInitContainerName, has, err := unstructured.NestedString(actualInitContainers[0].(map[string]interface{}), "name")
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, has)
assert.Equal(t, "init-container-1", actualInitContainerName)
}
@ -199,7 +199,7 @@ func TestNormalizeIllegalJQPathExpression(t *testing.T) {
// JSONPointers: []string{"no-starting-slash"},
}}, make(map[string]v1alpha1.ResourceOverride), IgnoreNormalizerOpts{})
assert.Error(t, err)
require.Error(t, err)
}
func TestNormalizeJQPathExpressionWithError(t *testing.T) {
@ -209,17 +209,17 @@ func TestNormalizeJQPathExpressionWithError(t *testing.T) {
JQPathExpressions: []string{".spec.fakeField.foo[]"},
}}, make(map[string]v1alpha1.ResourceOverride), IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
deployment := test.NewDeployment()
originalDeployment, err := deployment.MarshalJSON()
assert.NoError(t, err)
require.NoError(t, err)
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
require.NoError(t, err)
normalizedDeployment, err := deployment.MarshalJSON()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, originalDeployment, normalizedDeployment)
}
@ -231,7 +231,7 @@ func TestNormalizeExpectedErrorAreSilenced(t *testing.T) {
},
},
}, IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
ignoreNormalizer := normalizer.(*ignoreNormalizer)
assert.Len(t, ignoreNormalizer.patches, 2)
@ -240,7 +240,7 @@ func TestNormalizeExpectedErrorAreSilenced(t *testing.T) {
deployment := test.NewDeployment()
deploymentData, err := json.Marshal(deployment)
assert.NoError(t, err)
require.NoError(t, err)
// Error: "error in remove for path: '/invalid': Unable to remove nonexistent key: invalid: missing value"
_, err = jsonPatch.Apply(deploymentData)
@ -261,7 +261,7 @@ func TestJqPathExpressionFailWithTimeout(t *testing.T) {
},
},
}, IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
ignoreNormalizer := normalizer.(*ignoreNormalizer)
assert.Len(t, ignoreNormalizer.patches, 1)
@ -269,7 +269,7 @@ func TestJqPathExpressionFailWithTimeout(t *testing.T) {
deployment := test.NewDeployment()
deploymentData, err := json.Marshal(deployment)
assert.NoError(t, err)
require.NoError(t, err)
_, err = jqPatch.Apply(deploymentData)
assert.ErrorContains(t, err, "JQ patch execution timed out")
@ -282,7 +282,7 @@ func TestJQPathExpressionReturnsHelpfulError(t *testing.T) {
JQPathExpressions: []string{`.nothing) | .data["config.yaml"] |= (fromjson | del(.auth) | tojson`},
}}, nil, IgnoreNormalizerOpts{})
assert.NoError(t, err)
require.NoError(t, err)
configMap := test.NewConfigMap()
require.NoError(t, err)

View file

@ -77,36 +77,28 @@ func TestNormalize_MapField(t *testing.T) {
}},
},
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
rollout := mustUnmarshalYAML(someCRDYaml)
err = normalizer.Normalize(rollout)
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
container, err := nestedSliceMap(rollout.Object, 0, "spec", "template", "spec", "containers")
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
cpu, ok, err := unstructured.NestedFieldNoCopy(container, "resources", "requests", "cpu")
if !assert.NoError(t, err) || !assert.True(t, ok) {
return
}
require.NoError(t, err)
require.True(t, ok)
assert.Equal(t, "2", cpu)
volumeMount, err := nestedSliceMap(container, 0, "volumeMounts")
if !assert.NoError(t, err) || !assert.True(t, ok) {
return
}
require.NoError(t, err)
require.True(t, ok)
_, ok, err = unstructured.NestedBool(volumeMount, "readOnly")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, ok)
}
@ -120,24 +112,17 @@ func TestNormalize_FieldInNestedSlice(t *testing.T) {
}},
},
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
err = normalizer.Normalize(rollout)
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
container, err := nestedSliceMap(rollout.Object, 0, "spec", "template", "spec", "containers")
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
cpu, ok, err := unstructured.NestedFieldNoCopy(container, "resources", "requests", "cpu")
if !assert.NoError(t, err) || !assert.True(t, ok) {
return
}
require.NoError(t, err)
require.True(t, ok)
assert.Equal(t, "2", cpu)
}
@ -172,29 +157,20 @@ spec:
}},
},
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
err = normalizer.Normalize(rollout)
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
template, err := nestedSliceMap(rollout.Object, 0, "spec", "templates")
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
container, err := nestedSliceMap(template, 0, "spec", "containers")
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
cpu, ok, err := unstructured.NestedFieldNoCopy(container, "resources", "requests", "cpu")
if !assert.NoError(t, err) || !assert.True(t, ok) {
return
}
require.NoError(t, err)
require.True(t, ok)
assert.Equal(t, "2", cpu)
}
@ -213,19 +189,14 @@ spec:
}},
},
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
err = normalizer.Normalize(rollout)
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
ram, ok, err := unstructured.NestedFieldNoCopy(rollout.Object, "spec", "ram")
if !assert.NoError(t, err) || !assert.True(t, ok) {
return
}
require.NoError(t, err)
require.True(t, ok)
assert.Equal(t, "1250M", ram)
}
@ -266,33 +237,24 @@ func TestFieldDoesNotExist(t *testing.T) {
}},
},
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
err = normalizer.Normalize(rollout)
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
container, err := nestedSliceMap(rollout.Object, 0, "spec", "template", "spec", "containers")
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
cpu, ok, err := unstructured.NestedFieldNoCopy(container, "resources", "requests", "cpu")
if !assert.NoError(t, err) || !assert.True(t, ok) {
return
}
require.NoError(t, err)
require.True(t, ok)
assert.Equal(t, "2000m", cpu)
}
func TestRolloutPreConfigured(t *testing.T) {
normalizer, err := NewKnownTypesNormalizer(map[string]v1alpha1.ResourceOverride{})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
_, ok := normalizer.typeFields[schema.GroupKind{Group: application.Group, Kind: "Rollout"}]
assert.True(t, ok)
}
@ -306,18 +268,14 @@ func TestOverrideKeyWithoutGroup(t *testing.T) {
}},
},
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
_, ok := normalizer.typeFields[schema.GroupKind{Group: "", Kind: "ConfigMap"}]
assert.True(t, ok)
}
func TestKnownTypes(t *testing.T) {
typesData, err := os.ReadFile("./diffing_known_types.txt")
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
for _, typeName := range strings.Split(string(typesData), "\n") {
if typeName = strings.TrimSpace(typeName); typeName == "" {
continue

View file

@ -7,6 +7,7 @@ import (
"github.com/argoproj/argo-cd/v2/util/kube"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v2"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@ -15,32 +16,32 @@ import (
func TestSetAppInstanceLabel(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
err = resourceTracking.SetAppInstance(&obj, common.LabelKeyAppInstance, "my-app", "", TrackingMethodLabel)
assert.NoError(t, err)
require.NoError(t, err)
app := resourceTracking.GetAppName(&obj, common.LabelKeyAppInstance, TrackingMethodLabel)
assert.Equal(t, "my-app", app)
}
func TestSetAppInstanceAnnotation(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
err = resourceTracking.SetAppInstance(&obj, common.AnnotationKeyAppInstance, "my-app", "", TrackingMethodAnnotation)
assert.NoError(t, err)
require.NoError(t, err)
app := resourceTracking.GetAppName(&obj, common.AnnotationKeyAppInstance, TrackingMethodAnnotation)
assert.Equal(t, "my-app", app)
@ -48,15 +49,15 @@ func TestSetAppInstanceAnnotation(t *testing.T) {
func TestSetAppInstanceAnnotationAndLabel(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
err = resourceTracking.SetAppInstance(&obj, common.LabelKeyAppInstance, "my-app", "", TrackingMethodAnnotationAndLabel)
assert.NoError(t, err)
require.NoError(t, err)
app := resourceTracking.GetAppName(&obj, common.LabelKeyAppInstance, TrackingMethodAnnotationAndLabel)
assert.Equal(t, "my-app", app)
@ -64,15 +65,15 @@ func TestSetAppInstanceAnnotationAndLabel(t *testing.T) {
func TestSetAppInstanceAnnotationAndLabelLongName(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
err = resourceTracking.SetAppInstance(&obj, common.LabelKeyAppInstance, "my-app-with-an-extremely-long-name-that-is-over-sixty-three-characters", "", TrackingMethodAnnotationAndLabel)
assert.NoError(t, err)
require.NoError(t, err)
// the annotation should still work, so the name from GetAppName should not be truncated
app := resourceTracking.GetAppName(&obj, common.LabelKeyAppInstance, TrackingMethodAnnotationAndLabel)
@ -84,15 +85,15 @@ func TestSetAppInstanceAnnotationAndLabelLongName(t *testing.T) {
func TestSetAppInstanceAnnotationAndLabelLongNameBadEnding(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
err = resourceTracking.SetAppInstance(&obj, common.LabelKeyAppInstance, "the-very-suspicious-name-with-precisely-sixty-three-characters-with-hyphen", "", TrackingMethodAnnotationAndLabel)
assert.NoError(t, err)
require.NoError(t, err)
// the annotation should still work, so the name from GetAppName should not be truncated
app := resourceTracking.GetAppName(&obj, common.LabelKeyAppInstance, TrackingMethodAnnotationAndLabel)
@ -104,10 +105,10 @@ func TestSetAppInstanceAnnotationAndLabelLongNameBadEnding(t *testing.T) {
func TestSetAppInstanceAnnotationAndLabelOutOfBounds(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
@ -118,11 +119,11 @@ func TestSetAppInstanceAnnotationAndLabelOutOfBounds(t *testing.T) {
func TestSetAppInstanceAnnotationNotFound(t *testing.T) {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
assert.NoError(t, err)
require.NoError(t, err)
var obj unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
assert.NoError(t, err)
require.NoError(t, err)
resourceTracking := NewResourceTracking()
@ -133,9 +134,7 @@ func TestSetAppInstanceAnnotationNotFound(t *testing.T) {
func TestParseAppInstanceValue(t *testing.T) {
resourceTracking := NewResourceTracking()
appInstanceValue, err := resourceTracking.ParseAppInstanceValue("app:<group>/<kind>:<namespace>/<name>")
if !assert.NoError(t, err) {
t.Fatal()
}
require.NoError(t, err)
assert.Equal(t, "app", appInstanceValue.ApplicationName)
assert.Equal(t, "<group>", appInstanceValue.Group)
assert.Equal(t, "<kind>", appInstanceValue.Kind)
@ -146,9 +145,7 @@ func TestParseAppInstanceValue(t *testing.T) {
func TestParseAppInstanceValueColon(t *testing.T) {
resourceTracking := NewResourceTracking()
appInstanceValue, err := resourceTracking.ParseAppInstanceValue("app:<group>/<kind>:<namespace>/<name>:<colon>")
if !assert.NoError(t, err) {
t.Fatal()
}
require.NoError(t, err)
assert.Equal(t, "app", appInstanceValue.ApplicationName)
assert.Equal(t, "<group>", appInstanceValue.Group)
assert.Equal(t, "<kind>", appInstanceValue.Kind)
@ -159,31 +156,27 @@ func TestParseAppInstanceValueColon(t *testing.T) {
func TestParseAppInstanceValueWrongFormat1(t *testing.T) {
resourceTracking := NewResourceTracking()
_, err := resourceTracking.ParseAppInstanceValue("app")
assert.Error(t, err, WrongResourceTrackingFormat)
require.Error(t, err, WrongResourceTrackingFormat)
}
func TestParseAppInstanceValueWrongFormat2(t *testing.T) {
resourceTracking := NewResourceTracking()
_, err := resourceTracking.ParseAppInstanceValue("app;group/kind/ns")
assert.Error(t, err, WrongResourceTrackingFormat)
require.Error(t, err, WrongResourceTrackingFormat)
}
func TestParseAppInstanceValueCorrectFormat(t *testing.T) {
resourceTracking := NewResourceTracking()
_, err := resourceTracking.ParseAppInstanceValue("app:group/kind:test/ns")
assert.NoError(t, err)
require.NoError(t, err)
}
func sampleResource() *unstructured.Unstructured {
func sampleResource(t *testing.T) *unstructured.Unstructured {
yamlBytes, err := os.ReadFile("testdata/svc.yaml")
if err != nil {
panic(err)
}
require.NoError(t, err)
var obj *unstructured.Unstructured
err = yaml.Unmarshal(yamlBytes, &obj)
if err != nil {
panic(err)
}
require.NoError(t, err)
return obj
}
@ -191,20 +184,20 @@ func TestResourceIdNormalizer_Normalize(t *testing.T) {
rt := NewResourceTracking()
// live object is a resource that has old style tracking label
liveObj := sampleResource()
liveObj := sampleResource(t)
err := rt.SetAppInstance(liveObj, common.LabelKeyAppInstance, "my-app", "", TrackingMethodLabel)
assert.NoError(t, err)
require.NoError(t, err)
// config object is a resource that has new style tracking annotation
configObj := sampleResource()
configObj := sampleResource(t)
err = rt.SetAppInstance(configObj, common.AnnotationKeyAppInstance, "my-app2", "", TrackingMethodAnnotation)
assert.NoError(t, err)
require.NoError(t, err)
_ = rt.Normalize(configObj, liveObj, common.LabelKeyAppInstance, string(TrackingMethodAnnotation))
// the normalization should affect add the new style annotation and drop old tracking label from live object
annotation, err := kube.GetAppInstanceAnnotation(configObj, common.AnnotationKeyAppInstance)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, liveObj.GetAnnotations()[common.AnnotationKeyAppInstance], annotation)
_, hasOldLabel := liveObj.GetLabels()[common.LabelKeyAppInstance]
assert.False(t, hasOldLabel)
@ -214,22 +207,22 @@ func TestResourceIdNormalizer_Normalize_ConfigHasOldLabel(t *testing.T) {
rt := NewResourceTracking()
// live object is a resource that has old style tracking label
liveObj := sampleResource()
liveObj := sampleResource(t)
err := rt.SetAppInstance(liveObj, common.LabelKeyAppInstance, "my-app", "", TrackingMethodLabel)
assert.NoError(t, err)
require.NoError(t, err)
// config object is a resource that has new style tracking annotation
configObj := sampleResource()
configObj := sampleResource(t)
err = rt.SetAppInstance(configObj, common.AnnotationKeyAppInstance, "my-app2", "", TrackingMethodAnnotation)
assert.NoError(t, err)
require.NoError(t, err)
err = rt.SetAppInstance(configObj, common.LabelKeyAppInstance, "my-app", "", TrackingMethodLabel)
assert.NoError(t, err)
require.NoError(t, err)
_ = rt.Normalize(configObj, liveObj, common.LabelKeyAppInstance, string(TrackingMethodAnnotation))
// the normalization should affect add the new style annotation and drop old tracking label from live object
annotation, err := kube.GetAppInstanceAnnotation(configObj, common.AnnotationKeyAppInstance)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, liveObj.GetAnnotations()[common.AnnotationKeyAppInstance], annotation)
_, hasOldLabel := liveObj.GetLabels()[common.LabelKeyAppInstance]
assert.True(t, hasOldLabel)

View file

@ -6,6 +6,7 @@ import (
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
. "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
cacheutil "github.com/argoproj/argo-cd/v2/util/cache"
@ -30,13 +31,13 @@ func TestCache_GetAppManagedResources(t *testing.T) {
assert.Equal(t, ErrCacheMiss, err)
// populate cache
err = cache.SetAppManagedResources("my-appname", []*ResourceDiff{{Name: "my-name"}})
assert.NoError(t, err)
require.NoError(t, err)
// cache miss
err = cache.GetAppManagedResources("other-appname", value)
assert.Equal(t, ErrCacheMiss, err)
// cache hit
err = cache.GetAppManagedResources("my-appname", value)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, &[]*ResourceDiff{{Name: "my-name"}}, value)
}
@ -48,18 +49,18 @@ func TestCache_GetAppResourcesTree(t *testing.T) {
assert.Equal(t, ErrCacheMiss, err)
// populate cache
err = cache.SetAppResourcesTree("my-appname", &ApplicationTree{Nodes: []ResourceNode{{}}})
assert.NoError(t, err)
require.NoError(t, err)
// cache miss
err = cache.GetAppResourcesTree("other-appname", value)
assert.Equal(t, ErrCacheMiss, err)
// cache hit
err = cache.GetAppResourcesTree("my-appname", value)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, &ApplicationTree{Nodes: []ResourceNode{{}}}, value)
}
func TestAddCacheFlagsToCmd(t *testing.T) {
cache, err := AddCacheFlagsToCmd(&cobra.Command{})()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, 1*time.Hour, cache.appStateCacheExpiration)
}

View file

@ -9,13 +9,14 @@ import (
"github.com/redis/go-redis/v9"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/common"
)
func TestAddCacheFlagsToCmd(t *testing.T) {
cache, err := AddCacheFlagsToCmd(&cobra.Command{})()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, 24*time.Hour, cache.client.(*redisCache).expiration)
}
@ -38,45 +39,45 @@ func TestCacheClient(t *testing.T) {
cache := NewCache(client)
t.Run("SetItem", func(t *testing.T) {
err := cache.SetItem("foo", "bar", &CacheActionOpts{Expiration: 60 * time.Second, DisableOverwrite: true, Delete: false})
assert.NoError(t, err)
require.NoError(t, err)
var output string
err = cache.GetItem("foo", &output)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "bar", output)
})
t.Run("SetCacheItem W/Disable Overwrite", func(t *testing.T) {
err := cache.SetItem("foo", "bar", &CacheActionOpts{Expiration: 60 * time.Second, DisableOverwrite: true, Delete: false})
assert.NoError(t, err)
require.NoError(t, err)
var output string
err = cache.GetItem("foo", &output)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "bar", output)
err = cache.SetItem("foo", "bar", &CacheActionOpts{Expiration: 60 * time.Second, DisableOverwrite: true, Delete: false})
assert.NoError(t, err)
require.NoError(t, err)
err = cache.GetItem("foo", &output)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "bar", output, "output should not have changed with DisableOverwrite set to true")
})
t.Run("GetItem", func(t *testing.T) {
var val string
err := cache.GetItem("foo", &val)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "bar", val)
})
t.Run("DeleteItem", func(t *testing.T) {
err := cache.SetItem("foo", "bar", &CacheActionOpts{Expiration: 0, Delete: true})
assert.NoError(t, err)
require.NoError(t, err)
var val string
err = cache.GetItem("foo", &val)
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, val)
})
t.Run("Check for nil items", func(t *testing.T) {
err := cache.SetItem("foo", nil, &CacheActionOpts{Expiration: 0, Delete: true})
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "cannot set nil item")
err = cache.GetItem("foo", nil)
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "cannot get item")
})
}

View file

@ -5,6 +5,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type testStruct struct {
@ -27,12 +28,12 @@ func TestCache(t *testing.T) {
})
cacheObj.Foo = "baz"
err = c.Get("key", &obj)
assert.NoError(t, err)
require.NoError(t, err)
assert.EqualValues(t, "foo", obj.Foo)
assert.EqualValues(t, "bar", string(obj.Bar))
err = c.Delete("key")
assert.NoError(t, err)
require.NoError(t, err)
err = c.Get("key", &obj)
assert.Equal(t, err, ErrCacheMiss)
}

View file

@ -5,6 +5,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type foo struct {
@ -20,8 +21,8 @@ func TestInMemoryCache(t *testing.T) {
assert.Equal(t, ErrCacheMiss, err)
// cache hit
err = cache.Set(&Item{Key: "my-key", Object: &foo{Bar: "bar"}})
assert.NoError(t, err)
require.NoError(t, err)
err = cache.Get("my-key", obj)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, &foo{Bar: "bar"}, obj)
}

View file

@ -12,6 +12,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/redis/go-redis/v9"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var (
@ -66,28 +67,28 @@ func TestRedisSetCache(t *testing.T) {
t.Run("Successful set", func(t *testing.T) {
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 60*time.Second, RedisCompressionNone)
err = client.Set(&Item{Key: "foo", Object: "bar"})
assert.NoError(t, err)
require.NoError(t, err)
})
t.Run("Successful get", func(t *testing.T) {
var res string
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 10*time.Second, RedisCompressionNone)
err = client.Get("foo", &res)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "bar", res)
})
t.Run("Successful delete", func(t *testing.T) {
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 10*time.Second, RedisCompressionNone)
err = client.Delete("foo")
assert.NoError(t, err)
require.NoError(t, err)
})
t.Run("Cache miss", func(t *testing.T) {
var res string
client := NewRedisCache(redis.NewClient(&redis.Options{Addr: mr.Addr()}), 10*time.Second, RedisCompressionNone)
err = client.Get("foo", &res)
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "cache: key is missing")
})
}
@ -104,14 +105,14 @@ func TestRedisSetCacheCompressed(t *testing.T) {
client := NewRedisCache(redisClient, 10*time.Second, RedisCompressionGZip)
testValue := "my-value"
assert.NoError(t, client.Set(&Item{Key: "my-key", Object: testValue}))
require.NoError(t, client.Set(&Item{Key: "my-key", Object: testValue}))
compressedData, err := redisClient.Get(context.Background(), "my-key.gz").Bytes()
assert.NoError(t, err)
require.NoError(t, err)
assert.Greater(t, len(compressedData), len([]byte(testValue)), "compressed data is bigger than uncompressed")
var result string
assert.NoError(t, client.Get("my-key", &result))
require.NoError(t, client.Get("my-key", &result))
assert.Equal(t, testValue, result)
}
@ -136,29 +137,29 @@ func TestRedisMetrics(t *testing.T) {
// client successful request
err = client.Set(&Item{Key: "foo", Object: "bar"})
assert.NoError(t, err)
require.NoError(t, err)
err = client.Get("foo", &res)
assert.NoError(t, err)
require.NoError(t, err)
c, err := ms.redisRequestCounter.GetMetricWithLabelValues("mock", "false")
assert.NoError(t, err)
require.NoError(t, err)
err = c.Write(metric)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, float64(2), metric.Counter.GetValue())
// faulty client failed request
err = faultyClient.Get("foo", &res)
assert.Error(t, err)
require.Error(t, err)
c, err = ms.redisRequestCounter.GetMetricWithLabelValues("mock", "true")
assert.NoError(t, err)
require.NoError(t, err)
err = c.Write(metric)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, float64(1), metric.Counter.GetValue())
// both clients histogram count
o, err := ms.redisRequestHistogram.GetMetricWithLabelValues("mock")
assert.NoError(t, err)
require.NoError(t, err)
err = o.(prometheus.Metric).Write(metric)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, 3, int(metric.Histogram.GetSampleCount()))
}

View file

@ -7,6 +7,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/common"
)
@ -206,59 +207,59 @@ vs-ssh.visualstudio.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOf
func Test_TLSCertificate_ValidPEM_ValidCert(t *testing.T) {
// Valid PEM data, single certificate, expect array of length 1
certificates, err := ParseTLSCertificatesFromData(Test_TLSValidSingleCert)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, certificates, 1)
// Expect good decode
x509Cert, err := DecodePEMCertificateToX509(certificates[0])
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, Test_Cert1CN, x509Cert.Subject.String())
}
func Test_TLSCertificate_ValidPEM_InvalidCert(t *testing.T) {
// Valid PEM data, but invalid certificate
certificates, err := ParseTLSCertificatesFromData(Test_TLSInvalidSingleCert)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, certificates, 1)
// Expect bad decode
_, err = DecodePEMCertificateToX509(certificates[0])
assert.Error(t, err)
require.Error(t, err)
}
func Test_TLSCertificate_InvalidPEM(t *testing.T) {
// Invalid PEM data, expect array of length 0
certificates, err := ParseTLSCertificatesFromData(Test_TLSInvalidPEMData)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, certificates)
}
func Test_TLSCertificate_ValidPEM_ValidCert_Multi(t *testing.T) {
// Valid PEM data, two certificates, expect array of length 2
certificates, err := ParseTLSCertificatesFromData(Test_TLSValidMultiCert)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, certificates, 2)
// Expect good decode
x509Cert, err := DecodePEMCertificateToX509(certificates[0])
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, Test_Cert1CN, x509Cert.Subject.String())
x509Cert, err = DecodePEMCertificateToX509(certificates[1])
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, Test_Cert2CN, x509Cert.Subject.String())
}
func Test_TLSCertificate_ValidPEM_ValidCert_FromFile(t *testing.T) {
// Valid PEM data, single certificate from file, expect array of length 1
certificates, err := ParseTLSCertificatesFromPath("../../test/certificates/cert1.pem")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, certificates, 1)
// Expect good decode
x509Cert, err := DecodePEMCertificateToX509(certificates[0])
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, Test_Cert1CN, x509Cert.Subject.String())
}
func Test_TLSCertPool(t *testing.T) {
certificates, err := ParseTLSCertificatesFromData(Test_TLSValidMultiCert)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, certificates, 2)
certPool := GetCertPoolFromPEMData(certificates)
assert.NotNil(t, certPool)
@ -267,27 +268,27 @@ func Test_TLSCertPool(t *testing.T) {
func Test_TLSCertificate_CertFromNonExistingFile(t *testing.T) {
// Non-existing file, expect err
_, err := ParseTLSCertificatesFromPath("../../test/certificates/cert_nonexisting.pem")
assert.Error(t, err)
require.Error(t, err)
}
func Test_SSHKnownHostsData_ParseData(t *testing.T) {
// Expect valid data with 7 known host entries
entries, err := ParseSSHKnownHostsFromData(Test_ValidSSHKnownHostsData)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, entries, 7)
}
func Test_SSHKnownHostsData_ParseFile(t *testing.T) {
// Expect valid data with 7 known host entries
entries, err := ParseSSHKnownHostsFromPath("../../test/certificates/ssh_known_hosts")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, entries, 7)
}
func Test_SSHKnownHostsData_ParseNonExistingFile(t *testing.T) {
// Expect valid data with 7 known host entries
entries, err := ParseSSHKnownHostsFromPath("../../test/certificates/ssh_known_hosts_invalid")
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, entries)
}
@ -295,15 +296,15 @@ func Test_SSHKnownHostsData_Tokenize(t *testing.T) {
// All entries should parse to valid SSH public keys
// All entries should be tokenizable, and tokens should be feedable to decoder
entries, err := ParseSSHKnownHostsFromData(Test_ValidSSHKnownHostsData)
assert.NoError(t, err)
require.NoError(t, err)
for _, entry := range entries {
hosts, _, err := KnownHostsLineToPublicKey(entry)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, hosts, 1)
hoststring, subtype, certdata, err := TokenizeSSHKnownHostsEntry(entry)
assert.NoError(t, err)
require.NoError(t, err)
hosts, _, err = TokenizedDataToPublicKey(hoststring, subtype, string(certdata))
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, hosts, 1)
}
}
@ -333,11 +334,11 @@ func Test_SSHFingerprintSHA256(t *testing.T) {
"ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og",
}
entries, err := ParseSSHKnownHostsFromData(Test_ValidSSHKnownHostsData)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, entries, 7)
for idx, entry := range entries {
_, pubKey, err := KnownHostsLineToPublicKey(entry)
assert.NoError(t, err)
require.NoError(t, err)
fp := SSHFingerprintSHA256(pubKey)
assert.Equal(t, fp, fingerprints[idx])
}
@ -355,7 +356,7 @@ func Test_SSHFingerPrintSHA256FromString(t *testing.T) {
"ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og",
}
entries, err := ParseSSHKnownHostsFromData(Test_ValidSSHKnownHostsData)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, entries, 7)
for idx, entry := range entries {
fp := SSHFingerprintSHA256FromString(entry)
@ -482,7 +483,7 @@ func TestGetCertificateForConnect(t *testing.T) {
}
t.Setenv(common.EnvVarTLSDataPath, temppath)
certs, err := GetCertificateForConnect("127.0.0.1")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, certs, 1)
})
@ -490,7 +491,7 @@ func TestGetCertificateForConnect(t *testing.T) {
temppath := t.TempDir()
t.Setenv(common.EnvVarTLSDataPath, temppath)
certs, err := GetCertificateForConnect("127.0.0.1")
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, certs)
})
@ -502,7 +503,7 @@ func TestGetCertificateForConnect(t *testing.T) {
}
t.Setenv(common.EnvVarTLSDataPath, temppath)
certs, err := GetCertificateForConnect("127.0.0.1")
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, certs)
assert.Contains(t, err.Error(), "no certificates found")
})
@ -521,7 +522,7 @@ func TestGetCertBundlePathForRepository(t *testing.T) {
}
t.Setenv(common.EnvVarTLSDataPath, temppath)
certpath, err := GetCertBundlePathForRepository("127.0.0.1")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, certpath, path.Join(temppath, "127.0.0.1"))
})
@ -529,7 +530,7 @@ func TestGetCertBundlePathForRepository(t *testing.T) {
temppath := t.TempDir()
t.Setenv(common.EnvVarTLSDataPath, temppath)
certpath, err := GetCertBundlePathForRepository("127.0.0.1")
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, certpath)
})
@ -541,7 +542,7 @@ func TestGetCertBundlePathForRepository(t *testing.T) {
}
t.Setenv(common.EnvVarTLSDataPath, temppath)
certpath, err := GetCertBundlePathForRepository("127.0.0.1")
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, certpath)
})
}

View file

@ -7,6 +7,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
apierr "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -54,7 +55,7 @@ func newServiceAccountSecret() *corev1.Secret {
func TestParseServiceAccountToken(t *testing.T) {
claims, err := ParseServiceAccountToken(testToken)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testClaims, *claims)
}
@ -78,36 +79,36 @@ func TestCreateServiceAccount(t *testing.T) {
t.Run("New SA", func(t *testing.T) {
cs := fake.NewSimpleClientset(ns)
err := CreateServiceAccount(cs, "argocd-manager", "kube-system")
assert.NoError(t, err)
require.NoError(t, err)
rsa, err := cs.CoreV1().ServiceAccounts("kube-system").Get(context.Background(), "argocd-manager", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, rsa)
})
t.Run("SA exists already", func(t *testing.T) {
cs := fake.NewSimpleClientset(ns, sa)
err := CreateServiceAccount(cs, "argocd-manager", "kube-system")
assert.NoError(t, err)
require.NoError(t, err)
rsa, err := cs.CoreV1().ServiceAccounts("kube-system").Get(context.Background(), "argocd-manager", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, rsa)
})
t.Run("Invalid name", func(t *testing.T) {
cs := fake.NewSimpleClientset(ns)
err := CreateServiceAccount(cs, "", "kube-system")
assert.NoError(t, err)
require.NoError(t, err)
rsa, err := cs.CoreV1().ServiceAccounts("kube-system").Get(context.Background(), "argocd-manager", metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, rsa)
})
t.Run("Invalid namespace", func(t *testing.T) {
cs := fake.NewSimpleClientset()
err := CreateServiceAccount(cs, "argocd-manager", "invalid")
assert.NoError(t, err)
require.NoError(t, err)
rsa, err := cs.CoreV1().ServiceAccounts("invalid").Get(context.Background(), "argocd-manager", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, rsa)
})
}
@ -148,7 +149,7 @@ func TestInstallClusterManagerRBAC(t *testing.T) {
t.Run("Cluster Scope - Success", func(t *testing.T) {
cs := fake.NewSimpleClientset(ns, secret, sa)
token, err := InstallClusterManagerRBAC(cs, "test", nil, testBearerTokenTimeout)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "foobar", token)
})
@ -157,14 +158,14 @@ func TestInstallClusterManagerRBAC(t *testing.T) {
nsecret.Data = make(map[string][]byte)
cs := fake.NewSimpleClientset(ns, nsecret, sa)
token, err := InstallClusterManagerRBAC(cs, "test", nil, testBearerTokenTimeout)
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, token)
})
t.Run("Namespace Scope - Success", func(t *testing.T) {
cs := fake.NewSimpleClientset(ns, secret, sa)
token, err := InstallClusterManagerRBAC(cs, "test", []string{"nsa"}, testBearerTokenTimeout)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "foobar", token)
})
@ -173,7 +174,7 @@ func TestInstallClusterManagerRBAC(t *testing.T) {
nsecret.Data = make(map[string][]byte)
cs := fake.NewSimpleClientset(ns, nsecret, sa)
token, err := InstallClusterManagerRBAC(cs, "test", []string{"nsa"}, testBearerTokenTimeout)
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, token)
})
}
@ -182,7 +183,7 @@ func TestUninstallClusterManagerRBAC(t *testing.T) {
t.Run("Success", func(t *testing.T) {
cs := fake.NewSimpleClientset(newServiceAccountSecret())
err := UninstallClusterManagerRBAC(cs)
assert.NoError(t, err)
require.NoError(t, err)
})
}
@ -201,7 +202,7 @@ func TestGenerateNewClusterManagerSecret(t *testing.T) {
})
created, err := GenerateNewClusterManagerSecret(kubeclientset, &testClaims)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "argocd-manager-token-abc123", created.Name)
assert.Equal(t, "fake-token", string(created.Data["token"]))
}
@ -216,12 +217,12 @@ func TestRotateServiceAccountSecrets(t *testing.T) {
kubeclientset := fake.NewSimpleClientset(newServiceAccount(), newServiceAccountSecret(), generatedSecret)
err := RotateServiceAccountSecrets(kubeclientset, &testClaims, generatedSecret)
assert.NoError(t, err)
require.NoError(t, err)
// Verify service account references new secret and old secret is deleted
saClient := kubeclientset.CoreV1().ServiceAccounts(testClaims.Namespace)
sa, err := saClient.Get(context.Background(), testClaims.ServiceAccountName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, []corev1.ObjectReference{
{
Name: "argocd-manager-token-abc123",
@ -256,7 +257,7 @@ func TestGetServiceAccountBearerToken(t *testing.T) {
kubeclientset := fake.NewSimpleClientset(sa, dockercfgSecret, tokenSecret)
token, err := GetServiceAccountBearerToken(kubeclientset, "kube-system", sa.Name, testBearerTokenTimeout)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, testToken, token)
}
@ -291,7 +292,7 @@ func Test_getOrCreateServiceAccountTokenSecret_NoSecretForSA(t *testing.T) {
})
got, err := getOrCreateServiceAccountTokenSecret(cs, ArgoCDManagerServiceAccount, ns.Name)
assert.NoError(t, err)
require.NoError(t, err)
assert.Contains(t, got, "argocd-manager-token-")
obj, err := cs.Tracker().Get(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"},
@ -342,7 +343,7 @@ func Test_getOrCreateServiceAccountTokenSecret_SAHasSecret(t *testing.T) {
cs := fake.NewSimpleClientset(ns, saWithSecret, secret)
got, err := getOrCreateServiceAccountTokenSecret(cs, ArgoCDManagerServiceAccount, ns.Name)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "sa-secret", got)
obj, err := cs.Tracker().Get(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"},

View file

@ -11,6 +11,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestUnmarshalLocalFile(t *testing.T) {
@ -125,9 +126,9 @@ func TestUnmarshalReader(t *testing.T) {
value := "test-reader"
instance := testStruct{value}
data, err := json.Marshal(instance)
assert.NoError(t, err)
require.NoError(t, err)
var reader io.Reader = bytes.NewReader(data)
err = UnmarshalReader(reader, &instance)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, value, instance.Value)
}

View file

@ -5,6 +5,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
@ -296,7 +297,7 @@ func Test_ListCertificate(t *testing.T) {
HostNamePattern: "*",
CertType: "ssh",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, Test_NumSSHKnownHostsExpected)
for idx, entry := range certList.Items {
@ -310,7 +311,7 @@ func Test_ListCertificate(t *testing.T) {
HostNamePattern: "*",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, Test_NumTLSCertificatesExpected)
@ -320,14 +321,14 @@ func Test_ListCertificate(t *testing.T) {
HostNamePattern: "*",
CertType: "*",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, Test_NumTLSCertificatesExpected+Test_NumSSHKnownHostsExpected)
// List all certificates using nil selector
// Expected: List of 10 entries
certList, err = db.ListRepoCertificates(context.Background(), nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, Test_NumTLSCertificatesExpected+Test_NumSSHKnownHostsExpected)
@ -337,7 +338,7 @@ func Test_ListCertificate(t *testing.T) {
HostNamePattern: "gitlab.com",
CertType: "*",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 4)
for _, entry := range certList.Items {
@ -349,7 +350,7 @@ func Test_ListCertificate(t *testing.T) {
HostNamePattern: "gitlab.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
assert.Equal(t, "gitlab.com", certList.Items[0].ServerName)
@ -371,7 +372,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -385,7 +386,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -400,7 +401,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Check if it really was added
@ -409,7 +410,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
HostNamePattern: "foo.example.com",
CertType: "ssh",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -424,7 +425,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
@ -439,7 +440,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Existing cert, different data, upsert
@ -452,7 +453,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, true)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -467,7 +468,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Invalid known hosts entry, case 2: invalid base64 data
@ -481,7 +482,7 @@ func Test_CreateSSHKnownHostEntries(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
}
@ -501,7 +502,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -516,7 +517,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Check if it really was added
@ -525,7 +526,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
HostNamePattern: "foo.example.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -540,7 +541,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 2)
@ -550,7 +551,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
HostNamePattern: "bar.example.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 2)
@ -565,7 +566,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
@ -580,7 +581,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Valid TLS certificate, existing cert, different data, upsert
@ -594,7 +595,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, true)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 2)
@ -604,7 +605,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
HostNamePattern: "foo.example.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 2)
for _, entry := range certList.Items {
@ -623,7 +624,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Valid PEM data, new cert, but invalid certificate
@ -637,7 +638,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Invalid PEM data, existing cert, upsert
@ -651,7 +652,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, true)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
// Valid PEM data, existing cert, but invalid certificate, upsert
@ -665,7 +666,7 @@ func Test_CreateTLSCertificates(t *testing.T) {
},
},
}, true)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, certList)
}
@ -680,7 +681,7 @@ func Test_RemoveSSHKnownHosts(t *testing.T) {
HostNamePattern: "github.com",
CertType: "ssh",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -690,7 +691,7 @@ func Test_RemoveSSHKnownHosts(t *testing.T) {
HostNamePattern: "github.com",
CertType: "ssh",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
@ -700,7 +701,7 @@ func Test_RemoveSSHKnownHosts(t *testing.T) {
CertType: "ssh",
CertSubType: "ssh-ed25519",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -710,7 +711,7 @@ func Test_RemoveSSHKnownHosts(t *testing.T) {
CertType: "ssh",
CertSubType: "ssh-ed25519",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
@ -719,7 +720,7 @@ func Test_RemoveSSHKnownHosts(t *testing.T) {
certList, err = db.RemoveRepoCertificates(context.Background(), &CertificateListSelector{
CertType: "ssh",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 5)
@ -728,7 +729,7 @@ func Test_RemoveSSHKnownHosts(t *testing.T) {
certList, err = db.ListRepoCertificates(context.Background(), &CertificateListSelector{
CertType: "ssh",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
}
@ -744,7 +745,7 @@ func Test_RemoveTLSCertificates(t *testing.T) {
HostNamePattern: "gitlab.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 1)
@ -754,7 +755,7 @@ func Test_RemoveTLSCertificates(t *testing.T) {
HostNamePattern: "gitlab.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
@ -764,7 +765,7 @@ func Test_RemoveTLSCertificates(t *testing.T) {
HostNamePattern: "test.example.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Len(t, certList.Items, 2)
@ -774,7 +775,7 @@ func Test_RemoveTLSCertificates(t *testing.T) {
HostNamePattern: "test.example.com",
CertType: "https",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, certList)
assert.Empty(t, certList.Items)
}

View file

@ -25,27 +25,27 @@ const (
func Test_URIToSecretName(t *testing.T) {
name, err := URIToSecretName("cluster", "http://foo")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "cluster-foo-752281925", name)
name, err = URIToSecretName("cluster", "http://thelongestdomainnameintheworld.argocd-project.com:3000")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "cluster-thelongestdomainnameintheworld.argocd-project.com-2721640553", name)
name, err = URIToSecretName("cluster", "http://[fe80::1ff:fe23:4567:890a]")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "cluster-fe80--1ff-fe23-4567-890a-3877258831", name)
name, err = URIToSecretName("cluster", "http://[fe80::1ff:fe23:4567:890a]:8000")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "cluster-fe80--1ff-fe23-4567-890a-664858999", name)
name, err = URIToSecretName("cluster", "http://[FE80::1FF:FE23:4567:890A]:8000")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "cluster-fe80--1ff-fe23-4567-890a-682802007", name)
name, err = URIToSecretName("cluster", "http://:/abc")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "cluster--1969338796", name)
}
@ -108,7 +108,7 @@ func TestClusterToSecret(t *testing.T) {
}
s := &v1.Secret{}
err := clusterToSecret(cluster, s)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, []byte(cluster.Server), s.Data["server"])
assert.Equal(t, []byte(cluster.Name), s.Data["name"])
@ -145,7 +145,7 @@ func Test_secretToCluster_NoConfig(t *testing.T) {
},
}
cluster, err := SecretToCluster(secret)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, v1alpha1.Cluster{
Name: "test",
Server: "http://mycluster",
@ -193,14 +193,10 @@ func TestUpdateCluster(t *testing.T) {
Server: "http://mycluster",
RefreshRequestedAt: &requestedAt,
})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
secret, err := kubeclientset.CoreV1().Secrets(fakeNamespace).Get(context.Background(), "mycluster", metav1.GetOptions{})
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
assert.Equal(t, secret.Annotations[v1alpha1.AnnotationKeyRefresh], requestedAt.Format(time.RFC3339))
}
@ -255,7 +251,7 @@ func TestRejectCreationForInClusterWhenDisabled(t *testing.T) {
Server: appv1.KubernetesInternalAPIServerAddr,
Name: "incluster-name",
})
assert.Error(t, err)
require.Error(t, err)
}
func runWatchTest(t *testing.T, db ArgoDB, actions []func(old *v1alpha1.Cluster, new *v1alpha1.Cluster)) {
@ -283,7 +279,7 @@ func runWatchTest(t *testing.T, db ArgoDB, actions []func(old *v1alpha1.Cluster,
}
go func() {
assert.NoError(t, db.WatchClusters(ctx, func(cluster *v1alpha1.Cluster) {
require.NoError(t, db.WatchClusters(ctx, func(cluster *v1alpha1.Cluster) {
doNext(nil, cluster)
}, func(oldCluster *v1alpha1.Cluster, newCluster *v1alpha1.Cluster) {
doNext(oldCluster, newCluster)

View file

@ -7,6 +7,7 @@ import (
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
appv1 "k8s.io/api/apps/v1"
@ -58,11 +59,11 @@ func TestCreateRepository(t *testing.T) {
Username: "test-username",
Password: "test-password",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "https://github.com/argoproj/argocd-example-apps", repo.Repo)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), RepoURLToSecretName(repoSecretPrefix, repo.Repo, ""), metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
assert.Equal(t, "test-username", string(secret.Data[username]))
@ -80,7 +81,7 @@ func TestCreateProjectScopedRepository(t *testing.T) {
Password: "test-password",
Project: "test-project",
})
assert.NoError(t, err)
require.NoError(t, err)
otherRepo, err := db.CreateRepository(context.Background(), &v1alpha1.Repository{
Repo: "https://github.com/argoproj/argocd-example-apps",
@ -88,19 +89,19 @@ func TestCreateProjectScopedRepository(t *testing.T) {
Password: "other-password",
Project: "other-project",
})
assert.NoError(t, err)
require.NoError(t, err)
_, err = db.CreateRepository(context.Background(), &v1alpha1.Repository{
Repo: "https://github.com/argoproj/argocd-example-apps",
Username: "wrong-username",
Password: "wrong-password",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "https://github.com/argoproj/argocd-example-apps", repo.Repo)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), RepoURLToSecretName(repoSecretPrefix, repo.Repo, "test-project"), metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
assert.Equal(t, "test-username", string(secret.Data[username]))
@ -109,7 +110,7 @@ func TestCreateProjectScopedRepository(t *testing.T) {
assert.Empty(t, secret.Data[sshPrivateKey])
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), RepoURLToSecretName(repoSecretPrefix, otherRepo.Repo, "other-project"), metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
assert.Equal(t, "other-username", string(secret.Data[username]))
assert.Equal(t, "other-password", string(secret.Data[password]))
@ -126,11 +127,11 @@ func TestCreateRepoCredentials(t *testing.T) {
Username: "test-username",
Password: "test-password",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "https://github.com/argoproj/", creds.URL)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), RepoURLToSecretName(credSecretPrefix, creds.URL, ""), metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
assert.Equal(t, "test-username", string(secret.Data[username]))
@ -140,7 +141,7 @@ func TestCreateRepoCredentials(t *testing.T) {
created, err := db.CreateRepository(context.Background(), &v1alpha1.Repository{
Repo: "https://github.com/argoproj/argo-cd",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "https://github.com/argoproj/argo-cd", created.Repo)
// There seems to be a race or some other hiccup in the fake K8s clientset used for this test.
@ -148,7 +149,7 @@ func TestCreateRepoCredentials(t *testing.T) {
time.Sleep(1 * time.Second)
repo, err := db.GetRepository(context.Background(), created.Repo, "")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "test-username", repo.Username)
assert.Equal(t, "test-password", repo.Password)
}
@ -216,10 +217,10 @@ func TestGetRepositoryCredentials(t *testing.T) {
got, err := db.GetRepositoryCredentials(context.TODO(), tt.repoURL)
if tt.wantErr {
assert.Error(t, err)
require.Error(t, err)
assert.True(t, errors.IsNotFound(err))
} else {
assert.NoError(t, err)
require.NoError(t, err)
}
assert.Equal(t, tt.want, got)
@ -238,7 +239,7 @@ func TestCreateExistingRepository(t *testing.T) {
Username: "test-username",
Password: "test-password",
})
assert.Error(t, err)
require.Error(t, err)
assert.Equal(t, codes.AlreadyExists, status.Convert(err).Code())
}
@ -285,7 +286,7 @@ func TestGetRepository(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := db.GetRepository(context.TODO(), tt.repoURL, "")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, tt.want, got)
})
}
@ -323,14 +324,14 @@ func TestDeleteRepositoryManagedSecrets(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
err := db.DeleteRepository(context.Background(), "https://github.com/argoproj/argocd-example-apps", "")
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), "managed-secret", metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
assert.True(t, errors.IsNotFound(err))
cm, err := clientset.CoreV1().ConfigMaps(testNamespace).Get(context.Background(), "argocd-cm", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "", cm.Data["repositories"])
}
@ -359,15 +360,15 @@ func TestDeleteRepositoryUnmanagedSecrets(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
err := db.DeleteRepository(context.Background(), "https://github.com/argoproj/argocd-example-apps", "")
assert.NoError(t, err)
require.NoError(t, err)
s, err := clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), "unmanaged-secret", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "test-username", string(s.Data[username]))
assert.Equal(t, "test-password", string(s.Data[password]))
cm, err := clientset.CoreV1().ConfigMaps(testNamespace).Get(context.Background(), "argocd-cm", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "", cm.Data["repositories"])
}
@ -403,7 +404,7 @@ func TestUpdateRepositoryWithManagedSecrets(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
repo, err := db.GetRepository(context.Background(), "https://github.com/argoproj/argocd-example-apps", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "test-username", repo.Username)
assert.Equal(t, "test-password", repo.Password)
assert.Equal(t, "test-ssh-private-key", repo.SSHPrivateKey)
@ -411,14 +412,14 @@ func TestUpdateRepositoryWithManagedSecrets(t *testing.T) {
_, err = db.UpdateRepository(context.Background(), &v1alpha1.Repository{
Repo: "https://github.com/argoproj/argocd-example-apps", Password: "", Username: "", SSHPrivateKey: "",
})
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), "managed-secret", metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
assert.True(t, errors.IsNotFound(err))
cm, err := clientset.CoreV1().ConfigMaps(testNamespace).Get(context.Background(), "argocd-cm", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "- url: https://github.com/argoproj/argocd-example-apps", strings.Trim(cm.Data["repositories"], "\n"))
}
@ -466,7 +467,7 @@ func TestRepositorySecretsTrim(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
repo, err := db.GetRepository(context.Background(), "https://github.com/argoproj/argocd-example-apps", "")
assert.NoError(t, err)
require.NoError(t, err)
teststruct := []struct {
expectedSecret string
retrievedSecret string
@ -520,7 +521,7 @@ func TestGetClusterSuccessful(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
cluster, err := db.GetCluster(context.Background(), server)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, server, cluster.Server)
assert.Equal(t, name, cluster.Name)
}
@ -531,7 +532,7 @@ func TestGetNonExistingCluster(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
_, err := db.GetCluster(context.Background(), server)
assert.Error(t, err)
require.Error(t, err)
status, ok := status.FromError(err)
assert.True(t, ok)
assert.Equal(t, codes.NotFound, status.Code())
@ -545,10 +546,10 @@ func TestCreateClusterSuccessful(t *testing.T) {
_, err := db.CreateCluster(context.Background(), &v1alpha1.Cluster{
Server: server,
})
assert.NoError(t, err)
require.NoError(t, err)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), "cluster-mycluster-3274446258", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, server, string(secret.Data["server"]))
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
@ -577,10 +578,10 @@ func TestDeleteClusterWithManagedSecret(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
err := db.DeleteCluster(context.Background(), clusterURL)
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), clusterName, metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
assert.True(t, errors.IsNotFound(err))
}
@ -605,10 +606,10 @@ func TestDeleteClusterWithUnmanagedSecret(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
err := db.DeleteCluster(context.Background(), clusterURL)
assert.NoError(t, err)
require.NoError(t, err)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.Background(), clusterName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, secret.Labels)
}
@ -621,7 +622,7 @@ func TestFuzzyEquivalence(t *testing.T) {
repo, err := db.CreateRepository(ctx, &v1alpha1.Repository{
Repo: "https://github.com/argoproj/argocd-example-apps",
})
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "https://github.com/argoproj/argocd-example-apps", repo.Repo)
repo, err = db.CreateRepository(ctx, &v1alpha1.Repository{
@ -637,7 +638,7 @@ func TestFuzzyEquivalence(t *testing.T) {
assert.Nil(t, repo)
repo, err = db.GetRepository(ctx, "https://github.com/argoproj/argocd-example-APPS", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "https://github.com/argoproj/argocd-example-apps", repo.Repo)
}
@ -677,7 +678,7 @@ func TestListHelmRepositories(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
repos, err := db.ListRepositories(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repos, 1)
repo := repos[0]
assert.Equal(t, "https://argoproj.github.io/argo-helm", repo.Repo)
@ -724,7 +725,7 @@ func TestHelmRepositorySecretsTrim(t *testing.T) {
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
repo, err := db.GetRepository(context.Background(), "https://argoproj.github.io/argo-helm", "")
assert.NoError(t, err)
require.NoError(t, err)
teststruct := []struct {
expectedSecret string
retrievedSecret string
@ -771,7 +772,7 @@ func TestGetClusterServersByName(t *testing.T) {
})
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
servers, err := db.GetClusterServersByName(context.Background(), "my-cluster-name")
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, []string{"https://my-cluster-server"}, servers)
}
@ -779,7 +780,7 @@ func TestGetClusterServersByName_InClusterNotConfigured(t *testing.T) {
clientset := getClientset(nil)
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
servers, err := db.GetClusterServersByName(context.Background(), "in-cluster")
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, []string{v1alpha1.KubernetesInternalAPIServerAddr}, servers)
}
@ -803,7 +804,7 @@ func TestGetClusterServersByName_InClusterConfigured(t *testing.T) {
})
db := NewDB(testNamespace, settings.NewSettingsManager(context.Background(), clientset, testNamespace), clientset)
servers, err := db.GetClusterServersByName(context.Background(), "in-cluster-renamed")
assert.NoError(t, err)
require.NoError(t, err)
assert.ElementsMatch(t, []string{v1alpha1.KubernetesInternalAPIServerAddr}, servers)
}

View file

@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
@ -118,7 +119,7 @@ func Test_ValidatePGPKey(t *testing.T) {
// Good case - single PGP key
{
key, err := validatePGPKey(testdata.Github_asc)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, key)
assert.Equal(t, "4AEE18F83AFDEB23", key.KeyID)
assert.NotEmpty(t, key.Owner)
@ -128,13 +129,13 @@ func Test_ValidatePGPKey(t *testing.T) {
// Bad case - Garbage
{
key, err := validatePGPKey(testdata.Garbage_asc)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, key)
}
// Bad case - more than one key
{
key, err := validatePGPKey(testdata.Multi_asc)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, key)
}
}
@ -149,7 +150,7 @@ func Test_ListConfiguredGPGPublicKeys(t *testing.T) {
panic("could not get database")
}
keys, err := db.ListConfiguredGPGPublicKeys(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
}
// Good case. No certificates in ConfigMap
@ -161,7 +162,7 @@ func Test_ListConfiguredGPGPublicKeys(t *testing.T) {
panic("could not get database")
}
keys, err := db.ListConfiguredGPGPublicKeys(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, keys)
}
// Bad case. Single key in input, wrong mapping to Key ID in CM
@ -173,7 +174,7 @@ func Test_ListConfiguredGPGPublicKeys(t *testing.T) {
panic("could not get database")
}
keys, err := db.ListConfiguredGPGPublicKeys(context.Background())
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, keys)
}
// Bad case. Garbage public key
@ -185,7 +186,7 @@ func Test_ListConfiguredGPGPublicKeys(t *testing.T) {
panic("could not get database")
}
keys, err := db.ListConfiguredGPGPublicKeys(context.Background())
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, keys)
}
// Bad case. Garbage ConfigMap key in data
@ -197,7 +198,7 @@ func Test_ListConfiguredGPGPublicKeys(t *testing.T) {
panic("could not get database")
}
keys, err := db.ListConfiguredGPGPublicKeys(context.Background())
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, keys)
}
}
@ -211,47 +212,47 @@ func Test_AddGPGPublicKey(t *testing.T) {
// Key should be added
new, skipped, err := db.AddGPGPublicKey(context.Background(), testdata.Github_asc)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, new, 1)
assert.Empty(t, skipped)
cm, err := settings.GetConfigMapByName(common.ArgoCDGPGKeysConfigMapName)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, cm.Data, 1)
// Same key should not be added, but skipped
new, skipped, err = db.AddGPGPublicKey(context.Background(), testdata.Github_asc)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, new)
assert.Len(t, skipped, 1)
cm, err = settings.GetConfigMapByName(common.ArgoCDGPGKeysConfigMapName)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, cm.Data, 1)
// New keys should be added
new, skipped, err = db.AddGPGPublicKey(context.Background(), testdata.Multi_asc)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, new, 2)
assert.Empty(t, skipped)
cm, err = settings.GetConfigMapByName(common.ArgoCDGPGKeysConfigMapName)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, cm.Data, 3)
// Same new keys should be skipped
new, skipped, err = db.AddGPGPublicKey(context.Background(), testdata.Multi_asc)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, new)
assert.Len(t, skipped, 2)
cm, err = settings.GetConfigMapByName(common.ArgoCDGPGKeysConfigMapName)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, cm.Data, 3)
// Garbage input should result in error
new, skipped, err = db.AddGPGPublicKey(context.Background(), testdata.Garbage_asc)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, new)
assert.Nil(t, skipped)
cm, err = settings.GetConfigMapByName(common.ArgoCDGPGKeysConfigMapName)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, cm.Data, 3)
}
}
@ -266,28 +267,28 @@ func Test_DeleteGPGPublicKey(t *testing.T) {
// Key should be removed
err := db.DeleteGPGPublicKey(context.Background(), "FDC79815400D88A9")
assert.NoError(t, err)
require.NoError(t, err)
// Key should not exist anymore, therefore can't be deleted again
err = db.DeleteGPGPublicKey(context.Background(), "FDC79815400D88A9")
assert.Error(t, err)
require.Error(t, err)
// One key left in configuration
n, err := db.ListConfiguredGPGPublicKeys(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, n, 1)
// Key should be removed
err = db.DeleteGPGPublicKey(context.Background(), "F7842A5CEAA9C0B1")
assert.NoError(t, err)
require.NoError(t, err)
// Key should not exist anymore, therefore can't be deleted again
err = db.DeleteGPGPublicKey(context.Background(), "F7842A5CEAA9C0B1")
assert.Error(t, err)
require.Error(t, err)
// No key left in configuration
n, err = db.ListConfiguredGPGPublicKeys(context.Background())
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, n)
})
@ -298,6 +299,6 @@ func Test_DeleteGPGPublicKey(t *testing.T) {
// Key should be removed
err := db.DeleteGPGPublicKey(context.Background(), "F7842A5CEAA9C0B1")
assert.Error(t, err)
require.Error(t, err)
})
}

View file

@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
corev1 "k8s.io/api/core/v1"
@ -57,7 +58,7 @@ func TestSecretsRepositoryBackend_CreateRepository(t *testing.T) {
output, err := f.repoBackend.CreateRepository(context.Background(), repo)
// then
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, repo, output)
secret, err := f.clientSet.CoreV1().Secrets(testNamespace).Get(
@ -66,7 +67,7 @@ func TestSecretsRepositoryBackend_CreateRepository(t *testing.T) {
metav1.GetOptions{},
)
assert.NotNil(t, secret)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
assert.Equal(t, common.LabelValueSecretTypeRepository, secret.Labels[common.LabelKeySecretType])
@ -98,7 +99,7 @@ func TestSecretsRepositoryBackend_CreateRepository(t *testing.T) {
output, err := f.repoBackend.CreateRepository(context.Background(), repo)
// then
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, output)
status, ok := status.FromError(err)
assert.True(t, ok)
@ -139,7 +140,7 @@ func TestSecretsRepositoryBackend_CreateRepository(t *testing.T) {
output, err := f.repoBackend.CreateRepository(context.Background(), repo)
// then
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, output)
status, ok := status.FromError(err)
assert.True(t, ok)
@ -215,7 +216,7 @@ func TestSecretsRepositoryBackend_GetRepository(t *testing.T) {
}}
repository, err := testee.GetRepository(context.TODO(), "git@github.com:argoproj/argo-cd.git", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "ArgoCD", repository.Name)
assert.Equal(t, "git@github.com:argoproj/argo-cd.git", repository.Repo)
@ -223,7 +224,7 @@ func TestSecretsRepositoryBackend_GetRepository(t *testing.T) {
assert.Equal(t, "somePassword", repository.Password)
repository, err = testee.GetRepository(context.TODO(), "git@github.com:argoproj/argoproj.git", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "UserManagedRepo", repository.Name)
assert.Equal(t, "git@github.com:argoproj/argoproj.git", repository.Repo)
@ -231,7 +232,7 @@ func TestSecretsRepositoryBackend_GetRepository(t *testing.T) {
assert.Equal(t, "someOtherPassword", repository.Password)
repository, err = testee.GetRepository(context.TODO(), "git@github.com:argoproj/argo-cd.git", "testProject")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "Scoped ArgoCD", repository.Name)
assert.Equal(t, "git@github.com:argoproj/argo-cd.git", repository.Repo)
@ -240,7 +241,7 @@ func TestSecretsRepositoryBackend_GetRepository(t *testing.T) {
assert.Equal(t, "testProject", repository.Project)
repository, err = testee.GetRepository(context.TODO(), "git@github.com:argoproj/argoproj.git", "testProject")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "Scoped UserManagedRepo", repository.Name)
assert.Equal(t, "git@github.com:argoproj/argoproj.git", repository.Repo)
@ -288,7 +289,7 @@ func TestSecretsRepositoryBackend_ListRepositories(t *testing.T) {
}}
repositories, err := testee.ListRepositories(context.TODO(), nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repositories, 2)
for _, repository := range repositories {
@ -411,54 +412,54 @@ func TestSecretsRepositoryBackend_UpdateRepository(t *testing.T) {
managedRepository.Username = "newUsername"
updateRepository, err := testee.UpdateRepository(context.TODO(), managedRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, managedRepository, updateRepository)
assert.Equal(t, managedRepository.Username, updateRepository.Username)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedSecretName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "newUsername", string(secret.Data["username"]))
userProvidedRepository.Username = "newOtherUsername"
updateRepository, err = testee.UpdateRepository(context.TODO(), userProvidedRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, userProvidedRepository, updateRepository)
assert.Equal(t, userProvidedRepository.Username, updateRepository.Username)
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), "user-managed", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "newOtherUsername", string(secret.Data["username"]))
updateRepository, err = testee.UpdateRepository(context.TODO(), newRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, newRepository, updateRepository)
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), newSecretName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "foo", string(secret.Data["username"]))
managedProjectRepository.Username = "newUsername"
updateRepository, err = testee.UpdateRepository(context.TODO(), managedProjectRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, managedProjectRepository, updateRepository)
assert.Equal(t, managedProjectRepository.Username, updateRepository.Username)
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedProjectSecretName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "newUsername", string(secret.Data["username"]))
userProvidedProjectRepository.Username = "newUsernameScoped"
updateRepository, err = testee.UpdateRepository(context.TODO(), userProvidedProjectRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, userProvidedProjectRepository, updateRepository)
assert.Equal(t, userProvidedProjectRepository.Username, updateRepository.Username)
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), "user-managed-scoped", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "newUsernameScoped", string(secret.Data["username"]))
}
@ -519,25 +520,25 @@ func TestSecretsRepositoryBackend_DeleteRepository(t *testing.T) {
}}
err := testee.DeleteRepository(context.TODO(), "git@github.com:argoproj/argo-cd.git", "")
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedSecretName, metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedScopedSecretName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
err = testee.DeleteRepository(context.TODO(), "git@github.com:argoproj/argo-cd.git", "someProject")
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedScopedSecretName, metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
err = testee.DeleteRepository(context.TODO(), "git@github.com:argoproj/argoproj.git", "")
assert.NoError(t, err)
require.NoError(t, err)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), "user-managed", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Empty(t, secret.Labels[common.LabelValueSecretTypeRepository])
}
@ -580,7 +581,7 @@ func TestSecretsRepositoryBackend_CreateRepoCreds(t *testing.T) {
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
output, err := testee.CreateRepoCreds(context.TODO(), &testCase.repoCreds)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, &testCase.repoCreds, output)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(
@ -589,7 +590,7 @@ func TestSecretsRepositoryBackend_CreateRepoCreds(t *testing.T) {
metav1.GetOptions{},
)
assert.NotNil(t, secret)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, common.AnnotationValueManagedByArgoCD, secret.Annotations[common.AnnotationKeyManagedBy])
assert.Equal(t, common.LabelValueSecretTypeRepoCreds, secret.Labels[common.LabelKeySecretType])
@ -656,14 +657,14 @@ func TestSecretsRepositoryBackend_GetRepoCreds(t *testing.T) {
}}
repoCred, err := testee.GetRepoCreds(context.TODO(), "git@github.com:argoproj")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repoCred)
assert.Equal(t, "git@github.com:argoproj", repoCred.URL)
assert.Equal(t, "someUsername", repoCred.Username)
assert.Equal(t, "somePassword", repoCred.Password)
repoCred, err = testee.GetRepoCreds(context.TODO(), "git@gitlab.com")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repoCred)
assert.Equal(t, "git@gitlab.com", repoCred.URL)
assert.Equal(t, "someOtherUsername", repoCred.Username)
@ -707,7 +708,7 @@ func TestSecretsRepositoryBackend_ListRepoCreds(t *testing.T) {
}}
repoCreds, err := testee.ListRepoCreds(context.TODO())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repoCreds, 2)
assert.Contains(t, repoCreds, "git@github.com:argoproj")
assert.Contains(t, repoCreds, "git@gitlab.com")
@ -769,32 +770,32 @@ func TestSecretsRepositoryBackend_UpdateRepoCreds(t *testing.T) {
managedCreds.Username = "newUsername"
updateRepoCreds, err := testee.UpdateRepoCreds(context.TODO(), managedCreds)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotSame(t, managedCreds, updateRepoCreds)
assert.Equal(t, managedCreds.Username, updateRepoCreds.Username)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedCredsName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "newUsername", string(secret.Data["username"]))
userProvidedCreds.Username = "newOtherUsername"
updateRepoCreds, err = testee.UpdateRepoCreds(context.TODO(), userProvidedCreds)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotSame(t, userProvidedCreds, updateRepoCreds)
assert.Equal(t, userProvidedCreds.Username, updateRepoCreds.Username)
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), "user-managed", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "newOtherUsername", string(secret.Data["username"]))
updateRepoCreds, err = testee.UpdateRepoCreds(context.TODO(), newCreds)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, newCreds, updateRepoCreds)
secret, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), newCredsName, metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "foo", string(secret.Data["username"]))
}
@ -837,16 +838,16 @@ func TestSecretsRepositoryBackend_DeleteRepoCreds(t *testing.T) {
}}
err := testee.DeleteRepoCreds(context.TODO(), "git@github.com:argoproj")
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), managedSecretName, metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
err = testee.DeleteRepoCreds(context.TODO(), "git@gitlab.com")
assert.NoError(t, err)
require.NoError(t, err)
secret, err := clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), "user-managed", metav1.GetOptions{})
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Empty(t, secret.Labels[common.LabelValueSecretTypeRepoCreds])
}
@ -891,7 +892,7 @@ func TestSecretsRepositoryBackend_GetAllHelmRepoCreds(t *testing.T) {
}}
repoCreds, err := testee.GetAllHelmRepoCreds(context.TODO())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repoCreds, 1)
}

View file

@ -5,6 +5,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -64,12 +65,12 @@ func TestDb_CreateRepository(t *testing.T) {
// The repository was indeed created successfully
output, err := testee.CreateRepository(context.TODO(), input)
assert.NoError(t, err)
require.NoError(t, err)
assert.Same(t, input, output)
// New repositories should not be stored in the settings anymore
settingRepositories, err := settingsManager.GetRepositories()
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, settingRepositories)
// New repositories should be now stored as secrets
@ -79,7 +80,7 @@ func TestDb_CreateRepository(t *testing.T) {
metav1.GetOptions{},
)
assert.NotNil(t, secret)
assert.NoError(t, err)
require.NoError(t, err)
}
func TestDb_GetRepository(t *testing.T) {
@ -92,17 +93,17 @@ func TestDb_GetRepository(t *testing.T) {
}
repository, err := testee.GetRepository(context.TODO(), "git@github.com:argoproj/argoproj.git", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "OtherRepo", repository.Name)
repository, err = testee.GetRepository(context.TODO(), "git@github.com:argoproj/argo-cd.git", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "SomeRepo", repository.Name)
repository, err = testee.GetRepository(context.TODO(), "git@github.com:argoproj/not-existing.git", "")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Equal(t, "git@github.com:argoproj/not-existing.git", repository.Repo)
}
@ -117,7 +118,7 @@ func TestDb_ListRepositories(t *testing.T) {
}
repositories, err := testee.ListRepositories(context.TODO())
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repositories, 2)
}
@ -148,7 +149,7 @@ func TestDb_UpdateRepository(t *testing.T) {
// Verify that legacy repository can still be updated
settingRepository.Username = "OtherUpdatedUsername"
repository, err := testee.UpdateRepository(context.TODO(), settingRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Same(t, settingRepository, repository)
@ -157,14 +158,14 @@ func TestDb_UpdateRepository(t *testing.T) {
"managed-secret",
metav1.GetOptions{},
)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "OtherUpdatedUsername", string(secret.Data["username"]))
// Verify that secret-based repository can be updated
secretRepository.Username = "UpdatedUsername"
repository, err = testee.UpdateRepository(context.TODO(), secretRepository)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repository)
assert.Same(t, secretRepository, repository)
@ -173,7 +174,7 @@ func TestDb_UpdateRepository(t *testing.T) {
"some-repo-secret",
metav1.GetOptions{},
)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, secret)
assert.Equal(t, "UpdatedUsername", string(secret.Data["username"]))
}
@ -188,17 +189,17 @@ func TestDb_DeleteRepository(t *testing.T) {
}
err := testee.DeleteRepository(context.TODO(), "git@github.com:argoproj/argoproj.git", "")
assert.NoError(t, err)
require.NoError(t, err)
repositories, err := settingsManager.GetRepositories()
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, repositories)
err = testee.DeleteRepository(context.TODO(), "git@github.com:argoproj/argo-cd.git", "")
assert.NoError(t, err)
require.NoError(t, err)
_, err = clientset.CoreV1().Secrets(testNamespace).Get(context.TODO(), "some-repo-secret", metav1.GetOptions{})
assert.Error(t, err)
require.Error(t, err)
}
func TestDb_GetRepositoryCredentials(t *testing.T) {
@ -232,17 +233,17 @@ func TestDb_GetRepositoryCredentials(t *testing.T) {
testee := NewDB(testNamespace, settings.NewSettingsManager(context.TODO(), clientset, testNamespace), clientset)
repoCreds, err := testee.GetRepositoryCredentials(context.TODO(), "git@github.com:argoproj/argoproj.git")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repoCreds)
assert.Equal(t, "git@github.com:argoproj", repoCreds.URL)
repoCreds, err = testee.GetRepositoryCredentials(context.TODO(), "git@gitlab.com:someorg/foobar.git")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, repoCreds)
assert.Equal(t, "git@gitlab.com", repoCreds.URL)
repoCreds, err = testee.GetRepositoryCredentials(context.TODO(), "git@github.com:example/not-existing.git")
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, repoCreds)
}
@ -357,7 +358,7 @@ func Test_GetProjectRepositories(t *testing.T) {
argoDB := NewDB(testNamespace, settings.NewSettingsManager(context.TODO(), clientset, testNamespace), clientset)
repos, err := argoDB.GetProjectRepositories(context.TODO(), "some-project")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, repos, 1)
assert.Equal(t, "git@github.com:argoproj/argo-cd", repos[0].Repo)
}

View file

@ -10,6 +10,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"sigs.k8s.io/yaml"
// "github.com/argoproj/argo-cd/common"
@ -155,7 +156,7 @@ func Test_GenerateDexConfig(t *testing.T) {
t.Run("Empty settings", func(t *testing.T) {
s := settings.ArgoCDSettings{}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, config)
})
@ -165,7 +166,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: goodDexConfig,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, config)
})
@ -175,7 +176,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: "invalidyaml",
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, config)
})
@ -185,7 +186,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: "invalidyaml",
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, config)
})
@ -195,7 +196,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: malformedDexConfig,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, config)
})
@ -205,7 +206,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: badDexConfig,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.Error(t, err)
require.Error(t, err)
assert.Nil(t, config)
})
@ -215,7 +216,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: goodDexConfig,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
})
@ -226,7 +227,7 @@ func Test_GenerateDexConfig(t *testing.T) {
Secrets: goodSecrets,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
var dexCfg map[string]interface{}
err = yaml.Unmarshal(config, &dexCfg)
@ -252,7 +253,7 @@ func Test_GenerateDexConfig(t *testing.T) {
Secrets: goodSecretswithCRLF,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
var dexCfg map[string]interface{}
err = yaml.Unmarshal(config, &dexCfg)
@ -286,7 +287,7 @@ func Test_GenerateDexConfig(t *testing.T) {
Secrets: goodSecretswithCRLF,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
var dexCfg map[string]interface{}
err = yaml.Unmarshal(config, &dexCfg)
@ -308,7 +309,7 @@ func Test_GenerateDexConfig(t *testing.T) {
Secrets: goodSecretswithCRLF,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
var dexCfg map[string]interface{}
err = yaml.Unmarshal(config, &dexCfg)
@ -328,7 +329,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: goodDexConfigWithOauthOverrides,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
var dexCfg map[string]interface{}
err = yaml.Unmarshal(config, &dexCfg)
@ -351,7 +352,7 @@ func Test_GenerateDexConfig(t *testing.T) {
DexConfig: goodDexConfigWithEnabledApprovalScreen,
}
config, err := GenerateDexConfigYAML(&s, false)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, config)
var dexCfg map[string]interface{}
err = yaml.Unmarshal(config, &dexCfg)
@ -385,7 +386,7 @@ func Test_DexReverseProxy(t *testing.T) {
target, _ := url.Parse(fakeDex.URL)
resp, err := http.Get(server.URL)
assert.NotNil(t, resp)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
assert.Equal(t, host, target.Host)
fmt.Printf("%s\n", resp.Status)
@ -407,7 +408,7 @@ func Test_DexReverseProxy(t *testing.T) {
}
resp, err := client.Get(server.URL)
assert.NotNil(t, resp)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, http.StatusSeeOther, resp.StatusCode)
location, _ := resp.Location()
fmt.Printf("%s %s\n", resp.Status, location.RequestURI())
@ -429,9 +430,9 @@ func Test_DexReverseProxy(t *testing.T) {
rt := NewDexRewriteURLRoundTripper(server.URL, http.DefaultTransport)
assert.NotNil(t, rt)
req, err := http.NewRequest(http.MethodGet, "/", bytes.NewBuffer([]byte("")))
assert.NoError(t, err)
require.NoError(t, err)
_, err = rt.RoundTrip(req)
assert.NoError(t, err)
require.NoError(t, err)
target, _ := url.Parse(server.URL)
assert.Equal(t, req.Host, target.Host)
})

View file

@ -46,7 +46,7 @@ func Test_nativeGitClient_Fetch(t *testing.T) {
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
}
func Test_nativeGitClient_Fetch_Prune(t *testing.T) {
@ -63,7 +63,7 @@ func Test_nativeGitClient_Fetch_Prune(t *testing.T) {
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
err = runCmd(tempDir, "git", "branch", "-d", "test/foo")
require.NoError(t, err)
@ -71,7 +71,7 @@ func Test_nativeGitClient_Fetch_Prune(t *testing.T) {
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
}
func Test_IsAnnotatedTag(t *testing.T) {
@ -109,9 +109,9 @@ func Test_IsAnnotatedTag(t *testing.T) {
assert.True(t, atag)
err = runCmd(client.Root(), "git", "rm", "README")
assert.NoError(t, err)
require.NoError(t, err)
err = runCmd(client.Root(), "git", "commit", "-m", "remove README", "-a")
assert.NoError(t, err)
require.NoError(t, err)
// We moved on, so tag doesn't point to HEAD anymore
atag = client.IsAnnotatedTag("HEAD")
@ -216,28 +216,28 @@ func Test_nativeGitClient_Submodule(t *testing.T) {
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
commitSHA, err := client.LsRemote("HEAD")
assert.NoError(t, err)
require.NoError(t, err)
// Call Checkout() with submoduleEnabled=false.
err = client.Checkout(commitSHA, false)
assert.NoError(t, err)
require.NoError(t, err)
// Check if submodule url does not exist in .git/config
err = runCmd(client.Root(), "git", "config", "submodule.bar.url")
assert.Error(t, err)
require.Error(t, err)
// Call Submodule() via Checkout() with submoduleEnabled=true.
err = client.Checkout(commitSHA, true)
assert.NoError(t, err)
require.NoError(t, err)
// Check if the .gitmodule URL is reflected in .git/config
cmd := exec.Command("git", "config", "submodule.bar.url")
cmd.Dir = client.Root()
result, err := cmd.Output()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, bar+"\n", string(result))
// Change URL of submodule bar
@ -246,13 +246,13 @@ func Test_nativeGitClient_Submodule(t *testing.T) {
// Call Submodule()
err = client.Submodule()
assert.NoError(t, err)
require.NoError(t, err)
// Check if the URL change in .gitmodule is reflected in .git/config
cmd = exec.Command("git", "config", "submodule.bar.url")
cmd.Dir = client.Root()
result, err = cmd.Output()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, bar+"baz\n", string(result))
}

View file

@ -187,18 +187,18 @@ func TestHTTPSCreds_Environ_clientCert(t *testing.T) {
assert.NotEmpty(t, key)
certBytes, err := os.ReadFile(cert)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "clientCertData", string(certBytes))
keyBytes, err := os.ReadFile(key)
assert.Equal(t, "clientCertKey", string(keyBytes))
assert.NoError(t, err)
require.NoError(t, err)
io.Close(closer)
_, err = os.Stat(cert)
assert.ErrorIs(t, err, os.ErrNotExist)
require.ErrorIs(t, err, os.ErrNotExist)
_, err = os.Stat(key)
assert.ErrorIs(t, err, os.ErrNotExist)
require.ErrorIs(t, err, os.ErrNotExist)
}
func Test_SSHCreds_Environ(t *testing.T) {
@ -364,16 +364,16 @@ func TestNewGoogleCloudCreds_invalidJSON(t *testing.T) {
token, err := googleCloudCreds.getAccessToken()
assert.Equal(t, "", token)
assert.Error(t, err)
require.Error(t, err)
username, err := googleCloudCreds.getUsername()
assert.Equal(t, "", username)
assert.Error(t, err)
require.Error(t, err)
closer, envStringSlice, err := googleCloudCreds.Environ()
assert.Equal(t, NopCloser{}, closer)
assert.Equal(t, []string(nil), envStringSlice)
assert.Error(t, err)
require.Error(t, err)
}
func TestGoogleCloudCreds_Environ_cleanup(t *testing.T) {
@ -386,7 +386,7 @@ func TestGoogleCloudCreds_Environ_cleanup(t *testing.T) {
}, store}
closer, env, err := googleCloudCreds.Environ()
assert.NoError(t, err)
require.NoError(t, err)
var nonce string
for _, envVar := range env {
if strings.HasPrefix(envVar, ASKPASS_NONCE_ENV) {

View file

@ -9,6 +9,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/argoproj/argo-cd/v2/common"
"github.com/argoproj/argo-cd/v2/test/fixture/log"
@ -118,19 +119,19 @@ func TestSameURL(t *testing.T) {
func TestCustomHTTPClient(t *testing.T) {
certFile, err := filepath.Abs("../../test/fixture/certs/argocd-test-client.crt")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEqual(t, "", certFile)
keyFile, err := filepath.Abs("../../test/fixture/certs/argocd-test-client.key")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEqual(t, "", keyFile)
certData, err := os.ReadFile(certFile)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEqual(t, "", string(certData))
keyData, err := os.ReadFile(keyFile)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEqual(t, "", string(keyData))
// Get HTTPSCreds with client cert creds specified, and insecure connection
@ -147,7 +148,7 @@ func TestCustomHTTPClient(t *testing.T) {
assert.Nil(t, transport.TLSClientConfig.RootCAs)
if transport.TLSClientConfig.GetClientCertificate != nil {
cert, err := transport.TLSClientConfig.GetClientCertificate(nil)
assert.NoError(t, err)
require.NoError(t, err)
if err == nil {
assert.NotNil(t, cert)
assert.NotEmpty(t, cert.Certificate)
@ -155,7 +156,7 @@ func TestCustomHTTPClient(t *testing.T) {
}
}
proxy, err := transport.Proxy(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "http://proxy:5000", proxy.String())
}
@ -175,7 +176,7 @@ func TestCustomHTTPClient(t *testing.T) {
assert.Nil(t, transport.TLSClientConfig.RootCAs)
if transport.TLSClientConfig.GetClientCertificate != nil {
cert, err := transport.TLSClientConfig.GetClientCertificate(nil)
assert.NoError(t, err)
require.NoError(t, err)
if err == nil {
assert.NotNil(t, cert)
assert.Empty(t, cert.Certificate)
@ -183,18 +184,18 @@ func TestCustomHTTPClient(t *testing.T) {
}
}
req, err := http.NewRequest(http.MethodGet, "http://proxy-from-env:7878", nil)
assert.NoError(t, err)
require.NoError(t, err)
proxy, err := transport.Proxy(req)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, "http://proxy-from-env:7878", proxy.String())
}
// GetRepoHTTPClient with root ca
cert, err := os.ReadFile("../../test/fixture/certs/argocd-test-server.crt")
assert.NoError(t, err)
require.NoError(t, err)
temppath := t.TempDir()
defer os.RemoveAll(temppath)
err = os.WriteFile(filepath.Join(temppath, "127.0.0.1"), cert, 0o666)
assert.NoError(t, err)
require.NoError(t, err)
t.Setenv(common.EnvVarTLSDataPath, temppath)
client = GetRepoHTTPClient("https://127.0.0.1", false, creds, "")
assert.NotNil(t, client)
@ -210,7 +211,7 @@ func TestCustomHTTPClient(t *testing.T) {
func TestLsRemote(t *testing.T) {
clnt, err := NewClientExt("https://github.com/argoproj/argo-cd.git", "/tmp", NopCreds{}, false, false, "")
assert.NoError(t, err)
require.NoError(t, err)
testCases := []struct {
name string
@ -273,7 +274,7 @@ func TestLsRemote(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
commitSHA, err := clnt.LsRemote(tc.revision)
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, IsCommitSHA(commitSHA))
if tc.expectedCommit != "" {
assert.Equal(t, tc.expectedCommit, commitSHA)
@ -284,7 +285,7 @@ func TestLsRemote(t *testing.T) {
// We do not resolve truncated git hashes and return the commit as-is if it appears to be a commit
t.Run("truncated commit", func(t *testing.T) {
commitSHA, err := clnt.LsRemote("4e22a3c")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, IsCommitSHA(commitSHA))
assert.True(t, IsTruncatedCommitSHA(commitSHA))
})
@ -311,35 +312,35 @@ func TestLFSClient(t *testing.T) {
tempDir := t.TempDir()
client, err := NewClientExt("https://github.com/argoproj-labs/argocd-testrepo-lfs", tempDir, NopCreds{}, false, true, "")
assert.NoError(t, err)
require.NoError(t, err)
commitSHA, err := client.LsRemote("HEAD")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEqual(t, "", commitSHA)
err = client.Init()
assert.NoError(t, err)
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
err = client.Checkout(commitSHA, true)
assert.NoError(t, err)
require.NoError(t, err)
largeFiles, err := client.LsLargeFiles()
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, largeFiles, 3)
fileHandle, err := os.Open(fmt.Sprintf("%s/test3.yaml", tempDir))
assert.NoError(t, err)
require.NoError(t, err)
if err == nil {
defer func() {
if err = fileHandle.Close(); err != nil {
assert.NoError(t, err)
require.NoError(t, err)
}
}()
text, err := io.ReadAll(fileHandle)
assert.NoError(t, err)
require.NoError(t, err)
if err == nil {
assert.Equal(t, "This is not a YAML, sorry.\n", string(text))
}
@ -350,25 +351,25 @@ func TestVerifyCommitSignature(t *testing.T) {
p := t.TempDir()
client, err := NewClientExt("https://github.com/argoproj/argo-cd.git", p, NopCreds{}, false, false, "")
assert.NoError(t, err)
require.NoError(t, err)
err = client.Init()
assert.NoError(t, err)
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
commitSHA, err := client.LsRemote("HEAD")
assert.NoError(t, err)
require.NoError(t, err)
err = client.Checkout(commitSHA, true)
assert.NoError(t, err)
require.NoError(t, err)
// 28027897aad1262662096745f2ce2d4c74d02b7f is a commit that is signed in the repo
// It doesn't matter whether we know the key or not at this stage
{
out, err := client.VerifyCommitSignature("28027897aad1262662096745f2ce2d4c74d02b7f")
assert.NoError(t, err)
require.NoError(t, err)
assert.NotEmpty(t, out)
assert.Contains(t, out, "gpg: Signature made")
}
@ -376,7 +377,7 @@ func TestVerifyCommitSignature(t *testing.T) {
// 85d660f0b967960becce3d49bd51c678ba2a5d24 is a commit that is not signed
{
out, err := client.VerifyCommitSignature("85d660f0b967960becce3d49bd51c678ba2a5d24")
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, out)
}
}
@ -404,25 +405,25 @@ func TestNewFactory(t *testing.T) {
dirName := t.TempDir()
client, err := NewClientExt(tt.args.url, dirName, NopCreds{}, tt.args.insecureIgnoreHostKey, false, "")
assert.NoError(t, err)
require.NoError(t, err)
commitSHA, err := client.LsRemote("HEAD")
assert.NoError(t, err)
require.NoError(t, err)
err = client.Init()
assert.NoError(t, err)
require.NoError(t, err)
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
// Do a second fetch to make sure we can treat `already up-to-date` error as not an error
err = client.Fetch("")
assert.NoError(t, err)
require.NoError(t, err)
err = client.Checkout(commitSHA, true)
assert.NoError(t, err)
require.NoError(t, err)
revisionMetadata, err := client.RevisionMetadata(commitSHA)
assert.NoError(t, err)
require.NoError(t, err)
assert.NotNil(t, revisionMetadata)
assert.Regexp(t, "^.*<.*>$", revisionMetadata.Author)
assert.Empty(t, revisionMetadata.Tags)
@ -430,7 +431,7 @@ func TestNewFactory(t *testing.T) {
assert.NotEmpty(t, revisionMetadata.Message)
commitSHA2, err := client.CommitSHA()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, commitSHA, commitSHA2)
}
@ -441,10 +442,10 @@ func TestListRevisions(t *testing.T) {
repoURL := "https://github.com/argoproj/argo-cd.git"
client, err := NewClientExt(repoURL, dir, NopCreds{}, false, false, "")
assert.NoError(t, err)
require.NoError(t, err)
lsResult, err := client.LsRefs()
assert.NoError(t, err)
require.NoError(t, err)
testBranch := "master"
testTag := "v1.0.0"
@ -460,48 +461,48 @@ func TestLsFiles(t *testing.T) {
tmpDir2 := t.TempDir()
client, err := NewClientExt("", tmpDir1, NopCreds{}, false, false, "")
assert.NoError(t, err)
require.NoError(t, err)
err = runCmd(tmpDir1, "git", "init")
assert.NoError(t, err)
require.NoError(t, err)
// Prepare files
a, err := os.Create(filepath.Join(tmpDir1, "a.yaml"))
assert.NoError(t, err)
require.NoError(t, err)
a.Close()
err = os.MkdirAll(filepath.Join(tmpDir1, "subdir"), 0o755)
assert.NoError(t, err)
require.NoError(t, err)
b, err := os.Create(filepath.Join(tmpDir1, "subdir", "b.yaml"))
assert.NoError(t, err)
require.NoError(t, err)
b.Close()
err = os.MkdirAll(filepath.Join(tmpDir2, "subdir"), 0o755)
assert.NoError(t, err)
require.NoError(t, err)
c, err := os.Create(filepath.Join(tmpDir2, "c.yaml"))
assert.NoError(t, err)
require.NoError(t, err)
c.Close()
err = os.Symlink(filepath.Join(tmpDir2, "c.yaml"), filepath.Join(tmpDir1, "link.yaml"))
assert.NoError(t, err)
require.NoError(t, err)
err = runCmd(tmpDir1, "git", "add", ".")
assert.NoError(t, err)
require.NoError(t, err)
err = runCmd(tmpDir1, "git", "commit", "-m", "Initial commit")
assert.NoError(t, err)
require.NoError(t, err)
// Old and default globbing
expectedResult := []string{"a.yaml", "link.yaml", "subdir/b.yaml"}
lsResult, err := client.LsFiles("*.yaml", false)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, expectedResult, lsResult)
// New and safer globbing, do not return symlinks resolving outside of the repo
expectedResult = []string{"a.yaml"}
lsResult, err = client.LsFiles("*.yaml", true)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, expectedResult, lsResult)
// New globbing, do not return files outside of the repo
var nilResult []string
lsResult, err = client.LsFiles(filepath.Join(tmpDir2, "*.yaml"), true)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, nilResult, lsResult)
}

View file

@ -67,11 +67,11 @@ func Test_GPG_InitializeGnuPG(t *testing.T) {
// First run should initialize fine
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
// We should have exactly one public key with ultimate trust (our own) in the keyring
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, "ultimate", keys[0].Trust)
@ -86,19 +86,19 @@ func Test_GPG_InitializeGnuPG(t *testing.T) {
err = InitializeGnuPG()
require.NoError(t, err)
keys, err = GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, "ultimate", keys[0].Trust)
t.Run("GNUPGHOME is a file", func(t *testing.T) {
f, err := os.CreateTemp("", "gpg-test")
assert.NoError(t, err)
require.NoError(t, err)
defer os.Remove(f.Name())
// we need to error out
t.Setenv(common.EnvGnuPGHome, f.Name())
err = InitializeGnuPG()
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "does not point to a directory")
})
@ -114,7 +114,7 @@ func Test_GPG_InitializeGnuPG(t *testing.T) {
}
t.Setenv(common.EnvGnuPGHome, fp)
err := InitializeGnuPG()
assert.Error(t, err)
require.Error(t, err)
// Restore permissions so path can be deleted
err = os.Chmod(fp, 0o700)
if err != nil {
@ -132,7 +132,7 @@ func Test_GPG_InitializeGnuPG(t *testing.T) {
}
t.Setenv(common.EnvGnuPGHome, p)
err = InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
})
}
@ -140,11 +140,11 @@ func Test_GPG_KeyManagement(t *testing.T) {
initTempDir(t)
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
// Import a single good key
keys, err := ImportPGPKeys("testdata/github.asc")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, "4AEE18F83AFDEB23", keys[0].KeyID)
assert.Contains(t, keys[0].Owner, "noreply@github.com")
@ -157,14 +157,14 @@ func Test_GPG_KeyManagement(t *testing.T) {
// We should have a total of 2 keys in the keyring now
{
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 2)
}
// We should now have that key in our keyring with unknown trust (trustdb not updated)
{
keys, err := GetInstalledPGPKeys([]string{importedKeyId})
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, "4AEE18F83AFDEB23", keys[0].KeyID)
assert.Contains(t, keys[0].Owner, "noreply@github.com")
@ -178,9 +178,9 @@ func Test_GPG_KeyManagement(t *testing.T) {
// Set trust level for our key and check the result
{
err := SetPGPTrustLevelById(kids, "ultimate")
assert.NoError(t, err)
require.NoError(t, err)
keys, err := GetInstalledPGPKeys(kids)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, kids[0], keys[0].Fingerprint)
assert.Equal(t, "ultimate", keys[0].Trust)
@ -188,35 +188,35 @@ func Test_GPG_KeyManagement(t *testing.T) {
// Import garbage - error expected
keys, err = ImportPGPKeys("testdata/garbage.asc")
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, keys)
// We should still have a total of 2 keys in the keyring now
{
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 2)
}
// Delete previously imported public key
{
err := DeletePGPKey(importedKeyId)
assert.NoError(t, err)
require.NoError(t, err)
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
}
// Delete non-existing key
{
err := DeletePGPKey(importedKeyId)
assert.Error(t, err)
require.Error(t, err)
}
// Import multiple keys
{
keys, err := ImportPGPKeys("testdata/multi.asc")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 2)
assert.Contains(t, keys[0].Owner, "john.doe@example.com")
assert.Contains(t, keys[1].Owner, "jane.doe@example.com")
@ -225,7 +225,7 @@ func Test_GPG_KeyManagement(t *testing.T) {
// Check if they were really imported
{
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 3)
}
}
@ -234,11 +234,11 @@ func Test_ImportPGPKeysFromString(t *testing.T) {
initTempDir(t)
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
// Import a single good key
keys, err := ImportPGPKeysFromString(test.MustLoadFileToString("testdata/github.asc"))
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, "4AEE18F83AFDEB23", keys[0].KeyID)
assert.Contains(t, keys[0].Owner, "noreply@github.com")
@ -250,19 +250,19 @@ func Test_ValidateGPGKeysFromString(t *testing.T) {
initTempDir(t)
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
{
keyData := test.MustLoadFileToString("testdata/github.asc")
keys, err := ValidatePGPKeysFromString(keyData)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
}
{
keyData := test.MustLoadFileToString("testdata/multi.asc")
keys, err := ValidatePGPKeysFromString(keyData)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 2)
}
}
@ -271,12 +271,12 @@ func Test_ValidateGPGKeys(t *testing.T) {
initTempDir(t)
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
// Validation good case - 1 key
{
keys, err := ValidatePGPKeys("testdata/github.asc")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Contains(t, keys, "4AEE18F83AFDEB23")
}
@ -284,14 +284,14 @@ func Test_ValidateGPGKeys(t *testing.T) {
// Validation bad case
{
keys, err := ValidatePGPKeys("testdata/garbage.asc")
assert.Error(t, err)
require.Error(t, err)
assert.Empty(t, keys)
}
// We should still have a total of 1 keys in the keyring now
{
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
}
}
@ -300,10 +300,10 @@ func Test_GPG_ParseGitCommitVerification(t *testing.T) {
initTempDir(t)
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
keys, err := ImportPGPKeys("testdata/github.asc")
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
// Good case
@ -519,23 +519,23 @@ func Test_IsSecretKey(t *testing.T) {
// First run should initialize fine
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
// We should have exactly one public key with ultimate trust (our own) in the keyring
keys, err := GetInstalledPGPKeys(nil)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, keys, 1)
assert.Equal(t, "ultimate", keys[0].Trust)
{
secret, err := IsSecretKey(keys[0].KeyID)
assert.NoError(t, err)
require.NoError(t, err)
assert.True(t, secret)
}
{
secret, err := IsSecretKey("invalid")
assert.NoError(t, err)
require.NoError(t, err)
assert.False(t, secret)
}
}
@ -545,13 +545,13 @@ func Test_SyncKeyRingFromDirectory(t *testing.T) {
// First run should initialize fine
err := InitializeGnuPG()
assert.NoError(t, err)
require.NoError(t, err)
tempDir := t.TempDir()
{
new, removed, err := SyncKeyRingFromDirectory(tempDir)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, new)
assert.Empty(t, removed)
}
@ -576,12 +576,12 @@ func Test_SyncKeyRingFromDirectory(t *testing.T) {
}
new, removed, err := SyncKeyRingFromDirectory(tempDir)
assert.NoError(t, err)
require.NoError(t, err)
assert.Len(t, new, 3)
assert.Empty(t, removed)
installed, err := GetInstalledPGPKeys(new)
assert.NoError(t, err)
require.NoError(t, err)
for _, k := range installed {
assert.Contains(t, new, k.KeyID)
}
@ -593,12 +593,12 @@ func Test_SyncKeyRingFromDirectory(t *testing.T) {
panic(err.Error())
}
new, removed, err := SyncKeyRingFromDirectory(tempDir)
assert.NoError(t, err)
require.NoError(t, err)
assert.Empty(t, new)
assert.Len(t, removed, 1)
installed, err := GetInstalledPGPKeys(new)
assert.NoError(t, err)
require.NoError(t, err)
for _, k := range installed {
assert.NotEqual(t, k.KeyID, removed[0])
}