chore: Make example/server usable for tests (#205)
* internal -> storage; split users into an interface * move example/server/*.go to example/server/exampleop/ * export all User fields * storage -> Storage * example server now passes tests
This commit is contained in:
parent
62daf4cc42
commit
749c30491b
11 changed files with 860 additions and 753 deletions
71
example/server/storage/user.go
Normal file
71
example/server/storage/user.go
Normal file
|
@ -0,0 +1,71 @@
|
|||
package storage
|
||||
|
||||
import (
|
||||
"crypto/rsa"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID string
|
||||
Username string
|
||||
Password string
|
||||
FirstName string
|
||||
LastName string
|
||||
Email string
|
||||
EmailVerified bool
|
||||
Phone string
|
||||
PhoneVerified bool
|
||||
PreferredLanguage language.Tag
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
keys map[string]*rsa.PublicKey
|
||||
}
|
||||
|
||||
type UserStore interface {
|
||||
GetUserByID(string) *User
|
||||
GetUserByUsername(string) *User
|
||||
ExampleClientID() string
|
||||
}
|
||||
|
||||
type userStore struct {
|
||||
users map[string]*User
|
||||
}
|
||||
|
||||
func NewUserStore() UserStore {
|
||||
return userStore{
|
||||
users: map[string]*User{
|
||||
"id1": {
|
||||
ID: "id1",
|
||||
Username: "test-user",
|
||||
Password: "verysecure",
|
||||
FirstName: "Test",
|
||||
LastName: "User",
|
||||
Email: "test-user@zitadel.ch",
|
||||
EmailVerified: true,
|
||||
Phone: "",
|
||||
PhoneVerified: false,
|
||||
PreferredLanguage: language.German,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// ExampleClientID is only used in the example server
|
||||
func (u userStore) ExampleClientID() string {
|
||||
return "service"
|
||||
}
|
||||
|
||||
func (u userStore) GetUserByID(id string) *User {
|
||||
return u.users[id]
|
||||
}
|
||||
|
||||
func (u userStore) GetUserByUsername(username string) *User {
|
||||
for _, user := range u.users {
|
||||
if user.Username == username {
|
||||
return user
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue