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
+ "k8s.io/apiserver/pkg/apis/audit"
7
10
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
8
11
12
+ configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
9
13
testutil "github.com/openshift/origin/test/util"
10
14
testserver "github.com/openshift/origin/test/util/server"
11
15
)
12
16
13
- func setupAuditTest (t * testing.T ) (kclientset.Interface , func ()) {
17
+ func setupAudit (t * testing.T , auditConfig configapi. AuditConfig ) (kclientset.Interface , func ()) {
14
18
masterConfig , err := testserver .DefaultMasterOptions ()
15
19
if err != nil {
16
20
t .Fatalf ("error creating config: %v" , err )
17
21
}
18
- masterConfig .AuditConfig . Enabled = true
22
+ masterConfig .AuditConfig = auditConfig
19
23
kubeConfigFile , err := testserver .StartConfiguredMasterAPI (masterConfig )
20
24
if err != nil {
21
25
t .Fatalf ("error starting server: %v" , err )
@@ -30,7 +34,7 @@ func setupAuditTest(t *testing.T) (kclientset.Interface, func()) {
30
34
}
31
35
32
36
func TestBasicFunctionalityWithAudit (t * testing.T ) {
33
- kubeClient , fn := setupAuditTest ( t )
37
+ kubeClient , fn := setupAudit ( t , configapi. AuditConfig { Enabled : true } )
34
38
defer fn ()
35
39
36
40
if _ , err := kubeClient .Core ().Pods (metav1 .NamespaceDefault ).Watch (metav1.ListOptions {}); err != nil {
@@ -39,3 +43,62 @@ func TestBasicFunctionalityWithAudit(t *testing.T) {
39
43
40
44
// TODO: test oc debug, exec, rsh, port-forward
41
45
}
46
+
47
+ func TestAuditConfigEmbeded (t * testing.T ) {
48
+ auditConfig := configapi.AuditConfig {
49
+ Enabled : true ,
50
+ PolicyConfiguration : & audit.Policy {
51
+ Rules : []audit.PolicyRule {
52
+ {Level : audit .LevelMetadata },
53
+ },
54
+ },
55
+ }
56
+ kubeClient , fn := setupAudit (t , auditConfig )
57
+ defer fn ()
58
+
59
+ if _ , err := kubeClient .Core ().Pods (metav1 .NamespaceDefault ).Watch (metav1.ListOptions {}); err != nil {
60
+ t .Errorf ("Unexpected error watching pods: %v" , err )
61
+ }
62
+ }
63
+
64
+ func TestAuditConfigV1Alpha1File (t * testing.T ) {
65
+ testAuditConfigFile (t , []byte (`
66
+ apiVersion: audit.k8s.io/v1alpha1
67
+ kind: Policy
68
+ rules:
69
+ - level: Metadata
70
+ ` ))
71
+ }
72
+
73
+ func TestAuditConfigV1Beta1File (t * testing.T ) {
74
+ testAuditConfigFile (t , []byte (`
75
+ apiVersion: audit.k8s.io/v1beta1
76
+ kind: Policy
77
+ rules:
78
+ - level: Metadata
79
+ ` ))
80
+ }
81
+
82
+ func testAuditConfigFile (t * testing.T , policy []byte ) {
83
+ tmp , err := ioutil .TempFile ("" , "audit-policy" )
84
+ if err != nil {
85
+ t .Fatalf ("Cannot create a temporary file: %v" , err )
86
+ }
87
+ defer os .Remove (tmp .Name ())
88
+ if _ , err := tmp .Write (policy ); err != nil {
89
+ t .Fatalf ("Cannot write to a temporary file: %v" , err )
90
+ }
91
+ if err := tmp .Close (); err != nil {
92
+ t .Fatalf ("Cannot close a temporary file: %v" , err )
93
+ }
94
+ auditConfig := configapi.AuditConfig {
95
+ Enabled : true ,
96
+ PolicyFile : tmp .Name (),
97
+ }
98
+ kubeClient , fn := setupAudit (t , auditConfig )
99
+ defer fn ()
100
+
101
+ if _ , err := kubeClient .Core ().Pods (metav1 .NamespaceDefault ).Watch (metav1.ListOptions {}); err != nil {
102
+ t .Errorf ("Unexpected error watching pods: %v" , err )
103
+ }
104
+ }
0 commit comments