1
1
package integration
2
2
3
3
import (
4
+ "io/ioutil"
5
+ "os"
4
6
"testing"
5
7
6
8
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"
7
11
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
8
12
13
+ configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
9
14
testutil "github.com/openshift/origin/test/util"
10
15
testserver "github.com/openshift/origin/test/util/server"
11
16
)
12
17
13
- func setupAuditTest (t * testing.T ) (kclientset.Interface , func ()) {
18
+ func setupAudit (t * testing.T , auditConfig configapi. AuditConfig ) (kclientset.Interface , func ()) {
14
19
masterConfig , err := testserver .DefaultMasterOptions ()
15
20
if err != nil {
16
21
t .Fatalf ("error creating config: %v" , err )
17
22
}
18
- masterConfig .AuditConfig . Enabled = true
23
+ masterConfig .AuditConfig = auditConfig
19
24
kubeConfigFile , err := testserver .StartConfiguredMasterAPI (masterConfig )
20
25
if err != nil {
21
26
t .Fatalf ("error starting server: %v" , err )
@@ -30,7 +35,7 @@ func setupAuditTest(t *testing.T) (kclientset.Interface, func()) {
30
35
}
31
36
32
37
func TestBasicFunctionalityWithAudit (t * testing.T ) {
33
- kubeClient , fn := setupAuditTest ( t )
38
+ kubeClient , fn := setupAudit ( t , configapi. AuditConfig { Enabled : true } )
34
39
defer fn ()
35
40
36
41
if _ , err := kubeClient .Core ().Pods (metav1 .NamespaceDefault ).Watch (metav1.ListOptions {}); err != nil {
@@ -39,3 +44,79 @@ func TestBasicFunctionalityWithAudit(t *testing.T) {
39
44
40
45
// TODO: test oc debug, exec, rsh, port-forward
41
46
}
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