Skip to content

Commit a8829da

Browse files
Merge pull request #380 from supertokens/tests-fix
chore: Fix third party provider tests
2 parents eb6aff9 + 426d434 commit a8829da

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

recipe/thirdparty/provider_test.go

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
package thirdparty
1818

1919
import (
20+
"encoding/json"
2021
"errors"
22+
"github.com/supertokens/supertokens-golang/recipe/session"
2123
"io"
2224
"io/ioutil"
25+
"net"
2326
"net/http"
2427
"net/http/httptest"
2528
"net/url"
@@ -779,3 +782,122 @@ func TestThatSignInUpFailsIfValidateAccessTokenReturnsError(t *testing.T) {
779782
respString = strings.Replace(respString, "\n", "", -1)
780783
assert.Equal(t, respString, "Invalid access token")
781784
}
785+
786+
func TestThatSignInUpWorksIfValidateAccessTokenDoesNotReturnError(t *testing.T) {
787+
overrideValidateCalled := false
788+
configValue := supertokens.TypeInput{
789+
Supertokens: &supertokens.ConnectionInfo{
790+
ConnectionURI: "http://localhost:8080",
791+
},
792+
AppInfo: supertokens.AppInfo{
793+
APIDomain: "api.supertokens.io",
794+
AppName: "SuperTokens",
795+
WebsiteDomain: "supertokens.io",
796+
},
797+
RecipeList: []supertokens.Recipe{
798+
session.Init(nil),
799+
Init(
800+
&tpmodels.TypeInput{
801+
SignInAndUpFeature: tpmodels.TypeInputSignInAndUp{
802+
Providers: []tpmodels.ProviderInput{
803+
{
804+
Config: tpmodels.ProviderConfig{
805+
ThirdPartyId: "custom",
806+
TokenEndpoint: "http://127.0.0.1:8083/tokenendpoint",
807+
UserInfoEndpoint: "http://127.0.0.1:8083/userinfo",
808+
UserInfoMap: tpmodels.TypeUserInfoMap{
809+
FromUserInfoAPI: tpmodels.TypeUserInfoMapFields{
810+
UserId: "userId",
811+
Email: "email",
812+
EmailVerified: "emailVerified",
813+
},
814+
},
815+
Clients: []tpmodels.ProviderClientConfig{
816+
{
817+
ClientID: "test",
818+
ClientSecret: "test-secret",
819+
Scope: []string{"test-scope-1", "test-scope-2"},
820+
},
821+
},
822+
ValidateAccessToken: func(accessToken string, clientConfig tpmodels.ProviderConfigForClientType, userContext supertokens.UserContext) error {
823+
overrideValidateCalled = true
824+
if accessToken != "accesstoken" {
825+
return errors.New("Invalid access token")
826+
}
827+
828+
return nil
829+
},
830+
},
831+
},
832+
},
833+
},
834+
},
835+
),
836+
},
837+
}
838+
839+
BeforeEach()
840+
unittesting.StartUpST("localhost", "8080")
841+
defer AfterEach()
842+
err := supertokens.Init(configValue)
843+
844+
if err != nil {
845+
t.Error(err.Error())
846+
}
847+
848+
mux := http.NewServeMux()
849+
850+
mux.HandleFunc("/tokenendpoint", func(rw http.ResponseWriter, r *http.Request) {
851+
data := map[string]interface{}{
852+
"access_token": "accesstoken",
853+
"id_token": "idtoken",
854+
}
855+
rw.Header().Set("Content-Type", "application/json")
856+
rw.WriteHeader(http.StatusCreated)
857+
json.NewEncoder(rw).Encode(data)
858+
})
859+
860+
mux.HandleFunc("/userinfo", func(rw http.ResponseWriter, r *http.Request) {
861+
data := map[string]interface{}{
862+
"userId": "testiserid",
863+
"email": "testinguser@supertokens.com",
864+
"emailVerified": "true",
865+
}
866+
rw.Header().Set("Content-Type", "application/json")
867+
rw.WriteHeader(http.StatusCreated)
868+
json.NewEncoder(rw).Encode(data)
869+
})
870+
871+
l, err := net.Listen("tcp", "127.0.0.1:8083")
872+
if err != nil {
873+
t.Error(err.Error())
874+
}
875+
876+
testServer := httptest.NewUnstartedServer(supertokens.Middleware(mux))
877+
testServer.Listener.Close()
878+
testServer.Listener = l
879+
880+
// Start the server.
881+
testServer.Start()
882+
defer testServer.Close()
883+
884+
req, err := http.NewRequest(http.MethodPost, testServer.URL+"/auth/signinup", strings.NewReader(`{"thirdPartyId": "custom", "redirectURIInfo": {"redirectURIOnProviderDashboard": "http://127.0.0.1/callback", "redirectURIQueryParams": {"code": "abcdefghj"}}}`))
885+
if err != nil {
886+
t.Error(err.Error())
887+
}
888+
889+
res, err := http.DefaultClient.Do(req)
890+
891+
dataInBytes, err := ioutil.ReadAll(res.Body)
892+
if err != nil {
893+
t.Error(err.Error())
894+
}
895+
896+
var response map[string]string
897+
898+
err = json.Unmarshal(dataInBytes, &response)
899+
900+
assert.Equal(t, res.StatusCode, 200)
901+
assert.True(t, overrideValidateCalled)
902+
assert.Equal(t, response["status"], "OK")
903+
}

0 commit comments

Comments
 (0)