github.com/jxgolibs/go-oauth2-server@v1.0.1/util/time_test.go (about)

     1  package util_test
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/RichardKnop/go-oauth2-server/util"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestFormatTime(t *testing.T) {
    12  	var (
    13  		timestamp        time.Time
    14  		expected, actual string
    15  	)
    16  
    17  	// UTC
    18  	timestamp = time.Date(2012, 12, 11, 8, 52, 31, 493729031, time.UTC)
    19  	expected = "2012-12-11T08:52:31.493Z"
    20  	actual = util.FormatTime(&timestamp)
    21  	assert.Equal(t, expected, actual)
    22  
    23  	// UTC
    24  	timestamp = time.Date(2012, 12, 11, 8, 52, 31, 493729031, time.FixedZone("HKT", 8*3600))
    25  	expected = "2012-12-11T00:52:31.493Z"
    26  	actual = util.FormatTime(&timestamp)
    27  	assert.Equal(t, expected, actual)
    28  }
    29  
    30  func TestParseTimestamp(t *testing.T) {
    31  	var (
    32  		parsedTime *time.Time
    33  		err        error
    34  	)
    35  
    36  	parsedTime, err = util.ParseTimestamp("")
    37  	assert.Nil(t, err)
    38  	assert.Nil(t, parsedTime)
    39  
    40  	parsedTime, err = util.ParseTimestamp("bogus")
    41  	assert.NotNil(t, err)
    42  	assert.Nil(t, parsedTime)
    43  
    44  	parsedTime, err = util.ParseTimestamp("2016-05-04T12:08:35Z")
    45  	assert.Nil(t, err)
    46  	assert.NotNil(t, parsedTime)
    47  	assert.Equal(t, 2016, parsedTime.UTC().Year())
    48  	assert.Equal(t, time.May, parsedTime.UTC().Month())
    49  	assert.Equal(t, 4, parsedTime.UTC().Day())
    50  	assert.Equal(t, 12, parsedTime.UTC().Hour())
    51  	assert.Equal(t, 8, parsedTime.UTC().Minute())
    52  	assert.Equal(t, 35, parsedTime.UTC().Second())
    53  
    54  	parsedTime, err = util.ParseTimestamp("2016-05-04T12:08:35+07:00")
    55  	assert.Nil(t, err)
    56  	assert.NotNil(t, parsedTime)
    57  	assert.Equal(t, 2016, parsedTime.UTC().Year())
    58  	assert.Equal(t, time.May, parsedTime.UTC().Month())
    59  	assert.Equal(t, 4, parsedTime.UTC().Day())
    60  	assert.Equal(t, 5, parsedTime.UTC().Hour())
    61  	assert.Equal(t, 8, parsedTime.UTC().Minute())
    62  	assert.Equal(t, 35, parsedTime.UTC().Second())
    63  
    64  	// RFC3339 timestamp generated in Django: '{}{}'.format(timezone.now().utcnow(), 'Z')
    65  	parsedTime, err = util.ParseTimestamp("2016-07-19T09:28:03.285195Z")
    66  	assert.Nil(t, err)
    67  	assert.NotNil(t, parsedTime)
    68  	assert.Equal(t, 2016, parsedTime.UTC().Year())
    69  	assert.Equal(t, time.July, parsedTime.UTC().Month())
    70  	assert.Equal(t, 19, parsedTime.UTC().Day())
    71  	assert.Equal(t, 9, parsedTime.UTC().Hour())
    72  	assert.Equal(t, 28, parsedTime.UTC().Minute())
    73  	assert.Equal(t, 3, parsedTime.UTC().Second())
    74  }
    75  
    76  func TestFormatDate(t *testing.T) {
    77  	var (
    78  		timestamp        time.Time
    79  		expected, actual string
    80  	)
    81  
    82  	// UTC
    83  	timestamp = time.Date(2012, 12, 11, 8, 52, 31, 493729031, time.UTC)
    84  	expected = "2012-12-11"
    85  	actual = util.FormatDate(&timestamp)
    86  	assert.Equal(t, expected, actual)
    87  }
    88  
    89  func TestParseDate(t *testing.T) {
    90  	var (
    91  		parsedTime *time.Time
    92  		err        error
    93  	)
    94  
    95  	parsedTime, err = util.ParseDate("")
    96  	assert.Nil(t, err)
    97  	assert.Nil(t, parsedTime)
    98  
    99  	parsedTime, err = util.ParseDate("bogus")
   100  	assert.NotNil(t, err)
   101  	assert.Nil(t, parsedTime)
   102  
   103  	parsedTime, err = util.ParseDate("2016-05-04")
   104  	assert.Nil(t, err)
   105  	assert.NotNil(t, parsedTime)
   106  	assert.Equal(t, 2016, parsedTime.UTC().Year())
   107  	assert.Equal(t, time.May, parsedTime.UTC().Month())
   108  	assert.Equal(t, 4, parsedTime.UTC().Day())
   109  	assert.Equal(t, 0, parsedTime.UTC().Hour())
   110  	assert.Equal(t, 0, parsedTime.UTC().Minute())
   111  	assert.Equal(t, 0, parsedTime.UTC().Second())
   112  }