Skip to content

Commit d75df16

Browse files
committed
Additional audit tests
1 parent b90c8f6 commit d75df16

File tree

1 file changed

+84
-3
lines changed

1 file changed

+84
-3
lines changed

Diff for: test/integration/audit_test.go

+84-3
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
package integration
22

33
import (
4+
"io/ioutil"
5+
"os"
46
"testing"
57

68
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
auditv1alpha1 "k8s.io/apiserver/pkg/apis/audit/v1alpha1"
10+
auditv1beta1 "k8s.io/apiserver/pkg/apis/audit/v1beta1"
711
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
812

13+
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
914
testutil "github.com/openshift/origin/test/util"
1015
testserver "github.com/openshift/origin/test/util/server"
1116
)
1217

13-
func setupAuditTest(t *testing.T) (kclientset.Interface, func()) {
18+
func setupAudit(t *testing.T, auditConfig configapi.AuditConfig) (kclientset.Interface, func()) {
1419
masterConfig, err := testserver.DefaultMasterOptions()
1520
if err != nil {
1621
t.Fatalf("error creating config: %v", err)
1722
}
18-
masterConfig.AuditConfig.Enabled = true
23+
masterConfig.AuditConfig = auditConfig
1924
kubeConfigFile, err := testserver.StartConfiguredMasterAPI(masterConfig)
2025
if err != nil {
2126
t.Fatalf("error starting server: %v", err)
@@ -30,7 +35,7 @@ func setupAuditTest(t *testing.T) (kclientset.Interface, func()) {
3035
}
3136

3237
func TestBasicFunctionalityWithAudit(t *testing.T) {
33-
kubeClient, fn := setupAuditTest(t)
38+
kubeClient, fn := setupAudit(t, configapi.AuditConfig{Enabled: true})
3439
defer fn()
3540

3641
if _, err := kubeClient.Core().Pods(metav1.NamespaceDefault).Watch(metav1.ListOptions{}); err != nil {
@@ -39,3 +44,79 @@ func TestBasicFunctionalityWithAudit(t *testing.T) {
3944

4045
// TODO: test oc debug, exec, rsh, port-forward
4146
}
47+
48+
func TestAuditConfigV1Alpha1Embeded(t *testing.T) {
49+
auditConfig := configapi.AuditConfig{
50+
Enabled: true,
51+
PolicyConfiguration: &auditv1alpha1.Policy{
52+
Rules: []auditv1alpha1.PolicyRule{
53+
{Level: auditv1alpha1.LevelMetadata},
54+
},
55+
},
56+
}
57+
kubeClient, fn := setupAudit(t, auditConfig)
58+
defer fn()
59+
60+
if _, err := kubeClient.Core().Pods(metav1.NamespaceDefault).Watch(metav1.ListOptions{}); err != nil {
61+
t.Errorf("Unexpected error watching pods: %v", err)
62+
}
63+
}
64+
65+
func TestAuditConfigV1Beta1Embeded(t *testing.T) {
66+
auditConfig := configapi.AuditConfig{
67+
Enabled: true,
68+
PolicyConfiguration: &auditv1beta1.Policy{
69+
Rules: []auditv1beta1.PolicyRule{
70+
{Level: auditv1beta1.LevelMetadata},
71+
},
72+
},
73+
}
74+
kubeClient, fn := setupAudit(t, auditConfig)
75+
defer fn()
76+
77+
if _, err := kubeClient.Core().Pods(metav1.NamespaceDefault).Watch(metav1.ListOptions{}); err != nil {
78+
t.Errorf("Unexpected error watching pods: %v", err)
79+
}
80+
}
81+
82+
func TestAuditConfigV1Alpha1File(t *testing.T) {
83+
testAuditConfigFile(t, []byte(`
84+
apiVersion: audit.k8s.io/v1alpha1
85+
kind: Policy
86+
rules:
87+
- level: Metadata
88+
`))
89+
}
90+
91+
func TestAuditConfigV1Beta1File(t *testing.T) {
92+
testAuditConfigFile(t, []byte(`
93+
apiVersion: audit.k8s.io/v1beta1
94+
kind: Policy
95+
rules:
96+
- level: Metadata
97+
`))
98+
}
99+
100+
func testAuditConfigFile(t *testing.T, policy []byte) {
101+
tmp, err := ioutil.TempFile("", "audit-policy")
102+
if err != nil {
103+
t.Fatalf("Cannot create a temporary file: %v", err)
104+
}
105+
defer os.Remove(tmp.Name())
106+
if _, err := tmp.Write(policy); err != nil {
107+
t.Fatalf("Cannot write to a temporary file: %v", err)
108+
}
109+
if err := tmp.Close(); err != nil {
110+
t.Fatalf("Cannot close a temporary file: %v", err)
111+
}
112+
auditConfig := configapi.AuditConfig{
113+
Enabled: true,
114+
PolicyFile: tmp.Name(),
115+
}
116+
kubeClient, fn := setupAudit(t, auditConfig)
117+
defer fn()
118+
119+
if _, err := kubeClient.Core().Pods(metav1.NamespaceDefault).Watch(metav1.ListOptions{}); err != nil {
120+
t.Errorf("Unexpected error watching pods: %v", err)
121+
}
122+
}

0 commit comments

Comments
 (0)