github.com/stripe/stripe-go/v76@v76.25.0/log_test.go (about)

     1  package stripe
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	assert "github.com/stretchr/testify/require"
     8  )
     9  
    10  //
    11  // Tests
    12  //
    13  
    14  func TestDefaultLeveledLogger(t *testing.T) {
    15  	_, ok := DefaultLeveledLogger.(*LeveledLogger)
    16  	assert.True(t, ok)
    17  }
    18  
    19  //
    20  // LeveledLogger
    21  //
    22  
    23  func TestLeveledLoggerDebugf(t *testing.T) {
    24  	var stdout, stderr bytes.Buffer
    25  	logger := &LeveledLogger{stdoutOverride: &stdout, stderrOverride: &stderr}
    26  
    27  	{
    28  		clearBuffers(&stdout, &stderr)
    29  		logger.Level = LevelDebug
    30  
    31  		logger.Debugf("test")
    32  		assert.Equal(t, "[DEBUG] test\n", stdout.String())
    33  		assert.Equal(t, "", stderr.String())
    34  	}
    35  
    36  	// Expect no logging
    37  	for _, level := range []Level{LevelInfo, LevelWarn, LevelError} {
    38  		clearBuffers(&stdout, &stderr)
    39  		logger.Level = level
    40  
    41  		logger.Debugf("test")
    42  		assert.Equal(t, "", stdout.String())
    43  		assert.Equal(t, "", stderr.String())
    44  	}
    45  }
    46  
    47  func TestLeveledLoggerInfof(t *testing.T) {
    48  	var stdout, stderr bytes.Buffer
    49  	logger := &LeveledLogger{stdoutOverride: &stdout, stderrOverride: &stderr}
    50  
    51  	for _, level := range []Level{LevelDebug, LevelInfo} {
    52  		clearBuffers(&stdout, &stderr)
    53  		logger.Level = level
    54  
    55  		logger.Infof("test")
    56  		assert.Equal(t, "[INFO] test\n", stdout.String())
    57  		assert.Equal(t, "", stderr.String())
    58  	}
    59  
    60  	// Expect no logging
    61  	for _, level := range []Level{LevelWarn, LevelError} {
    62  		clearBuffers(&stdout, &stderr)
    63  		logger.Level = level
    64  
    65  		logger.Infof("test")
    66  		assert.Equal(t, "", stdout.String())
    67  		assert.Equal(t, "", stderr.String())
    68  	}
    69  }
    70  
    71  func TestLeveledLoggerWarnf(t *testing.T) {
    72  	var stdout, stderr bytes.Buffer
    73  	logger := &LeveledLogger{stdoutOverride: &stdout, stderrOverride: &stderr}
    74  
    75  	for _, level := range []Level{LevelDebug, LevelInfo, LevelWarn} {
    76  		clearBuffers(&stdout, &stderr)
    77  		logger.Level = level
    78  
    79  		logger.Warnf("test")
    80  		assert.Equal(t, "", stdout.String())
    81  		assert.Equal(t, "[WARN] test\n", stderr.String())
    82  	}
    83  
    84  	// Expect no logging
    85  	{
    86  		clearBuffers(&stdout, &stderr)
    87  		logger.Level = LevelError
    88  
    89  		logger.Warnf("test")
    90  		assert.Equal(t, "", stdout.String())
    91  		assert.Equal(t, "", stderr.String())
    92  	}
    93  }
    94  
    95  func TestLeveledLoggerErrorf(t *testing.T) {
    96  	var stdout, stderr bytes.Buffer
    97  	logger := &LeveledLogger{stdoutOverride: &stdout, stderrOverride: &stderr}
    98  
    99  	for _, level := range []Level{LevelDebug, LevelInfo, LevelWarn, LevelError} {
   100  		clearBuffers(&stdout, &stderr)
   101  		logger.Level = level
   102  
   103  		logger.Errorf("test")
   104  		assert.Equal(t, "", stdout.String())
   105  		assert.Equal(t, "[ERROR] test\n", stderr.String())
   106  	}
   107  }
   108  
   109  //
   110  // Private functions
   111  //
   112  
   113  func clearBuffers(buffers ...*bytes.Buffer) {
   114  	for _, b := range buffers {
   115  		b.Truncate(0)
   116  	}
   117  }