Skip to content

Commit

Permalink
feat: added fake jwt-token support (bxcodec#113)
Browse files Browse the repository at this point in the history
* added fake jwt-token support

* -test hello stub

Co-authored-by: o.musin <o.musin@tinkoff.ru>
  • Loading branch information
Oleg and o.musin committed Jun 26, 2020
1 parent 02fc1b2 commit 5a7150e
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 1 deletion.
2 changes: 2 additions & 0 deletions example_with_tags_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ type SomeStructWithTags struct {
IPV4 string `faker:"ipv4"`
IPV6 string `faker:"ipv6"`
Password string `faker:"password"`
Jwt string `faker:"jwt"`
PhoneNumber string `faker:"phone_number"`
MacAddress string `faker:"mac_address"`
URL string `faker:"url"`
Expand Down Expand Up @@ -85,6 +86,7 @@ func Example_withTags() {
IPV4: 99.23.42.63
IPV6: 975c:fb2c:2133:fbdd:beda:282e:1e0a:ec7d
Password: dfJdyHGuVkHBgnHLQQgpINApynzexnRpgIKBpiIjpTPOmNyMFb
Jwt: HDMNSOKhEIYkPIuHcVjfCtHlKkaqLGrUEqjKVkgR.HDMNSOKhEIYkPIuHcVjfCtHlKkaqLGrUEqjKVkgR.HDMNSOKhEIYkPIuHcVjfCtHlKkaqLGrUEqjKVkgR
PhoneNumber: 792-153-4861
MacAddress: cd:65:e1:d4:76:c6
URL: https://www.oEuqqAY.org/QgqfOhd
Expand Down
3 changes: 3 additions & 0 deletions faker.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ const (
IPV4Tag = "ipv4"
IPV6Tag = "ipv6"
PASSWORD = "password"
JWT = "jwt"
LATITUDE = "lat"
LONGITUDE = "long"
CreditCardNumber = "cc_number"
Expand Down Expand Up @@ -133,6 +134,7 @@ var defaultTag = map[string]string{
IPV4Tag: IPV4Tag,
IPV6Tag: IPV6Tag,
PASSWORD: PASSWORD,
JWT: JWT,
CreditCardType: CreditCardType,
CreditCardNumber: CreditCardNumber,
LATITUDE: LATITUDE,
Expand Down Expand Up @@ -182,6 +184,7 @@ var mapperTag = map[string]TaggedFunction{
IPV4Tag: GetNetworker().IPv4,
IPV6Tag: GetNetworker().IPv6,
PASSWORD: GetNetworker().Password,
JWT: GetNetworker().Jwt,
CreditCardType: GetPayment().CreditCardType,
CreditCardNumber: GetPayment().CreditCardNumber,
LATITUDE: GetAddress().Latitude,
Expand Down
4 changes: 3 additions & 1 deletion faker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ type TaggedStruct struct {
IPV4 string `faker:"ipv4"`
IPV6 string `faker:"ipv6"`
Password string `faker:"password"`
Jwt string `faker:"jwt"`
PhoneNumber string `faker:"phone_number"`
MacAddress string `faker:"mac_address"`
URL string `faker:"url"`
Expand Down Expand Up @@ -249,6 +250,7 @@ func (t TaggedStruct) String() string {
IPV4: %s,
IPV6: %s,
Password: %s,
Jwt: %s,
PhoneNumber: %s,
MacAddress: %s,
URL: %s,
Expand Down Expand Up @@ -283,7 +285,7 @@ func (t TaggedStruct) String() string {
ID: %s,
}`, t.Latitude, t.Longitude, t.CreditCardNumber,
t.CreditCardType, t.Email, t.DomainName, t.IPV4,
t.IPV6, t.Password, t.PhoneNumber, t.MacAddress,
t.IPV6, t.Password, t.Jwt, t.PhoneNumber, t.MacAddress,
t.URL, t.UserName, t.TollFreeNumber,
t.E164PhoneNumber, t.TitleMale, t.TitleFemale,
t.FirstName, t.FirstNameMale, t.FirstNameFemale, t.LastName,
Expand Down
27 changes: 27 additions & 0 deletions internet.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ type Networker interface {
IPv4(v reflect.Value) (interface{}, error)
IPv6(v reflect.Value) (interface{}, error)
Password(v reflect.Value) (interface{}, error)
Jwt(v reflect.Value) (interface{}, error)
}

// Internet struct
Expand Down Expand Up @@ -250,3 +251,29 @@ func Password() string {
return p
}).(string)
}

func (internet Internet) jwt() (string, error) {
element, err := randomString(40, &LangENG)
sl := element[:]
if err != nil {
return "", err
}
return strings.Join([]string{sl, sl, sl}, "."), nil
}

// Jwt returns a jwt-like random string in xxxx.yyyy.zzzz style
func (internet Internet) Jwt(v reflect.Value) (interface{}, error) {
return internet.jwt()
}

// Jwt get jwt-like string
func Jwt() string {
return singleFakeData(JWT, func() interface{} {
i := Internet{}
p, err := i.jwt()
if err != nil {
panic(err.Error())
}
return p
}).(string)
}
9 changes: 9 additions & 0 deletions internet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package faker

import (
"reflect"
"regexp"
"strings"
"testing"

Expand Down Expand Up @@ -157,3 +158,11 @@ func TestFakePassword(t *testing.T) {
t.Error("Expected hash password")
}
}

func TestFakeJWT(t *testing.T) {
jwt := Jwt()
reg := regexp.MustCompile(`[a-zA-Z]+.[a-zA-Z]+.[a-zA-Z]+`)
if !reg.MatchString(jwt) {
t.Error("Invalid format on JWT token")
}
}

0 comments on commit 5a7150e

Please sign in to comment.