Files
authorizer/server/test/resolvers_test.go

146 lines
4.3 KiB
Go
Raw Normal View History

2022-01-17 11:32:13 +05:30
package test
import (
2022-07-10 21:49:33 +05:30
"context"
"os"
"strings"
2022-01-17 11:32:13 +05:30
"testing"
"time"
2022-01-17 11:32:13 +05:30
"github.com/authorizerdev/authorizer/server/constants"
"github.com/authorizerdev/authorizer/server/db"
"github.com/authorizerdev/authorizer/server/env"
2022-05-30 09:19:55 +05:30
"github.com/authorizerdev/authorizer/server/memorystore"
"github.com/authorizerdev/authorizer/server/utils"
2022-01-17 11:32:13 +05:30
)
func TestResolvers(t *testing.T) {
databases := map[string]string{
2023-01-18 01:38:00 +05:30
constants.DbTypeSqlite: "../../test.db",
constants.DbTypeArangodb: "http://localhost:8529",
constants.DbTypeMongodb: "mongodb://localhost:27017",
constants.DbTypeScyllaDB: "127.0.0.1:9042",
constants.DbTypeDynamoDB: "http://0.0.0.0:8000",
constants.DbTypeCouchbaseDB: "couchbase://127.0.0.1",
}
testDBs := strings.Split(os.Getenv("TEST_DBS"), ",")
t.Log("Running tests for following dbs: ", testDBs)
for dbType := range databases {
if !utils.StringSliceContains(testDBs, dbType) {
delete(databases, dbType)
}
}
if utils.StringSliceContains(testDBs, constants.DbTypeSqlite) && len(testDBs) == 1 {
// do nothing
} else {
t.Log("waiting for docker containers to start...")
// wait for docker containers to spun up
time.Sleep(30 * time.Second)
2022-01-17 11:32:13 +05:30
}
2022-03-09 18:55:18 +05:30
testDb := "authorizer_test"
s := testSetup()
defer s.Server.Close()
2022-01-17 11:32:13 +05:30
for dbType, dbURL := range databases {
2022-07-10 21:49:33 +05:30
ctx := context.Background()
2022-05-31 15:00:11 +05:30
2022-05-30 12:47:50 +05:30
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseURL, dbURL)
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseType, dbType)
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseName, testDb)
os.Setenv(constants.EnvKeyDatabaseURL, dbURL)
os.Setenv(constants.EnvKeyDatabaseType, dbType)
os.Setenv(constants.EnvKeyDatabaseName, testDb)
if dbType == constants.DbTypeDynamoDB {
memorystore.Provider.UpdateEnvVariable(constants.EnvAwsRegion, "ap-south-1")
os.Setenv(constants.EnvAwsRegion, "ap-south-1")
}
2023-01-25 05:19:01 +05:30
if dbType == constants.DbTypeCouchbaseDB {
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseUsername, "Administrator")
os.Setenv(constants.EnvKeyDatabaseUsername, "Administrator")
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabasePassword, "password")
os.Setenv(constants.EnvKeyDatabasePassword, "password")
}
memorystore.InitRequiredEnv()
2022-03-02 17:42:31 +05:30
err := db.InitDB()
if err != nil {
t.Logf("Error initializing database: %s", err.Error())
2022-03-02 17:42:31 +05:30
}
2022-01-17 11:32:13 +05:30
// clean the persisted config for test to use fresh config
2022-07-10 21:49:33 +05:30
envData, err := db.Provider.GetEnv(ctx)
if err == nil && envData.ID != "" {
2022-01-29 17:02:44 +05:30
envData.EnvData = ""
_, err = db.Provider.UpdateEnv(ctx, envData)
if err != nil {
t.Logf("Error updating env: %s", err.Error())
}
} else if err != nil {
t.Logf("Error getting env: %s", err.Error())
}
err = env.PersistEnv()
if err != nil {
t.Logf("Error persisting env: %s", err.Error())
2022-01-17 11:32:13 +05:30
}
2022-05-30 12:47:50 +05:30
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyEnv, "test")
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyIsProd, false)
2022-01-17 11:32:13 +05:30
t.Run("should pass tests for "+dbType, func(t *testing.T) {
2022-07-11 19:40:54 +05:30
// admin resolvers tests
2022-01-17 11:32:13 +05:30
adminSignupTests(t, s)
2022-07-11 19:40:54 +05:30
addWebhookTest(t, s) // add webhooks for all the system events
testEndpointTest(t, s)
2022-01-17 11:32:13 +05:30
verificationRequestsTest(t, s)
2022-07-11 19:40:54 +05:30
updateWebhookTest(t, s)
webhookTest(t, s)
webhooksTest(t, s)
2022-01-17 11:32:13 +05:30
usersTest(t, s)
2023-01-05 20:16:41 +05:30
userTest(t, s)
2022-01-17 11:32:13 +05:30
deleteUserTest(t, s)
updateUserTest(t, s)
adminLoginTests(t, s)
adminLogoutTests(t, s)
adminSessionTests(t, s)
updateEnvTests(t, s)
envTests(t, s)
revokeAccessTest(t, s)
enableAccessTest(t, s)
2022-03-24 19:23:43 +05:30
generateJWTkeyTest(t, s)
addEmailTemplateTest(t, s)
updateEmailTemplateTest(t, s)
emailTemplatesTest(t, s)
deleteEmailTemplateTest(t, s)
2022-01-17 11:32:13 +05:30
2022-07-11 19:40:54 +05:30
// user resolvers tests
2022-01-17 11:32:13 +05:30
loginTests(t, s)
signupTests(t, s)
2022-12-25 03:22:42 +05:30
mobileSingupTest(t, s)
mobileLoginTests(t, s)
2022-01-17 11:32:13 +05:30
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)
inviteUserTest(t, s)
validateJwtTokenTest(t, s)
verifyOTPTest(t, s)
2022-07-30 01:12:20 +05:30
resendOTPTest(t, s)
2023-06-11 16:03:16 +03:00
verifyMobileTest(t, s)
updateAllUsersTest(t, s)
webhookLogsTest(t, s) // get logs after above resolver tests are done
deleteWebhookTest(t, s) // delete webhooks (admin resolver)
2022-01-17 11:32:13 +05:30
})
}
}