44 "testing"
55
66 "github.com/stretchr/testify/assert"
7+ "github.com/supertokens/supertokens-golang/recipe/usermetadata"
78 "github.com/supertokens/supertokens-golang/supertokens"
89 "github.com/supertokens/supertokens-golang/test/unittesting"
910)
@@ -19,7 +20,10 @@ func initForUserIdMappingTest(t *testing.T) {
1920 AppName : "SuperTokens" ,
2021 WebsiteDomain : "supertokens.io" ,
2122 },
22- RecipeList : []supertokens.Recipe {Init (nil )},
23+ RecipeList : []supertokens.Recipe {
24+ Init (nil ),
25+ usermetadata .Init (nil ),
26+ },
2327 }
2428
2529 err := supertokens .Init (config )
@@ -153,3 +157,48 @@ func TestCreateUserIdMappingWhenAlreadyExists(t *testing.T) {
153157 assert .False (t , createResp .UserIdMappingAlreadyExistsError .DoesSuperTokensUserIdExist )
154158 }
155159}
160+
161+ func TestCreateUserIdMappingWithMetadataAndWithAndWithoutForce (t * testing.T ) {
162+ BeforeEach ()
163+ unittesting .StartUpST ("localhost" , "8080" )
164+ defer AfterEach ()
165+
166+ initForUserIdMappingTest (t )
167+
168+ querier , err := supertokens .GetNewQuerierInstanceOrThrowError ("" )
169+ assert .NoError (t , err )
170+
171+ cdiVersion , err := querier .GetQuerierAPIVersion ()
172+ assert .NoError (t , err )
173+
174+ if unittesting .MaxVersion (cdiVersion , "2.14" ) != cdiVersion {
175+ return
176+ }
177+
178+ signUpResponse , err := SignUp ("test@example.com" , "testpass123" )
179+ assert .NoError (t , err )
180+
181+ assert .NotNil (t , signUpResponse .OK )
182+
183+ userMetadata := map [string ]interface {}{
184+ "role" : "admin" ,
185+ }
186+ metadataResp , err := usermetadata .UpdateUserMetadata (signUpResponse .OK .User .ID , userMetadata )
187+ assert .NoError (t , err )
188+ assert .NotNil (t , metadataResp )
189+ { // without force
190+ externalUserId := "externalId"
191+ externalUserIdInfo := "externalIdInfo"
192+ createResp , err := supertokens .CreateUserIdMapping (signUpResponse .OK .User .ID , externalUserId , & externalUserIdInfo , false )
193+ assert .Contains (t , err .Error (), "UserId is already in use in UserMetadata recipe" )
194+ assert .Nil (t , createResp .OK )
195+ }
196+
197+ { // without force
198+ externalUserId := "externalId"
199+ externalUserIdInfo := "externalIdInfo"
200+ createResp , err := supertokens .CreateUserIdMapping (signUpResponse .OK .User .ID , externalUserId , & externalUserIdInfo , true )
201+ assert .NoError (t , err )
202+ assert .NotNil (t , createResp .OK )
203+ }
204+ }
0 commit comments