snapshot of https://github.com/ory/kratos.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
This commit is contained in:
157
corpx/faker.go
Normal file
157
corpx/faker.go
Normal file
@@ -0,0 +1,157 @@
|
||||
// Copyright © 2023 Ory Corp
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// #nosec G404 -- used in tests only
|
||||
package corpx
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/go-faker/faker/v4"
|
||||
|
||||
"github.com/ory/kratos/identity"
|
||||
"github.com/ory/kratos/selfservice/flow"
|
||||
"github.com/ory/kratos/session"
|
||||
"github.com/ory/kratos/ui/node"
|
||||
"github.com/ory/kratos/x"
|
||||
"github.com/ory/x/randx"
|
||||
)
|
||||
|
||||
var setup sync.Once
|
||||
|
||||
func RegisterFakes() {
|
||||
setup.Do(registerFakes)
|
||||
}
|
||||
|
||||
func registerFakes() {
|
||||
_ = faker.SetRandomMapAndSliceSize(4)
|
||||
|
||||
if err := faker.AddProvider("ptr_geo_location", func(v reflect.Value) (interface{}, error) {
|
||||
return new("Munich, Germany"), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("ptr_ipv4", func(v reflect.Value) (interface{}, error) {
|
||||
return new(faker.IPv4()), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("birthdate", func(v reflect.Value) (interface{}, error) {
|
||||
return time.Now().Add(time.Duration(rand.Int())).Round(time.Second).UTC(), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("time_types", func(v reflect.Value) (interface{}, error) {
|
||||
es := make([]time.Time, rand.Intn(5))
|
||||
for k := range es {
|
||||
es[k] = time.Now().Add(time.Duration(rand.Int())).Round(time.Second).UTC()
|
||||
}
|
||||
return es, nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("http_header", func(v reflect.Value) (interface{}, error) {
|
||||
headers := http.Header{}
|
||||
for i := 0; i <= rand.Intn(5); i++ {
|
||||
values := make([]string, rand.Intn(4)+1)
|
||||
for k := range values {
|
||||
values[k] = randx.MustString(8, randx.AlphaNum)
|
||||
}
|
||||
headers[randx.MustString(8, randx.AlphaNum)] = values
|
||||
}
|
||||
|
||||
return headers, nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("http_method", func(v reflect.Value) (interface{}, error) {
|
||||
methods := []string{"POST", "PUT", "GET", "PATCH"}
|
||||
return methods[rand.Intn(len(methods))], nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("identity_credentials_type", func(v reflect.Value) (interface{}, error) {
|
||||
methods := []identity.CredentialsType{identity.CredentialsTypePassword, identity.CredentialsTypePassword}
|
||||
return string(methods[rand.Intn(len(methods))]), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("string", func(v reflect.Value) (interface{}, error) {
|
||||
return randx.MustString(25, randx.AlphaNum), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("time_type", func(v reflect.Value) (interface{}, error) {
|
||||
return time.Now().Add(time.Duration(rand.Int())).Round(time.Second).UTC(), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("ui_node_attributes", func(v reflect.Value) (interface{}, error) {
|
||||
var a node.Attributes
|
||||
switch rand.Intn(4) {
|
||||
case 0:
|
||||
a = new(node.InputAttributes)
|
||||
case 1:
|
||||
a = new(node.ImageAttributes)
|
||||
case 2:
|
||||
a = new(node.AnchorAttributes)
|
||||
case 3:
|
||||
a = new(node.TextAttributes)
|
||||
}
|
||||
|
||||
if err := faker.FakeData(a); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a, nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("uuid", func(v reflect.Value) (interface{}, error) {
|
||||
return x.NewUUID(), nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("identity", func(v reflect.Value) (interface{}, error) {
|
||||
var i identity.Identity
|
||||
return &i, faker.FakeData(&i)
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("flow_type", func(v reflect.Value) (interface{}, error) {
|
||||
if rand.Intn(2) == 0 {
|
||||
return flow.TypeAPI, nil
|
||||
}
|
||||
return flow.TypeBrowser, nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("session_device", func(v reflect.Value) (interface{}, error) {
|
||||
var d session.Device
|
||||
return &d, faker.FakeData(&d)
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err := faker.AddProvider("aal_type", func(v reflect.Value) (interface{}, error) {
|
||||
return "aal1", nil
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user