Skip to content

Commit b918c0a

Browse files
committed
Switched to grpcLogger and added a unit test comparing log with os.StdOut
1 parent bcf4256 commit b918c0a

File tree

2 files changed

+27
-33
lines changed

2 files changed

+27
-33
lines changed

authz/audit/stdout_logger.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,17 @@ import (
2525
"google.golang.org/grpc/grpclog"
2626
)
2727

28-
var logger = grpclog.Component("authz-audit")
28+
var grpcLogger = grpclog.Component("authz-audit")
2929

30-
type StdOutLogger struct{}
30+
type StdOutLogger struct {
31+
}
3132

3233
func (logger *StdOutLogger) Log(event *Event) {
3334
jsonBytes, err := json.Marshal(event)
3435
if err != nil {
35-
fmt.Errorf("failed to marshal log data to JSON: %v", err)
36-
}
37-
//TODO checkinternal go log package for redirection of output
38-
fmt.Println(string(jsonBytes))
39-
}
40-
41-
func (logger *StdOutLogger) ToJSON() ([]byte, error) {
42-
jsonBytes, err := json.Marshal(logger)
43-
if err != nil {
44-
return nil, fmt.Errorf("failed to marshal logger to JSON: %v", err)
36+
grpcLogger.Errorf("failed to marshal log data to JSON: %v", err)
4537
}
46-
47-
return jsonBytes, nil
38+
fmt.Println("[AuthZ Audit StdOutLogger] " + string(jsonBytes))
4839
}
4940

5041
const (
@@ -66,7 +57,7 @@ func (StdOutLoggerBuilder) Build(LoggerConfig) Logger {
6657
}
6758

6859
func (StdOutLoggerBuilder) ParseLoggerConfig(config json.RawMessage) (LoggerConfig, error) {
69-
logger.Infof("Config value %v ignored, "+
70-
"StdOutLogger doesn't support custom configs", config)
60+
grpcLogger.Warningf("Config value %v ignored, "+
61+
"StdOutLogger doesn't support custom configs", string(config))
7162
return &StdoutLoggerConfig{}, nil
7263
}

authz/audit/stdout_logger_test.go

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919
package audit
2020

2121
import (
22+
"bytes"
2223
"encoding/json"
24+
"io"
25+
"log"
26+
"os"
2327
"testing"
2428
)
2529

@@ -31,23 +35,22 @@ var (
3135
)
3236

3337
func TestStdOutLogger_Log(t *testing.T) {
38+
orig := os.Stdout
39+
r, w, _ := os.Pipe()
40+
os.Stdout = w
41+
3442
event := &Event{PolicyName: "test policy", Principal: "test principal"}
3543
auditLogger.Log(event)
36-
}
3744

38-
//func TestMyLogger_ToJSON(t *testing.T) {
39-
// jsonBytes, err := logger.ToJSON()
40-
// if err != nil {
41-
// t.Fatalf("Failed to marshal logger to JSON: %v", err)
42-
// }
43-
//
44-
// var restored StdOutLogger
45-
// err = json.Unmarshal(jsonBytes, &restored)
46-
// if err != nil {
47-
// t.Fatalf("Failed to unmarshal logger back from JSON: %v", err)
48-
// }
49-
//
50-
// if !reflect.DeepEqual(logger, &restored) {
51-
// t.Errorf("ToJSON() test failed, restored = %v, want %v", restored, logger)
52-
// }
53-
//}
45+
w.Close()
46+
var buf bytes.Buffer
47+
_, err := io.Copy(&buf, r)
48+
if err != nil {
49+
log.Fatal(err)
50+
}
51+
expected := `[AuthZ Audit StdOutLogger] {"FullMethodName":"","Principal":"test principal","PolicyName":"test policy","MatchedRule":"","Authorized":false}`
52+
if buf.String() != (expected + "\n") {
53+
t.Fatalf("unexpected error\nwant:%v\n got:%v", expected, buf.String())
54+
}
55+
os.Stdout = orig
56+
}

0 commit comments

Comments
 (0)