76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package models
|
|
|
|
import "encoding/json"
|
|
import "testing"
|
|
|
|
func TestUserJSONTags(t *testing.T) {
|
|
var u User
|
|
var data []byte
|
|
var err error
|
|
var decoded map[string]interface{}
|
|
u = User{
|
|
ID: "u1",
|
|
Username: "alice",
|
|
DisplayName: "Alice",
|
|
Email: "a@x",
|
|
IsAdmin: true,
|
|
Disabled: true,
|
|
AuthSource: "db",
|
|
CreatedAt: 1,
|
|
UpdatedAt: 2,
|
|
}
|
|
data, err = json.Marshal(u)
|
|
if err != nil {
|
|
t.Fatalf("json marshal error: %v", err)
|
|
}
|
|
decoded = map[string]interface{}{}
|
|
err = json.Unmarshal(data, &decoded)
|
|
if err != nil {
|
|
t.Fatalf("json unmarshal error: %v", err)
|
|
}
|
|
if _, ok := decoded["display_name"]; !ok {
|
|
t.Fatalf("missing display_name json key")
|
|
}
|
|
if _, ok := decoded["is_admin"]; !ok {
|
|
t.Fatalf("missing is_admin json key")
|
|
}
|
|
if _, ok := decoded["disabled"]; !ok {
|
|
t.Fatalf("missing disabled json key")
|
|
}
|
|
}
|
|
|
|
func TestAPIKeyJSONTags(t *testing.T) {
|
|
var k APIKey
|
|
var data []byte
|
|
var err error
|
|
var decoded map[string]interface{}
|
|
k = APIKey{
|
|
ID: "k1",
|
|
UserID: "u1",
|
|
Name: "n",
|
|
Prefix: "pre",
|
|
CreatedAt: 10,
|
|
LastUsedAt: 11,
|
|
ExpiresAt: 12,
|
|
Disabled: true,
|
|
}
|
|
data, err = json.Marshal(k)
|
|
if err != nil {
|
|
t.Fatalf("json marshal error: %v", err)
|
|
}
|
|
decoded = map[string]interface{}{}
|
|
err = json.Unmarshal(data, &decoded)
|
|
if err != nil {
|
|
t.Fatalf("json unmarshal error: %v", err)
|
|
}
|
|
if _, ok := decoded["expires_at"]; !ok {
|
|
t.Fatalf("missing expires_at json key")
|
|
}
|
|
if _, ok := decoded["last_used_at"]; !ok {
|
|
t.Fatalf("missing last_used_at json key")
|
|
}
|
|
if _, ok := decoded["disabled"]; !ok {
|
|
t.Fatalf("missing disabled json key")
|
|
}
|
|
}
|