...

Source file src/github.com/ory/fosite/handler/oauth2/helper_test.go

Documentation: github.com/ory/fosite/handler/oauth2

     1  /*
     2   * Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io>
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   *
    16   * @author		Aeneas Rekkas <aeneas+oss@aeneas.io>
    17   * @copyright 	2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io>
    18   * @license 	Apache-2.0
    19   *
    20   */
    21  
    22  package oauth2
    23  
    24  import (
    25  	"testing"
    26  	"time"
    27  
    28  	"github.com/golang/mock/gomock"
    29  	"github.com/pkg/errors"
    30  	"github.com/stretchr/testify/assert"
    31  	"github.com/stretchr/testify/require"
    32  
    33  	"github.com/ory/fosite"
    34  	"github.com/ory/fosite/internal"
    35  )
    36  
    37  func TestGetExpiresIn(t *testing.T) {
    38  	now := time.Now().UTC()
    39  	r := fosite.NewAccessRequest(&fosite.DefaultSession{
    40  		ExpiresAt: map[fosite.TokenType]time.Time{
    41  			fosite.AccessToken: now.Add(time.Hour),
    42  		},
    43  	})
    44  	assert.Equal(t, time.Hour, getExpiresIn(r, fosite.AccessToken, time.Millisecond, now))
    45  }
    46  
    47  func TestIssueAccessToken(t *testing.T) {
    48  	ctrl := gomock.NewController(t)
    49  	areq := &fosite.AccessRequest{}
    50  	aresp := &fosite.AccessResponse{Extra: map[string]interface{}{}}
    51  	accessStrat := internal.NewMockAccessTokenStrategy(ctrl)
    52  	accessStore := internal.NewMockAccessTokenStorage(ctrl)
    53  	defer ctrl.Finish()
    54  
    55  	helper := HandleHelper{
    56  		AccessTokenStorage:  accessStore,
    57  		AccessTokenStrategy: accessStrat,
    58  		AccessTokenLifespan: time.Hour,
    59  	}
    60  
    61  	areq.Session = &fosite.DefaultSession{}
    62  	for k, c := range []struct {
    63  		mock func()
    64  		err  error
    65  	}{
    66  		{
    67  			mock: func() {
    68  				accessStrat.EXPECT().GenerateAccessToken(nil, areq).Return("", "", errors.New(""))
    69  			},
    70  			err: errors.New(""),
    71  		},
    72  		{
    73  			mock: func() {
    74  				accessStrat.EXPECT().GenerateAccessToken(nil, areq).Return("token", "signature", nil)
    75  				accessStore.EXPECT().CreateAccessTokenSession(nil, "signature", gomock.Eq(areq.Sanitize([]string{}))).Return(errors.New(""))
    76  			},
    77  			err: errors.New(""),
    78  		},
    79  		{
    80  			mock: func() {
    81  				accessStrat.EXPECT().GenerateAccessToken(nil, areq).Return("token", "signature", nil)
    82  				accessStore.EXPECT().CreateAccessTokenSession(nil, "signature", gomock.Eq(areq.Sanitize([]string{}))).Return(nil)
    83  			},
    84  			err: nil,
    85  		},
    86  	} {
    87  		c.mock()
    88  		err := helper.IssueAccessToken(nil, areq, aresp)
    89  		require.Equal(t, err == nil, c.err == nil)
    90  		if c.err != nil {
    91  			assert.EqualError(t, err, c.err.Error(), "Case %d", k)
    92  		}
    93  	}
    94  }
    95  

View as plain text