11package integration
22
33import (
4+ "io/ioutil"
5+ "os"
46 "testing"
57
68 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+ "k8s.io/apiserver/pkg/apis/audit"
710 kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
811
12+ configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
913 testutil "github.com/openshift/origin/test/util"
1014 testserver "github.com/openshift/origin/test/util/server"
1115)
1216
13- func setupAuditTest (t * testing.T ) (kclientset.Interface , func ()) {
17+ func setupAudit (t * testing.T , auditConfig configapi. AuditConfig ) (kclientset.Interface , func ()) {
1418 masterConfig , err := testserver .DefaultMasterOptions ()
1519 if err != nil {
1620 t .Fatalf ("error creating config: %v" , err )
1721 }
18- masterConfig .AuditConfig . Enabled = true
22+ masterConfig .AuditConfig = auditConfig
1923 kubeConfigFile , err := testserver .StartConfiguredMasterAPI (masterConfig )
2024 if err != nil {
2125 t .Fatalf ("error starting server: %v" , err )
@@ -30,7 +34,7 @@ func setupAuditTest(t *testing.T) (kclientset.Interface, func()) {
3034}
3135
3236func TestBasicFunctionalityWithAudit (t * testing.T ) {
33- kubeClient , fn := setupAuditTest ( t )
37+ kubeClient , fn := setupAudit ( t , configapi. AuditConfig { Enabled : true } )
3438 defer fn ()
3539
3640 if _ , err := kubeClient .Core ().Pods (metav1 .NamespaceDefault ).Watch (metav1.ListOptions {}); err != nil {
@@ -39,3 +43,62 @@ func TestBasicFunctionalityWithAudit(t *testing.T) {
3943
4044 // TODO: test oc debug, exec, rsh, port-forward
4145}
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