MCPcopy
hub / github.com/tinyauthapp/tinyauth / TestParseUser

Function TestParseUser

internal/utils/user_utils_test.go:106–164  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

104}
105
106func TestParseUser(t *testing.T) {
107 // Valid user without TOTP
108 user, err := utils.ParseUser("user1:$2a$10$Mz5xhkfSJUtPWkzCd/TdaePh9CaXc5QcGII5wIMPLSR46eTwma30G")
109
110 assert.NilError(t, err)
111
112 assert.Equal(t, "user1", user.Username)
113 assert.Equal(t, "$2a$10$Mz5xhkfSJUtPWkzCd/TdaePh9CaXc5QcGII5wIMPLSR46eTwma30G", user.Password)
114 assert.Equal(t, "", user.TotpSecret)
115
116 // Valid user with TOTP
117 user, err = utils.ParseUser("user2:$2a$10$Mz5xhkfSJUtPWkzCd/TdaePh9CaXc5QcGII5wIMPLSR46eTwma30G:ABCDEF")
118
119 assert.NilError(t, err)
120
121 assert.Equal(t, "user2", user.Username)
122 assert.Equal(t, "$2a$10$Mz5xhkfSJUtPWkzCd/TdaePh9CaXc5QcGII5wIMPLSR46eTwma30G", user.Password)
123 assert.Equal(t, "ABCDEF", user.TotpSecret)
124
125 // Valid user with $$ in password
126 user, err = utils.ParseUser("user3:pa$$word123")
127
128 assert.NilError(t, err)
129
130 assert.Equal(t, "user3", user.Username)
131 assert.Equal(t, "pa$word123", user.Password)
132 assert.Equal(t, "", user.TotpSecret)
133
134 // User with spaces
135 user, err = utils.ParseUser(" user4 : password123 : TOTPSECRET ")
136
137 assert.NilError(t, err)
138
139 assert.Equal(t, "user4", user.Username)
140 assert.Equal(t, "password123", user.Password)
141 assert.Equal(t, "TOTPSECRET", user.TotpSecret)
142
143 // Invalid users
144 _, err = utils.ParseUser("user1") // Missing password
145 assert.ErrorContains(t, err, "invalid user format")
146
147 _, err = utils.ParseUser("user1:")
148 assert.ErrorContains(t, err, "invalid user format")
149
150 _, err = utils.ParseUser(":password123")
151 assert.ErrorContains(t, err, "invalid user format")
152
153 _, err = utils.ParseUser("user1:password123:ABC:EXTRA") // Too many parts
154 assert.ErrorContains(t, err, "invalid user format")
155
156 _, err = utils.ParseUser("user1::ABC")
157 assert.ErrorContains(t, err, "invalid user format")
158
159 _, err = utils.ParseUser(":password123:ABC")
160 assert.ErrorContains(t, err, "invalid user format")
161
162 _, err = utils.ParseUser(" : : ")
163 assert.ErrorContains(t, err, "invalid user format")

Callers

nothing calls this directly

Calls 1

ParseUserFunction · 0.92

Tested by

no test coverage detected