From bd38552db5ffef1ed209b23922018a3493b80c5f Mon Sep 17 00:00:00 2001 From: Rafael Firmino Date: Mon, 7 Feb 2022 11:21:19 -0300 Subject: [PATCH] test: add tests in time util package (#474) * test: add tests in time util package * Add copyright --- go.mod | 1 + util/time_test.go | 111 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 util/time_test.go diff --git a/go.mod b/go.mod index 8fec5a4db4d7..23b49d0afecc 100644 --- a/go.mod +++ b/go.mod @@ -25,6 +25,7 @@ require ( github.com/russellhaering/goxmldsig v1.1.1 github.com/satori/go.uuid v1.2.0 // indirect github.com/smartystreets/goconvey v1.6.4 // indirect + github.com/stretchr/testify v1.6.1 github.com/tealeg/xlsx v1.0.5 github.com/thanhpk/randstr v1.0.4 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 diff --git a/util/time_test.go b/util/time_test.go new file mode 100644 index 000000000000..1d1ef4c23e0d --- /dev/null +++ b/util/time_test.go @@ -0,0 +1,111 @@ +// Copyright 2021 The casbin Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package util + +import ( + "fmt" + "reflect" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func Test_GetCurrentTime(t *testing.T) { + test := GetCurrentTime() + expected := time.Now().Format(time.RFC3339) + + assert.Equal(t, test, expected, "The times not are equals") + + types := reflect.TypeOf(test).Kind() + assert.Equal(t, types, reflect.String, "GetCurrentUnixTime should be return string") + +} + +func Test_GetCurrentUnixTime_Shoud_Return_String(t *testing.T) { + test := GetCurrentUnixTime() + types := reflect.TypeOf(test).Kind() + assert.Equal(t, types, reflect.String, "GetCurrentUnixTime should be return string") +} + +func Test_IsTokenExpired(t *testing.T) { + + type input struct { + createdTime string + expiresIn int + } + + type testCases struct { + description string + input input + expected bool + } + + for _, scenario := range []testCases{ + { + description: "Token emited now is valid for 60 minutes", + input: input{ + createdTime: time.Now().Format(time.RFC3339), + expiresIn: 60, + }, + expected: false, + }, + { + description: "Token emited 60 minutes before now is valid for 60 minutes", + input: input{ + createdTime: time.Now().Add(-time.Minute * 60).Format(time.RFC3339), + expiresIn: 61, + }, + expected: false, + }, + { + description: "Token emited 2 hours before now is Expired after 60 minutes", + input: input{ + createdTime: time.Now().Add(-time.Hour * 2).Format(time.RFC3339), + expiresIn: 60, + }, + expected: true, + }, + { + description: "Token emited 61 minutes before now is Expired after 60 minutes", + input: input{ + createdTime: time.Now().Add(-time.Minute * 61).Format(time.RFC3339), + expiresIn: 60, + }, + expected: true, + }, + { + description: "Token emited 2 hours before now is velid for 120 minutes", + input: input{ + createdTime: time.Now().Add(-time.Hour * 2).Format(time.RFC3339), + expiresIn: 121, + }, + expected: false, + }, + { + description: "Token emited 159 minutes before now is Expired after 60 minutes", + input: input{ + createdTime: time.Now().Add(-time.Minute * 159).Format(time.RFC3339), + expiresIn: 120, + }, + expected: true, + }, + } { + t.Run(scenario.description, func(t *testing.T) { + result := IsTokenExpired(scenario.input.createdTime, scenario.input.expiresIn) + assert.Equal(t, scenario.expected, result, fmt.Sprintf("Expected %t, but was founded %t", scenario.expected, result)) + }) + } +}