github.com/lino-network/lino@v0.6.11/types/common_test.go (about)

     1  package types
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/tendermint/tendermint/crypto/secp256k1"
     8  )
     9  
    10  func TestIsUsername(t *testing.T) {
    11  	testCases := map[string]struct {
    12  		accountKeys []AccountKey
    13  		expectRes   bool
    14  	}{
    15  		"username is too short": {
    16  			accountKeys: []AccountKey{"us"},
    17  			expectRes:   false,
    18  		},
    19  		"username is too long": {
    20  			accountKeys: []AccountKey{"useruseruseruseruseru"},
    21  			expectRes:   false,
    22  		},
    23  		"invalid characters": {
    24  			accountKeys: []AccountKey{"register#", "_register", "-register", "reg@ister", "re--gister",
    25  				"reg*ister", "register!", "register()", "reg$ister", "reg ister", " register", "re_-gister",
    26  				"reg=ister", "register^", "register.", "reg$ister,", "Register", "r__egister", "reGister",
    27  				"r_--gister", "re.-gister", ".re-gister", "re-gister.", "register_", "register-", "a.2.2.-.-..2",
    28  				".register", "register..", "_.register", "123123", "reg--ster", "reg$ster", "re%gister", "regist\"er",
    29  				"reg?ster", "reg:ster", "regi<ster", "regi>ster", "reg{ster", "regi}ster", "reg'ster", "reg`ster"},
    30  			expectRes: false,
    31  		},
    32  		"address": {
    33  			accountKeys: []AccountKey{AccountKey(secp256k1.GenPrivKey().PubKey().Address())},
    34  			expectRes:   false,
    35  		},
    36  		"valid username": {
    37  			accountKeys: []AccountKey{"register", "re.gister", "re-gister", "reg", "registerregisterregi"},
    38  			expectRes:   true,
    39  		},
    40  	}
    41  
    42  	for testName, tc := range testCases {
    43  		for _, accKey := range tc.accountKeys {
    44  			res := accKey.IsValid()
    45  			assert.Equal(t, tc.expectRes, res, "%s", testName)
    46  		}
    47  	}
    48  }