2022-01-17 06:02:13 +00:00
|
|
|
package test
|
|
|
|
|
|
|
|
import (
|
2022-07-10 16:19:33 +00:00
|
|
|
"context"
|
2022-07-12 06:18:42 +00:00
|
|
|
"os"
|
2022-01-17 06:02:13 +00:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
|
|
|
"github.com/authorizerdev/authorizer/server/db"
|
|
|
|
"github.com/authorizerdev/authorizer/server/env"
|
2022-05-30 03:49:55 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/memorystore"
|
2022-01-17 06:02:13 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestResolvers(t *testing.T) {
|
|
|
|
databases := map[string]string{
|
2022-07-17 05:06:16 +00:00
|
|
|
constants.DbTypeSqlite: "../../test.db",
|
2022-07-12 06:18:42 +00:00
|
|
|
// constants.DbTypeArangodb: "http://localhost:8529",
|
2022-07-12 06:27:46 +00:00
|
|
|
// constants.DbTypeMongodb: "mongodb://localhost:27017",
|
|
|
|
// constants.DbTypeScyllaDB: "127.0.0.1:9042",
|
2022-01-17 06:02:13 +00:00
|
|
|
}
|
2022-03-09 13:25:18 +00:00
|
|
|
|
2022-07-12 06:18:42 +00:00
|
|
|
testDb := "authorizer_test"
|
|
|
|
s := testSetup()
|
|
|
|
defer s.Server.Close()
|
|
|
|
|
2022-01-17 06:02:13 +00:00
|
|
|
for dbType, dbURL := range databases {
|
2022-07-10 16:19:33 +00:00
|
|
|
ctx := context.Background()
|
2022-05-31 09:30:11 +00:00
|
|
|
|
2022-05-30 07:17:50 +00:00
|
|
|
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseURL, dbURL)
|
|
|
|
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseType, dbType)
|
2022-07-12 06:18:42 +00:00
|
|
|
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseName, testDb)
|
|
|
|
os.Setenv(constants.EnvKeyDatabaseURL, dbURL)
|
|
|
|
os.Setenv(constants.EnvKeyDatabaseType, dbType)
|
|
|
|
os.Setenv(constants.EnvKeyDatabaseName, testDb)
|
|
|
|
memorystore.InitRequiredEnv()
|
|
|
|
|
2022-03-02 12:12:31 +00:00
|
|
|
err := db.InitDB()
|
|
|
|
if err != nil {
|
2022-07-12 06:18:42 +00:00
|
|
|
t.Errorf("Error initializing database: %s", err.Error())
|
2022-03-02 12:12:31 +00:00
|
|
|
}
|
2022-01-17 06:02:13 +00:00
|
|
|
|
|
|
|
// clean the persisted config for test to use fresh config
|
2022-07-10 16:19:33 +00:00
|
|
|
envData, err := db.Provider.GetEnv(ctx)
|
2022-01-17 06:02:13 +00:00
|
|
|
if err == nil {
|
2022-01-29 11:32:44 +00:00
|
|
|
envData.EnvData = ""
|
2022-07-12 06:18:42 +00:00
|
|
|
_, err = db.Provider.UpdateEnv(ctx, envData)
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error updating env: %s", err.Error())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err = env.PersistEnv()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error persisting env: %s", err.Error())
|
2022-01-17 06:02:13 +00:00
|
|
|
}
|
|
|
|
|
2022-05-30 07:17:50 +00:00
|
|
|
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyEnv, "test")
|
|
|
|
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyIsProd, false)
|
2022-01-17 06:02:13 +00:00
|
|
|
t.Run("should pass tests for "+dbType, func(t *testing.T) {
|
2022-07-11 14:10:54 +00:00
|
|
|
// admin resolvers tests
|
2022-01-17 06:02:13 +00:00
|
|
|
adminSignupTests(t, s)
|
2022-07-11 14:10:54 +00:00
|
|
|
addWebhookTest(t, s) // add webhooks for all the system events
|
|
|
|
testEndpointTest(t, s)
|
2022-01-17 06:02:13 +00:00
|
|
|
verificationRequestsTest(t, s)
|
2022-07-11 14:10:54 +00:00
|
|
|
updateWebhookTest(t, s)
|
|
|
|
webhookTest(t, s)
|
|
|
|
webhooksTest(t, s)
|
2022-01-17 06:02:13 +00:00
|
|
|
usersTest(t, s)
|
|
|
|
deleteUserTest(t, s)
|
|
|
|
updateUserTest(t, s)
|
|
|
|
adminLoginTests(t, s)
|
|
|
|
adminLogoutTests(t, s)
|
|
|
|
adminSessionTests(t, s)
|
2022-01-20 11:22:37 +00:00
|
|
|
updateEnvTests(t, s)
|
|
|
|
envTests(t, s)
|
2022-03-24 16:20:39 +00:00
|
|
|
revokeAccessTest(t, s)
|
|
|
|
enableAccessTest(t, s)
|
2022-03-24 13:53:43 +00:00
|
|
|
generateJWTkeyTest(t, s)
|
2022-01-17 06:02:13 +00:00
|
|
|
|
2022-07-11 14:10:54 +00:00
|
|
|
// user resolvers tests
|
2022-01-17 06:02:13 +00:00
|
|
|
loginTests(t, s)
|
|
|
|
signupTests(t, s)
|
|
|
|
forgotPasswordTest(t, s)
|
|
|
|
resendVerifyEmailTests(t, s)
|
|
|
|
resetPasswordTest(t, s)
|
|
|
|
verifyEmailTest(t, s)
|
|
|
|
sessionTests(t, s)
|
|
|
|
profileTests(t, s)
|
|
|
|
updateProfileTests(t, s)
|
|
|
|
magicLinkLoginTests(t, s)
|
|
|
|
logoutTests(t, s)
|
|
|
|
metaTests(t, s)
|
2022-03-15 06:39:54 +00:00
|
|
|
inviteUserTest(t, s)
|
2022-03-24 08:01:56 +00:00
|
|
|
validateJwtTokenTest(t, s)
|
2022-07-11 14:10:54 +00:00
|
|
|
|
2022-07-12 06:18:42 +00:00
|
|
|
webhookLogsTest(t, s) // get logs after above resolver tests are done
|
|
|
|
deleteWebhookTest(t, s) // delete webhooks (admin resolver)
|
2022-01-17 06:02:13 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|