Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
D
dex
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
dex
Commits
9e889245
Commit
9e889245
authored
Mar 15, 2017
by
rithu john
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
storage/conformance: update conformance tests with multiple entries per resource
parent
7a798844
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
172 additions
and
56 deletions
+172
-56
conformance.go
storage/conformance/conformance.go
+172
-56
No files found.
storage/conformance/conformance.go
View file @
9e889245
...
@@ -80,9 +80,9 @@ func mustBeErrAlreadyExists(t *testing.T, kind string, err error) {
...
@@ -80,9 +80,9 @@ func mustBeErrAlreadyExists(t *testing.T, kind string, err error) {
}
}
func
testAuthRequestCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
func
testAuthRequestCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
a
:=
storage
.
AuthRequest
{
a
1
:=
storage
.
AuthRequest
{
ID
:
storage
.
NewID
(),
ID
:
storage
.
NewID
(),
ClientID
:
"
foobar
"
,
ClientID
:
"
client1
"
,
ResponseTypes
:
[]
string
{
"code"
},
ResponseTypes
:
[]
string
{
"code"
},
Scopes
:
[]
string
{
"openid"
,
"email"
},
Scopes
:
[]
string
{
"openid"
,
"email"
},
RedirectURI
:
"https://localhost:80/callback"
,
RedirectURI
:
"https://localhost:80/callback"
,
...
@@ -104,15 +104,41 @@ func testAuthRequestCRUD(t *testing.T, s storage.Storage) {
...
@@ -104,15 +104,41 @@ func testAuthRequestCRUD(t *testing.T, s storage.Storage) {
identity
:=
storage
.
Claims
{
Email
:
"foobar"
}
identity
:=
storage
.
Claims
{
Email
:
"foobar"
}
if
err
:=
s
.
CreateAuthRequest
(
a
);
err
!=
nil
{
if
err
:=
s
.
CreateAuthRequest
(
a
1
);
err
!=
nil
{
t
.
Fatalf
(
"failed creating auth request: %v"
,
err
)
t
.
Fatalf
(
"failed creating auth request: %v"
,
err
)
}
}
// Attempt to create same AuthRequest twice.
// Attempt to create same AuthRequest twice.
err
:=
s
.
CreateAuthRequest
(
a
)
err
:=
s
.
CreateAuthRequest
(
a
1
)
mustBeErrAlreadyExists
(
t
,
"auth request"
,
err
)
mustBeErrAlreadyExists
(
t
,
"auth request"
,
err
)
if
err
:=
s
.
UpdateAuthRequest
(
a
.
ID
,
func
(
old
storage
.
AuthRequest
)
(
storage
.
AuthRequest
,
error
)
{
a2
:=
storage
.
AuthRequest
{
ID
:
storage
.
NewID
(),
ClientID
:
"client2"
,
ResponseTypes
:
[]
string
{
"code"
},
Scopes
:
[]
string
{
"openid"
,
"email"
},
RedirectURI
:
"https://localhost:80/callback"
,
Nonce
:
"bar"
,
State
:
"foo"
,
ForceApprovalPrompt
:
true
,
LoggedIn
:
true
,
Expiry
:
neverExpire
,
ConnectorID
:
"ldap"
,
ConnectorData
:
[]
byte
(
`{"some":"data"}`
),
Claims
:
storage
.
Claims
{
UserID
:
"2"
,
Username
:
"john"
,
Email
:
"john.doe@example.com"
,
EmailVerified
:
true
,
Groups
:
[]
string
{
"a"
},
},
}
if
err
:=
s
.
CreateAuthRequest
(
a2
);
err
!=
nil
{
t
.
Fatalf
(
"failed creating auth request: %v"
,
err
)
}
if
err
:=
s
.
UpdateAuthRequest
(
a1
.
ID
,
func
(
old
storage
.
AuthRequest
)
(
storage
.
AuthRequest
,
error
)
{
old
.
Claims
=
identity
old
.
Claims
=
identity
old
.
ConnectorID
=
"connID"
old
.
ConnectorID
=
"connID"
return
old
,
nil
return
old
,
nil
...
@@ -120,19 +146,28 @@ func testAuthRequestCRUD(t *testing.T, s storage.Storage) {
...
@@ -120,19 +146,28 @@ func testAuthRequestCRUD(t *testing.T, s storage.Storage) {
t
.
Fatalf
(
"failed to update auth request: %v"
,
err
)
t
.
Fatalf
(
"failed to update auth request: %v"
,
err
)
}
}
got
,
err
:=
s
.
GetAuthRequest
(
a
.
ID
)
got
,
err
:=
s
.
GetAuthRequest
(
a
1
.
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"failed to get auth req: %v"
,
err
)
t
.
Fatalf
(
"failed to get auth req: %v"
,
err
)
}
}
if
!
reflect
.
DeepEqual
(
got
.
Claims
,
identity
)
{
if
!
reflect
.
DeepEqual
(
got
.
Claims
,
identity
)
{
t
.
Fatalf
(
"update failed, wanted identity=%#v got %#v"
,
identity
,
got
.
Claims
)
t
.
Fatalf
(
"update failed, wanted identity=%#v got %#v"
,
identity
,
got
.
Claims
)
}
}
if
err
:=
s
.
DeleteAuthRequest
(
a1
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"failed to delete auth request: %v"
,
err
)
}
if
err
:=
s
.
DeleteAuthRequest
(
a2
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"failed to delete auth request: %v"
,
err
)
}
}
}
func
testAuthCodeCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
func
testAuthCodeCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
a
:=
storage
.
AuthCode
{
a
1
:=
storage
.
AuthCode
{
ID
:
storage
.
NewID
(),
ID
:
storage
.
NewID
(),
ClientID
:
"
foobar
"
,
ClientID
:
"
client1
"
,
RedirectURI
:
"https://localhost:80/callback"
,
RedirectURI
:
"https://localhost:80/callback"
,
Nonce
:
"foobar"
,
Nonce
:
"foobar"
,
Scopes
:
[]
string
{
"openid"
,
"email"
},
Scopes
:
[]
string
{
"openid"
,
"email"
},
...
@@ -148,56 +183,95 @@ func testAuthCodeCRUD(t *testing.T, s storage.Storage) {
...
@@ -148,56 +183,95 @@ func testAuthCodeCRUD(t *testing.T, s storage.Storage) {
},
},
}
}
if
err
:=
s
.
CreateAuthCode
(
a
);
err
!=
nil
{
if
err
:=
s
.
CreateAuthCode
(
a
1
);
err
!=
nil
{
t
.
Fatalf
(
"failed creating auth code: %v"
,
err
)
t
.
Fatalf
(
"failed creating auth code: %v"
,
err
)
}
}
a2
:=
storage
.
AuthCode
{
ID
:
storage
.
NewID
(),
ClientID
:
"client2"
,
RedirectURI
:
"https://localhost:80/callback"
,
Nonce
:
"foobar"
,
Scopes
:
[]
string
{
"openid"
,
"email"
},
Expiry
:
neverExpire
,
ConnectorID
:
"ldap"
,
ConnectorData
:
[]
byte
(
`{"some":"data"}`
),
Claims
:
storage
.
Claims
{
UserID
:
"2"
,
Username
:
"john"
,
Email
:
"john.doe@example.com"
,
EmailVerified
:
true
,
Groups
:
[]
string
{
"a"
},
},
}
// Attempt to create same AuthCode twice.
// Attempt to create same AuthCode twice.
err
:=
s
.
CreateAuthCode
(
a
)
err
:=
s
.
CreateAuthCode
(
a
1
)
mustBeErrAlreadyExists
(
t
,
"auth code"
,
err
)
mustBeErrAlreadyExists
(
t
,
"auth code"
,
err
)
got
,
err
:=
s
.
GetAuthCode
(
a
.
ID
)
if
err
:=
s
.
CreateAuthCode
(
a2
);
err
!=
nil
{
t
.
Fatalf
(
"failed creating auth code: %v"
,
err
)
}
got
,
err
:=
s
.
GetAuthCode
(
a1
.
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"failed to get auth req: %v"
,
err
)
t
.
Fatalf
(
"failed to get auth req: %v"
,
err
)
}
}
if
a
.
Expiry
.
Unix
()
!=
got
.
Expiry
.
Unix
()
{
if
a
1
.
Expiry
.
Unix
()
!=
got
.
Expiry
.
Unix
()
{
t
.
Errorf
(
"auth code expiry did not match want=%s vs got=%s"
,
a
.
Expiry
,
got
.
Expiry
)
t
.
Errorf
(
"auth code expiry did not match want=%s vs got=%s"
,
a
1
.
Expiry
,
got
.
Expiry
)
}
}
got
.
Expiry
=
a
.
Expiry
// time fields do not compare well
got
.
Expiry
=
a
1
.
Expiry
// time fields do not compare well
if
diff
:=
pretty
.
Compare
(
a
,
got
);
diff
!=
""
{
if
diff
:=
pretty
.
Compare
(
a
1
,
got
);
diff
!=
""
{
t
.
Errorf
(
"auth code retrieved from storage did not match: %s"
,
diff
)
t
.
Errorf
(
"auth code retrieved from storage did not match: %s"
,
diff
)
}
}
if
err
:=
s
.
DeleteAuthCode
(
a
.
ID
);
err
!=
nil
{
if
err
:=
s
.
DeleteAuthCode
(
a1
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"delete auth code: %v"
,
err
)
}
if
err
:=
s
.
DeleteAuthCode
(
a2
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"delete auth code: %v"
,
err
)
t
.
Fatalf
(
"delete auth code: %v"
,
err
)
}
}
_
,
err
=
s
.
GetAuthCode
(
a
.
ID
)
_
,
err
=
s
.
GetAuthCode
(
a
1
.
ID
)
mustBeErrNotFound
(
t
,
"auth code"
,
err
)
mustBeErrNotFound
(
t
,
"auth code"
,
err
)
}
}
func
testClientCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
func
testClientCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
id
:=
storage
.
NewID
()
id
1
:=
storage
.
NewID
()
c
:=
storage
.
Client
{
c
1
:=
storage
.
Client
{
ID
:
id
,
ID
:
id
1
,
Secret
:
"foobar"
,
Secret
:
"foobar"
,
RedirectURIs
:
[]
string
{
"foo://bar.com/"
,
"https://auth.example.com"
},
RedirectURIs
:
[]
string
{
"foo://bar.com/"
,
"https://auth.example.com"
},
Name
:
"dex client"
,
Name
:
"dex client"
,
LogoURL
:
"https://goo.gl/JIyzIC"
,
LogoURL
:
"https://goo.gl/JIyzIC"
,
}
}
err
:=
s
.
DeleteClient
(
id
)
err
:=
s
.
DeleteClient
(
id
1
)
mustBeErrNotFound
(
t
,
"client"
,
err
)
mustBeErrNotFound
(
t
,
"client"
,
err
)
if
err
:=
s
.
CreateClient
(
c
);
err
!=
nil
{
if
err
:=
s
.
CreateClient
(
c
1
);
err
!=
nil
{
t
.
Fatalf
(
"create client: %v"
,
err
)
t
.
Fatalf
(
"create client: %v"
,
err
)
}
}
// Attempt to create same Client twice.
// Attempt to create same Client twice.
err
=
s
.
CreateClient
(
c
)
err
=
s
.
CreateClient
(
c
1
)
mustBeErrAlreadyExists
(
t
,
"client"
,
err
)
mustBeErrAlreadyExists
(
t
,
"client"
,
err
)
id2
:=
storage
.
NewID
()
c2
:=
storage
.
Client
{
ID
:
id2
,
Secret
:
"barfoo"
,
RedirectURIs
:
[]
string
{
"foo://bar.com/"
,
"https://auth.example.com"
},
Name
:
"dex client"
,
LogoURL
:
"https://goo.gl/JIyzIC"
,
}
if
err
:=
s
.
CreateClient
(
c2
);
err
!=
nil
{
t
.
Fatalf
(
"create client: %v"
,
err
)
}
getAndCompare
:=
func
(
id
string
,
want
storage
.
Client
)
{
getAndCompare
:=
func
(
id
string
,
want
storage
.
Client
)
{
gc
,
err
:=
s
.
GetClient
(
id
)
gc
,
err
:=
s
.
GetClient
(
id
1
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"get client: %v"
,
err
)
t
.
Errorf
(
"get client: %v"
,
err
)
return
return
...
@@ -207,24 +281,28 @@ func testClientCRUD(t *testing.T, s storage.Storage) {
...
@@ -207,24 +281,28 @@ func testClientCRUD(t *testing.T, s storage.Storage) {
}
}
}
}
getAndCompare
(
id
,
c
)
getAndCompare
(
id
1
,
c1
)
newSecret
:=
"barfoo"
newSecret
:=
"barfoo"
err
=
s
.
UpdateClient
(
id
,
func
(
old
storage
.
Client
)
(
storage
.
Client
,
error
)
{
err
=
s
.
UpdateClient
(
id
1
,
func
(
old
storage
.
Client
)
(
storage
.
Client
,
error
)
{
old
.
Secret
=
newSecret
old
.
Secret
=
newSecret
return
old
,
nil
return
old
,
nil
})
})
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"update client: %v"
,
err
)
t
.
Errorf
(
"update client: %v"
,
err
)
}
}
c
.
Secret
=
newSecret
c
1
.
Secret
=
newSecret
getAndCompare
(
id
,
c
)
getAndCompare
(
id
1
,
c1
)
if
err
:=
s
.
DeleteClient
(
id
);
err
!=
nil
{
if
err
:=
s
.
DeleteClient
(
id
1
);
err
!=
nil
{
t
.
Fatalf
(
"delete client: %v"
,
err
)
t
.
Fatalf
(
"delete client: %v"
,
err
)
}
}
_
,
err
=
s
.
GetClient
(
id
)
if
err
:=
s
.
DeleteClient
(
id2
);
err
!=
nil
{
t
.
Fatalf
(
"delete client: %v"
,
err
)
}
_
,
err
=
s
.
GetClient
(
id1
)
mustBeErrNotFound
(
t
,
"client"
,
err
)
mustBeErrNotFound
(
t
,
"client"
,
err
)
}
}
...
@@ -316,6 +394,10 @@ func testRefreshTokenCRUD(t *testing.T, s storage.Storage) {
...
@@ -316,6 +394,10 @@ func testRefreshTokenCRUD(t *testing.T, s storage.Storage) {
t
.
Fatalf
(
"failed to delete refresh request: %v"
,
err
)
t
.
Fatalf
(
"failed to delete refresh request: %v"
,
err
)
}
}
if
err
:=
s
.
DeleteRefresh
(
id2
);
err
!=
nil
{
t
.
Fatalf
(
"failed to delete refresh request: %v"
,
err
)
}
_
,
err
=
s
.
GetRefresh
(
id
)
_
,
err
=
s
.
GetRefresh
(
id
)
mustBeErrNotFound
(
t
,
"refresh token"
,
err
)
mustBeErrNotFound
(
t
,
"refresh token"
,
err
)
}
}
...
@@ -328,25 +410,40 @@ func (n byEmail) Swap(i, j int) { n[i], n[j] = n[j], n[i] }
...
@@ -328,25 +410,40 @@ func (n byEmail) Swap(i, j int) { n[i], n[j] = n[j], n[i] }
func
testPasswordCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
func
testPasswordCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
// Use bcrypt.MinCost to keep the tests short.
// Use bcrypt.MinCost to keep the tests short.
passwordHash
,
err
:=
bcrypt
.
GenerateFromPassword
([]
byte
(
"secret"
),
bcrypt
.
MinCost
)
passwordHash
1
,
err
:=
bcrypt
.
GenerateFromPassword
([]
byte
(
"secret"
),
bcrypt
.
MinCost
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
password
:=
storage
.
Password
{
password
1
:=
storage
.
Password
{
Email
:
"jane@example.com"
,
Email
:
"jane@example.com"
,
Hash
:
passwordHash
,
Hash
:
passwordHash
1
,
Username
:
"jane"
,
Username
:
"jane"
,
UserID
:
"foobar"
,
UserID
:
"foobar"
,
}
}
if
err
:=
s
.
CreatePassword
(
password
);
err
!=
nil
{
if
err
:=
s
.
CreatePassword
(
password
1
);
err
!=
nil
{
t
.
Fatalf
(
"create password token: %v"
,
err
)
t
.
Fatalf
(
"create password token: %v"
,
err
)
}
}
// Attempt to create same Password twice.
// Attempt to create same Password twice.
err
=
s
.
CreatePassword
(
password
)
err
=
s
.
CreatePassword
(
password
1
)
mustBeErrAlreadyExists
(
t
,
"password"
,
err
)
mustBeErrAlreadyExists
(
t
,
"password"
,
err
)
passwordHash2
,
err
:=
bcrypt
.
GenerateFromPassword
([]
byte
(
"password"
),
bcrypt
.
MinCost
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
password2
:=
storage
.
Password
{
Email
:
"john@example.com"
,
Hash
:
passwordHash2
,
Username
:
"john"
,
UserID
:
"barfoo"
,
}
if
err
:=
s
.
CreatePassword
(
password2
);
err
!=
nil
{
t
.
Fatalf
(
"create password token: %v"
,
err
)
}
getAndCompare
:=
func
(
id
string
,
want
storage
.
Password
)
{
getAndCompare
:=
func
(
id
string
,
want
storage
.
Password
)
{
gr
,
err
:=
s
.
GetPassword
(
id
)
gr
,
err
:=
s
.
GetPassword
(
id
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -358,21 +455,21 @@ func testPasswordCRUD(t *testing.T, s storage.Storage) {
...
@@ -358,21 +455,21 @@ func testPasswordCRUD(t *testing.T, s storage.Storage) {
}
}
}
}
getAndCompare
(
"jane@example.com"
,
password
)
getAndCompare
(
"jane@example.com"
,
password
1
)
getAndCompare
(
"JANE@example.com"
,
password
)
// Emails should be case insensitive
getAndCompare
(
"JANE@example.com"
,
password
1
)
// Emails should be case insensitive
if
err
:=
s
.
UpdatePassword
(
password
.
Email
,
func
(
old
storage
.
Password
)
(
storage
.
Password
,
error
)
{
if
err
:=
s
.
UpdatePassword
(
password
1
.
Email
,
func
(
old
storage
.
Password
)
(
storage
.
Password
,
error
)
{
old
.
Username
=
"jane doe"
old
.
Username
=
"jane doe"
return
old
,
nil
return
old
,
nil
});
err
!=
nil
{
});
err
!=
nil
{
t
.
Fatalf
(
"failed to update auth request: %v"
,
err
)
t
.
Fatalf
(
"failed to update auth request: %v"
,
err
)
}
}
password
.
Username
=
"jane doe"
password
1
.
Username
=
"jane doe"
getAndCompare
(
"jane@example.com"
,
password
)
getAndCompare
(
"jane@example.com"
,
password
1
)
var
passwordList
[]
storage
.
Password
var
passwordList
[]
storage
.
Password
passwordList
=
append
(
passwordList
,
password
)
passwordList
=
append
(
passwordList
,
password
1
,
password2
)
listAndCompare
:=
func
(
want
[]
storage
.
Password
)
{
listAndCompare
:=
func
(
want
[]
storage
.
Password
)
{
passwords
,
err
:=
s
.
ListPasswords
()
passwords
,
err
:=
s
.
ListPasswords
()
...
@@ -389,32 +486,48 @@ func testPasswordCRUD(t *testing.T, s storage.Storage) {
...
@@ -389,32 +486,48 @@ func testPasswordCRUD(t *testing.T, s storage.Storage) {
listAndCompare
(
passwordList
)
listAndCompare
(
passwordList
)
if
err
:=
s
.
DeletePassword
(
password
.
Email
);
err
!=
nil
{
if
err
:=
s
.
DeletePassword
(
password1
.
Email
);
err
!=
nil
{
t
.
Fatalf
(
"failed to delete password: %v"
,
err
)
}
if
err
:=
s
.
DeletePassword
(
password2
.
Email
);
err
!=
nil
{
t
.
Fatalf
(
"failed to delete password: %v"
,
err
)
t
.
Fatalf
(
"failed to delete password: %v"
,
err
)
}
}
_
,
err
=
s
.
GetPassword
(
password
.
Email
)
_
,
err
=
s
.
GetPassword
(
password
1
.
Email
)
mustBeErrNotFound
(
t
,
"password"
,
err
)
mustBeErrNotFound
(
t
,
"password"
,
err
)
}
}
func
testOfflineSessionCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
func
testOfflineSessionCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
session
:=
storage
.
OfflineSessions
{
userID1
:=
storage
.
NewID
()
UserID
:
"User"
,
session1
:=
storage
.
OfflineSessions
{
ConnID
:
"Conn"
,
UserID
:
userID1
,
ConnID
:
"Conn1"
,
Refresh
:
make
(
map
[
string
]
*
storage
.
RefreshTokenRef
),
Refresh
:
make
(
map
[
string
]
*
storage
.
RefreshTokenRef
),
}
}
// Creating an OfflineSession with an empty Refresh list to ensure that
// Creating an OfflineSession with an empty Refresh list to ensure that
// an empty map is translated as expected by the storage.
// an empty map is translated as expected by the storage.
if
err
:=
s
.
CreateOfflineSessions
(
session
);
err
!=
nil
{
if
err
:=
s
.
CreateOfflineSessions
(
session
1
);
err
!=
nil
{
t
.
Fatalf
(
"create offline session
: %v"
,
err
)
t
.
Fatalf
(
"create offline session
with UserID = %s: %v"
,
session1
.
UserID
,
err
)
}
}
// Attempt to create same OfflineSession twice.
// Attempt to create same OfflineSession twice.
err
:=
s
.
CreateOfflineSessions
(
session
)
err
:=
s
.
CreateOfflineSessions
(
session
1
)
mustBeErrAlreadyExists
(
t
,
"offline session"
,
err
)
mustBeErrAlreadyExists
(
t
,
"offline session"
,
err
)
userID2
:=
storage
.
NewID
()
session2
:=
storage
.
OfflineSessions
{
UserID
:
userID2
,
ConnID
:
"Conn2"
,
Refresh
:
make
(
map
[
string
]
*
storage
.
RefreshTokenRef
),
}
if
err
:=
s
.
CreateOfflineSessions
(
session2
);
err
!=
nil
{
t
.
Fatalf
(
"create offline session with UserID = %s: %v"
,
session2
.
UserID
,
err
)
}
getAndCompare
:=
func
(
userID
string
,
connID
string
,
want
storage
.
OfflineSessions
)
{
getAndCompare
:=
func
(
userID
string
,
connID
string
,
want
storage
.
OfflineSessions
)
{
gr
,
err
:=
s
.
GetOfflineSessions
(
userID
,
connID
)
gr
,
err
:=
s
.
GetOfflineSessions
(
userID
,
connID
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -426,7 +539,7 @@ func testOfflineSessionCRUD(t *testing.T, s storage.Storage) {
...
@@ -426,7 +539,7 @@ func testOfflineSessionCRUD(t *testing.T, s storage.Storage) {
}
}
}
}
getAndCompare
(
"User"
,
"Conn"
,
session
)
getAndCompare
(
userID1
,
"Conn1"
,
session1
)
id
:=
storage
.
NewID
()
id
:=
storage
.
NewID
()
tokenRef
:=
storage
.
RefreshTokenRef
{
tokenRef
:=
storage
.
RefreshTokenRef
{
...
@@ -435,24 +548,27 @@ func testOfflineSessionCRUD(t *testing.T, s storage.Storage) {
...
@@ -435,24 +548,27 @@ func testOfflineSessionCRUD(t *testing.T, s storage.Storage) {
CreatedAt
:
time
.
Now
()
.
UTC
()
.
Round
(
time
.
Millisecond
),
CreatedAt
:
time
.
Now
()
.
UTC
()
.
Round
(
time
.
Millisecond
),
LastUsed
:
time
.
Now
()
.
UTC
()
.
Round
(
time
.
Millisecond
),
LastUsed
:
time
.
Now
()
.
UTC
()
.
Round
(
time
.
Millisecond
),
}
}
session
.
Refresh
[
tokenRef
.
ClientID
]
=
&
tokenRef
session
1
.
Refresh
[
tokenRef
.
ClientID
]
=
&
tokenRef
if
err
:=
s
.
UpdateOfflineSessions
(
session
.
UserID
,
session
.
ConnID
,
func
(
old
storage
.
OfflineSessions
)
(
storage
.
OfflineSessions
,
error
)
{
if
err
:=
s
.
UpdateOfflineSessions
(
session
1
.
UserID
,
session1
.
ConnID
,
func
(
old
storage
.
OfflineSessions
)
(
storage
.
OfflineSessions
,
error
)
{
old
.
Refresh
[
tokenRef
.
ClientID
]
=
&
tokenRef
old
.
Refresh
[
tokenRef
.
ClientID
]
=
&
tokenRef
return
old
,
nil
return
old
,
nil
});
err
!=
nil
{
});
err
!=
nil
{
t
.
Fatalf
(
"failed to update offline session: %v"
,
err
)
t
.
Fatalf
(
"failed to update offline session: %v"
,
err
)
}
}
getAndCompare
(
"User"
,
"Conn"
,
session
)
getAndCompare
(
userID1
,
"Conn1"
,
session1
)
if
err
:=
s
.
DeleteOfflineSessions
(
session
.
UserID
,
session
.
ConnID
);
err
!=
nil
{
if
err
:=
s
.
DeleteOfflineSessions
(
session
1
.
UserID
,
session1
.
ConnID
);
err
!=
nil
{
t
.
Fatalf
(
"failed to delete offline session: %v"
,
err
)
t
.
Fatalf
(
"failed to delete offline session: %v"
,
err
)
}
}
_
,
err
=
s
.
GetOfflineSessions
(
session
.
UserID
,
session
.
ConnID
)
if
err
:=
s
.
DeleteOfflineSessions
(
session2
.
UserID
,
session2
.
ConnID
);
err
!=
nil
{
mustBeErrNotFound
(
t
,
"offline session"
,
err
)
t
.
Fatalf
(
"failed to delete offline session: %v"
,
err
)
}
_
,
err
=
s
.
GetOfflineSessions
(
session1
.
UserID
,
session1
.
ConnID
)
mustBeErrNotFound
(
t
,
"offline session"
,
err
)
}
}
func
testKeysCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
func
testKeysCRUD
(
t
*
testing
.
T
,
s
storage
.
Storage
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment