Skip to content

Commit b784cfd

Browse files
committed
feat: userid mapping functions impl
1 parent b169960 commit b784cfd

File tree

6 files changed

+687
-2
lines changed

6 files changed

+687
-2
lines changed

coreDriverInterfaceSupported.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"2.11",
88
"2.12",
99
"2.13",
10-
"2.14"
10+
"2.14",
11+
"2.15"
1112
]
1213
}
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
package emailpassword
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
"github.com/supertokens/supertokens-golang/supertokens"
8+
"github.com/supertokens/supertokens-golang/test/unittesting"
9+
)
10+
11+
func initForUserIdMappingTest(t *testing.T) {
12+
13+
config := supertokens.TypeInput{
14+
Supertokens: &supertokens.ConnectionInfo{
15+
ConnectionURI: "http://localhost:8080",
16+
},
17+
AppInfo: supertokens.AppInfo{
18+
APIDomain: "api.supertokens.io",
19+
AppName: "SuperTokens",
20+
WebsiteDomain: "supertokens.io",
21+
},
22+
RecipeList: []supertokens.Recipe{Init(nil)},
23+
}
24+
25+
err := supertokens.Init(config)
26+
assert.NoError(t, err)
27+
}
28+
29+
func TestCreateUserIdMapping(t *testing.T) {
30+
BeforeEach()
31+
unittesting.StartUpST("localhost", "8080")
32+
defer AfterEach()
33+
34+
initForUserIdMappingTest(t)
35+
36+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
37+
assert.NoError(t, err)
38+
39+
cdiVersion, err := querier.GetQuerierAPIVersion()
40+
assert.NoError(t, err)
41+
42+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
43+
return
44+
}
45+
46+
signUpResponse, err := SignUp("test@example.com", "testpass123")
47+
assert.NoError(t, err)
48+
49+
assert.NotNil(t, signUpResponse.OK)
50+
51+
externalUserId := "externalId"
52+
externalUserIdInfo := "externalIdInfo"
53+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
54+
assert.NoError(t, err)
55+
assert.NotNil(t, createResp.OK)
56+
57+
getResp, err := supertokens.GetUserIdMapping(signUpResponse.OK.User.ID, "SUPERTOKENS")
58+
assert.NoError(t, err)
59+
assert.NotNil(t, getResp.OK)
60+
assert.Equal(t, signUpResponse.OK.User.ID, getResp.OK.SupertokensUserId)
61+
assert.Equal(t, externalUserId, getResp.OK.ExternalUserId)
62+
assert.Equal(t, externalUserIdInfo, *getResp.OK.ExternalUserIdInfo)
63+
}
64+
65+
func TestCreateUserIdMappingWithUnknownSupertokensUserId(t *testing.T) {
66+
BeforeEach()
67+
unittesting.StartUpST("localhost", "8080")
68+
defer AfterEach()
69+
70+
initForUserIdMappingTest(t)
71+
72+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
73+
assert.NoError(t, err)
74+
75+
cdiVersion, err := querier.GetQuerierAPIVersion()
76+
assert.NoError(t, err)
77+
78+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
79+
return
80+
}
81+
82+
supertokensUserId := "unknownUserId"
83+
externalUserId := "externalId"
84+
externalUserIdInfo := "externalIdInfo"
85+
86+
createResp, err := supertokens.CreateUserIdMapping(supertokensUserId, externalUserId, &externalUserIdInfo, false)
87+
assert.NoError(t, err)
88+
assert.NotNil(t, createResp.UnknownSupertokensUserIdError)
89+
}
90+
91+
func TestCreateUserIdMappingWhenAlreadyExists(t *testing.T) {
92+
BeforeEach()
93+
unittesting.StartUpST("localhost", "8080")
94+
defer AfterEach()
95+
96+
initForUserIdMappingTest(t)
97+
98+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
99+
assert.NoError(t, err)
100+
101+
cdiVersion, err := querier.GetQuerierAPIVersion()
102+
assert.NoError(t, err)
103+
104+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
105+
return
106+
}
107+
108+
signUpResponse, err := SignUp("test@example.com", "testpass123")
109+
assert.NoError(t, err)
110+
assert.NotNil(t, signUpResponse.OK)
111+
112+
{
113+
externalUserId := "externalId"
114+
externalUserIdInfo := "externalIdInfo"
115+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
116+
assert.NoError(t, err)
117+
assert.NotNil(t, createResp.OK)
118+
}
119+
120+
{ // duplicate of both
121+
externalUserId := "externalId"
122+
externalUserIdInfo := "externalIdInfo"
123+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
124+
assert.NoError(t, err)
125+
assert.NotNil(t, createResp.UserIdMappingAlreadyExistsError)
126+
assert.True(t, createResp.UserIdMappingAlreadyExistsError.DoesExternalUserIdExist)
127+
assert.True(t, createResp.UserIdMappingAlreadyExistsError.DoesSuperTokensUserIdExist)
128+
}
129+
130+
{ // duplicate of supertokensUserId
131+
externalUserId := "differentId"
132+
externalUserIdInfo := "externalIdInfo"
133+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
134+
assert.NoError(t, err)
135+
assert.NotNil(t, createResp.UserIdMappingAlreadyExistsError)
136+
assert.False(t, createResp.UserIdMappingAlreadyExistsError.DoesExternalUserIdExist)
137+
assert.True(t, createResp.UserIdMappingAlreadyExistsError.DoesSuperTokensUserIdExist)
138+
}
139+
140+
{ // duplicate of externalUserId
141+
142+
signUpResponse, err := SignUp("test2@example.com", "testpass123")
143+
assert.NoError(t, err)
144+
assert.NotNil(t, signUpResponse.OK)
145+
146+
externalUserId := "externalId"
147+
externalUserIdInfo := "externalIdInfo"
148+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
149+
assert.NoError(t, err)
150+
assert.NotNil(t, createResp.UserIdMappingAlreadyExistsError)
151+
assert.True(t, createResp.UserIdMappingAlreadyExistsError.DoesExternalUserIdExist)
152+
assert.False(t, createResp.UserIdMappingAlreadyExistsError.DoesSuperTokensUserIdExist)
153+
}
154+
}
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package emailpassword
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
"github.com/supertokens/supertokens-golang/supertokens"
8+
"github.com/supertokens/supertokens-golang/test/unittesting"
9+
)
10+
11+
func TestDeleteUnknownUserIdMapping(t *testing.T) {
12+
BeforeEach()
13+
unittesting.StartUpST("localhost", "8080")
14+
defer AfterEach()
15+
16+
initForUserIdMappingTest(t)
17+
18+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
19+
assert.NoError(t, err)
20+
21+
cdiVersion, err := querier.GetQuerierAPIVersion()
22+
assert.NoError(t, err)
23+
24+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
25+
return
26+
}
27+
28+
{
29+
deleteResp, err := supertokens.DeleteUserIdMapping("unknownUserId", "SUPERTOKENS", false)
30+
assert.NoError(t, err)
31+
assert.NotNil(t, deleteResp.OK)
32+
assert.False(t, deleteResp.OK.DidMappingExist)
33+
}
34+
35+
{
36+
deleteResp, err := supertokens.DeleteUserIdMapping("unknownUserId", "EXTERNAL", false)
37+
assert.NoError(t, err)
38+
assert.NotNil(t, deleteResp.OK)
39+
assert.False(t, deleteResp.OK.DidMappingExist)
40+
}
41+
42+
{
43+
deleteResp, err := supertokens.DeleteUserIdMapping("unknownUserId", "ANY", false)
44+
assert.NoError(t, err)
45+
assert.NotNil(t, deleteResp.OK)
46+
assert.False(t, deleteResp.OK.DidMappingExist)
47+
}
48+
}
49+
50+
func TestDeleteUserIdMappingOfSupertokensUserId(t *testing.T) {
51+
BeforeEach()
52+
unittesting.StartUpST("localhost", "8080")
53+
defer AfterEach()
54+
55+
initForUserIdMappingTest(t)
56+
57+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
58+
assert.NoError(t, err)
59+
60+
cdiVersion, err := querier.GetQuerierAPIVersion()
61+
assert.NoError(t, err)
62+
63+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
64+
return
65+
}
66+
67+
signUpResponse, err := SignUp("test@example.com", "testpass123")
68+
assert.NoError(t, err)
69+
70+
assert.NotNil(t, signUpResponse.OK)
71+
72+
externalUserId := "externalId"
73+
externalUserIdInfo := "externalIdInfo"
74+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
75+
assert.NoError(t, err)
76+
assert.NotNil(t, createResp.OK)
77+
78+
deleteResp, err := supertokens.DeleteUserIdMapping(signUpResponse.OK.User.ID, "SUPERTOKENS", false)
79+
assert.NoError(t, err)
80+
assert.NotNil(t, deleteResp.OK)
81+
assert.True(t, deleteResp.OK.DidMappingExist)
82+
}
83+
84+
func TestDeleteUserIdMappingOfExternalUserId(t *testing.T) {
85+
BeforeEach()
86+
unittesting.StartUpST("localhost", "8080")
87+
defer AfterEach()
88+
89+
initForUserIdMappingTest(t)
90+
91+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
92+
assert.NoError(t, err)
93+
94+
cdiVersion, err := querier.GetQuerierAPIVersion()
95+
assert.NoError(t, err)
96+
97+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
98+
return
99+
}
100+
101+
signUpResponse, err := SignUp("test@example.com", "testpass123")
102+
assert.NoError(t, err)
103+
104+
assert.NotNil(t, signUpResponse.OK)
105+
106+
externalUserId := "externalId"
107+
externalUserIdInfo := "externalIdInfo"
108+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
109+
assert.NoError(t, err)
110+
assert.NotNil(t, createResp.OK)
111+
112+
deleteResp, err := supertokens.DeleteUserIdMapping(externalUserId, "EXTERNAL", false)
113+
assert.NoError(t, err)
114+
assert.NotNil(t, deleteResp.OK)
115+
assert.True(t, deleteResp.OK.DidMappingExist)
116+
}
117+
118+
func TestDeleteUserIdMappingOfAnyUsrId(t *testing.T) {
119+
BeforeEach()
120+
unittesting.StartUpST("localhost", "8080")
121+
defer AfterEach()
122+
123+
initForUserIdMappingTest(t)
124+
125+
querier, err := supertokens.GetNewQuerierInstanceOrThrowError("")
126+
assert.NoError(t, err)
127+
128+
cdiVersion, err := querier.GetQuerierAPIVersion()
129+
assert.NoError(t, err)
130+
131+
if unittesting.MaxVersion(cdiVersion, "2.14") != cdiVersion {
132+
return
133+
}
134+
135+
signUpResponse, err := SignUp("test@example.com", "testpass123")
136+
assert.NoError(t, err)
137+
assert.NotNil(t, signUpResponse.OK)
138+
139+
{
140+
externalUserId := "externalId"
141+
externalUserIdInfo := "externalIdInfo"
142+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
143+
assert.NoError(t, err)
144+
assert.NotNil(t, createResp.OK)
145+
146+
deleteResp, err := supertokens.DeleteUserIdMapping(externalUserId, "ANY", false)
147+
assert.NoError(t, err)
148+
assert.NotNil(t, deleteResp.OK)
149+
assert.True(t, deleteResp.OK.DidMappingExist)
150+
151+
getResp, err := supertokens.GetUserIdMapping(externalUserId, "ANY")
152+
assert.NoError(t, err)
153+
assert.NotNil(t, getResp.UnknownMappingError)
154+
}
155+
156+
{
157+
externalUserId := "externalId"
158+
externalUserIdInfo := "externalIdInfo"
159+
createResp, err := supertokens.CreateUserIdMapping(signUpResponse.OK.User.ID, externalUserId, &externalUserIdInfo, false)
160+
assert.NoError(t, err)
161+
assert.NotNil(t, createResp.OK)
162+
163+
deleteResp, err := supertokens.DeleteUserIdMapping(signUpResponse.OK.User.ID, "ANY", false)
164+
assert.NoError(t, err)
165+
assert.NotNil(t, deleteResp.OK)
166+
assert.True(t, deleteResp.OK.DidMappingExist)
167+
168+
getResp, err := supertokens.GetUserIdMapping(signUpResponse.OK.User.ID, "ANY")
169+
assert.NoError(t, err)
170+
assert.NotNil(t, getResp.UnknownMappingError)
171+
}
172+
}

0 commit comments

Comments
 (0)