You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package log
  5. import (
  6. "encoding/json"
  7. "fmt"
  8. "testing"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. type testLevel struct {
  12. Level Level `json:"level"`
  13. }
  14. func TestLevelMarshalUnmarshalJSON(t *testing.T) {
  15. levelBytes, err := json.Marshal(testLevel{
  16. Level: INFO,
  17. })
  18. assert.NoError(t, err)
  19. assert.Equal(t, string(makeTestLevelBytes(INFO.String())), string(levelBytes))
  20. var testLevel testLevel
  21. err = json.Unmarshal(levelBytes, &testLevel)
  22. assert.NoError(t, err)
  23. assert.Equal(t, INFO, testLevel.Level)
  24. err = json.Unmarshal(makeTestLevelBytes(`FOFOO`), &testLevel)
  25. assert.NoError(t, err)
  26. assert.Equal(t, INFO, testLevel.Level)
  27. err = json.Unmarshal([]byte(fmt.Sprintf(`{"level":%d}`, 2)), &testLevel)
  28. assert.NoError(t, err)
  29. assert.Equal(t, INFO, testLevel.Level)
  30. err = json.Unmarshal([]byte(fmt.Sprintf(`{"level":%d}`, 10012)), &testLevel)
  31. assert.NoError(t, err)
  32. assert.Equal(t, INFO, testLevel.Level)
  33. err = json.Unmarshal([]byte(`{"level":{}}`), &testLevel)
  34. assert.NoError(t, err)
  35. assert.Equal(t, INFO, testLevel.Level)
  36. assert.Equal(t, INFO.String(), Level(1001).String())
  37. err = json.Unmarshal([]byte(`{"level":{}`), &testLevel.Level)
  38. assert.Error(t, err)
  39. }
  40. func makeTestLevelBytes(level string) []byte {
  41. return []byte(fmt.Sprintf(`{"level":"%s"}`, level))
  42. }