10000 [Bugfix] Fix Integration Service · arangodb/kube-arangodb@25381ce · GitHub
[go: up one dir, main page]

Skip to content

Commit 25381ce

Browse files
committed
[Bugfix] Fix Integration Service
1 parent dc43263 commit 25381ce

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

integrations/authentication/v1/implementation.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,13 @@ func (i *implementation) CreateToken(ctx context.Context, request *pbAuthenticat
165165
return nil, err
166166
}
167167

168-
user, exp, err := i.extractTokenDetails(cache, signedToken)
168+
user, _, err = i.extractTokenDetails(cache, signedToken)
169169
if err != nil {
170170
return nil, err
171171
}
172172

173173
return &pbAuthenticationV1.CreateTokenResponse{
174-
Lifetime: durationpb.New(exp),
174+
Lifetime: durationpb.New(duration),
175175
User: user,
176176
Token: signedToken,
177177
}, nil
@@ -195,8 +195,11 @@ func (i *implementation) extractTokenDetails(cache *cache, t string) (string, ti
195195
duration := DefaultTokenMaxTTL
196196

197197
if v, ok := p[token.ClaimEXP]; ok {
198-
if s, ok := v.(int64); ok {
199-
duration = time.Until(time.Unix(s, 0))
198+
switch o := v.(type) {
199+
case int64:
200+
duration = time.Until(time.Unix(o, 0))
201+
case float64:
202+
duration = time.Until(time.Unix(int64(o), 0))
200203
}
201204
}
202205

integrations/authentication/v1/service_test.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ package v1
2323
import (
2424
"context"
2525
"testing"
26+
"time"
2627

2728
"github.com/stretchr/testify/require"
29+
"google.golang.org/protobuf/types/known/durationpb"
2830

2931
pbAuthenticationV1 "github.com/arangodb/kube-arangodb/integrations/authentication/v1/definition"
3032
"github.com/arangodb/kube-arangodb/pkg/util"
@@ -189,3 +191,54 @@ func Test_Service_AskForDefaultIfBlocked(t *testing.T) {
189191
})
190192
require.EqualError(t, err, "rpc error: code = Unknown desc = User blocked is not allowed")
191193
}
194+
195+
func Test_Service_WithTTL(t *testing.T) {
196+
ctx, c := context.WithCancel(context.Background())
197+
defer c()
198+
199+
client, directory := Client(t, ctx)
200+
201+
reSaveJWTTokens(t, directory, generateJWTToken())
202+
203+
extract := func(t *testing.T, duration time.Duration) (time.Duration, time.Duration) {
204+
token, err := client.CreateToken(ctx, &pbAuthenticationV1.CreateTokenRequest{
205+
Lifetime: durationpb.New(duration),
206+
})
207+
require.NoError(t, err)
208+
209+
valid, err := client.Validate(ctx, &pbAuthenticationV1.ValidateRequest{
210+
Token: token.Token,
211+
})
212+
require.NoError(t, err)
213+
214+
require.NotNil(t, token.Lifetime)
215+
require.True(t, valid.IsValid)
216+
require.NotNil(t, valid.Details)
217+
218+
return token.Lifetime.AsDuration(), valid.Details.Lifetime.AsDuration()
219+
}
220+
221+
t.Run("10h", func(t *testing.T) {
222+
base, current := extract(t, 10*time.Hour)
223+
require.EqualValues(t, time.Hour, base)
224+
require.True(t, base-time.Second < current)
225+
})
226+
227+
t.Run("1h", func(t *testing.T) {
228+
base, current := extract(t, time.Hour)
229+
require.EqualValues(t, time.Hour, base)
230+
require.True(t, base-time.Second < current)
231+
})
232+
233+
t.Run("1min", func(t *testing.T) {
234+
base, current := extract(t, time.Minute)
235+
require.EqualValues(t, time.Minute, base)
236+
require.True(t 6268 , base-time.Second < current)
237+
})
238+
239+
t.Run("1sec", func(t *testing.T) {
240+
base, current := extract(t, time.Second)
241+
require.EqualValues(t, time.Minute, base)
242+
require.True(t, base-time.Second < current)
243+
})
244+
}

0 commit comments

Comments
 (0)
0