fix(server): rename config -> env

This commit is contained in:
Lakhan Samani 2022-01-17 13:12:46 +05:30
parent e07448f670
commit c15b65b473
11 changed files with 331 additions and 323 deletions

View File

@ -20,6 +20,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/robertkrimen/otto v0.0.0-20211024170158-b87d35c0b86f github.com/robertkrimen/otto v0.0.0-20211024170158-b87d35c0b86f
github.com/stretchr/testify v1.7.0
github.com/ugorji/go v1.2.6 // indirect github.com/ugorji/go v1.2.6 // indirect
github.com/vektah/gqlparser/v2 v2.2.0 github.com/vektah/gqlparser/v2 v2.2.0
go.mongodb.org/mongo-driver v1.8.1 go.mongodb.org/mongo-driver v1.8.1

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,11 @@ type AuthResponse struct {
User *User `json:"user"` User *User `json:"user"`
} }
type Config struct { type DeleteUserInput struct {
Email string `json:"email"`
}
type Env struct {
AdminSecret *string `json:"ADMIN_SECRET"` AdminSecret *string `json:"ADMIN_SECRET"`
DatabaseType *string `json:"DATABASE_TYPE"` DatabaseType *string `json:"DATABASE_TYPE"`
DatabaseURL *string `json:"DATABASE_URL"` DatabaseURL *string `json:"DATABASE_URL"`
@ -53,10 +57,6 @@ type Config struct {
OrganizationLogo *string `json:"ORGANIZATION_LOGO"` OrganizationLogo *string `json:"ORGANIZATION_LOGO"`
} }
type DeleteUserInput struct {
Email string `json:"email"`
}
type Error struct { type Error struct {
Message string `json:"message"` Message string `json:"message"`
Reason string `json:"reason"` Reason string `json:"reason"`
@ -117,8 +117,9 @@ type SignUpInput struct {
Roles []string `json:"roles"` Roles []string `json:"roles"`
} }
type UpdateConfigInput struct { type UpdateEnvInput struct {
AdminSecret *string `json:"ADMIN_SECRET"` AdminSecret *string `json:"ADMIN_SECRET"`
ConfirmAdminSecret *string `json:"CONFIRM_ADMIN_SECRET"`
DatabaseType *string `json:"DATABASE_TYPE"` DatabaseType *string `json:"DATABASE_TYPE"`
DatabaseURL *string `json:"DATABASE_URL"` DatabaseURL *string `json:"DATABASE_URL"`
DatabaseName *string `json:"DATABASE_NAME"` DatabaseName *string `json:"DATABASE_NAME"`

View File

@ -62,7 +62,7 @@ type Response {
message: String! message: String!
} }
type Config { type Env {
ADMIN_SECRET: String ADMIN_SECRET: String
DATABASE_TYPE: String DATABASE_TYPE: String
DATABASE_URL: String DATABASE_URL: String
@ -98,8 +98,9 @@ type Config {
ORGANIZATION_LOGO: String ORGANIZATION_LOGO: String
} }
input UpdateConfigInput { input UpdateEnvInput {
ADMIN_SECRET: String ADMIN_SECRET: String
CONFIRM_ADMIN_SECRET: String
DATABASE_TYPE: String DATABASE_TYPE: String
DATABASE_URL: String DATABASE_URL: String
DATABASE_NAME: String DATABASE_NAME: String
@ -236,7 +237,7 @@ type Mutation {
_admin_signup(params: AdminSignupInput!): Response! _admin_signup(params: AdminSignupInput!): Response!
_admin_login(params: AdminLoginInput!): Response! _admin_login(params: AdminLoginInput!): Response!
_admin_logout: Response! _admin_logout: Response!
_update_config(params: UpdateConfigInput!): Response! _update_env(params: UpdateEnvInput!): Response!
} }
type Query { type Query {
@ -247,5 +248,5 @@ type Query {
_users: [User!]! _users: [User!]!
_verification_requests: [VerificationRequest!]! _verification_requests: [VerificationRequest!]!
_admin_session: Response! _admin_session: Response!
_config: Config! _env: Env!
} }

View File

@ -67,8 +67,8 @@ func (r *mutationResolver) AdminLogout(ctx context.Context) (*model.Response, er
return resolvers.AdminLogoutResolver(ctx) return resolvers.AdminLogoutResolver(ctx)
} }
func (r *mutationResolver) UpdateConfig(ctx context.Context, params model.UpdateConfigInput) (*model.Response, error) { func (r *mutationResolver) UpdateEnv(ctx context.Context, params model.UpdateEnvInput) (*model.Response, error) {
return resolvers.UpdateConfigResolver(ctx, params) return resolvers.UpdateEnvResolver(ctx, params)
} }
func (r *queryResolver) Meta(ctx context.Context) (*model.Meta, error) { func (r *queryResolver) Meta(ctx context.Context) (*model.Meta, error) {
@ -95,8 +95,8 @@ func (r *queryResolver) AdminSession(ctx context.Context) (*model.Response, erro
return resolvers.AdminSessionResolver(ctx) return resolvers.AdminSessionResolver(ctx)
} }
func (r *queryResolver) Config(ctx context.Context) (*model.Config, error) { func (r *queryResolver) Env(ctx context.Context) (*model.Env, error) {
return resolvers.ConfigResolver(ctx) return resolvers.EnvResolver(ctx)
} }
// Mutation returns generated.MutationResolver implementation. // Mutation returns generated.MutationResolver implementation.

View File

@ -10,13 +10,11 @@ import (
"github.com/authorizerdev/authorizer/server/utils" "github.com/authorizerdev/authorizer/server/utils"
) )
// TODO rename to env_data // EnvResolver is a resolver for config query
// ConfigResolver is a resolver for config query
// This is admin only query // This is admin only query
func ConfigResolver(ctx context.Context) (*model.Config, error) { func EnvResolver(ctx context.Context) (*model.Env, error) {
gc, err := utils.GinContextFromContext(ctx) gc, err := utils.GinContextFromContext(ctx)
var res *model.Config var res *model.Env
if err != nil { if err != nil {
return res, err return res, err
@ -62,7 +60,7 @@ func ConfigResolver(ctx context.Context) (*model.Config, error) {
organizationName := store[constants.EnvKeyOrganizationName].(string) organizationName := store[constants.EnvKeyOrganizationName].(string)
organizationLogo := store[constants.EnvKeyOrganizationLogo].(string) organizationLogo := store[constants.EnvKeyOrganizationLogo].(string)
res = &model.Config{ res = &model.Env{
AdminSecret: &adminSecret, AdminSecret: &adminSecret,
DatabaseType: &databaseType, DatabaseType: &databaseType,
DatabaseURL: &databaseURL, DatabaseURL: &databaseURL,

View File

@ -14,11 +14,9 @@ import (
"github.com/authorizerdev/authorizer/server/utils" "github.com/authorizerdev/authorizer/server/utils"
) )
// TODO rename to UpdateEnvDataResolver // UpdateEnvResolver is a resolver for update config mutation
// UpdateConfigResolver is a resolver for update config mutation
// This is admin only mutation // This is admin only mutation
func UpdateConfigResolver(ctx context.Context, params model.UpdateConfigInput) (*model.Response, error) { func UpdateEnvResolver(ctx context.Context, params model.UpdateEnvInput) (*model.Response, error) {
gc, err := utils.GinContextFromContext(ctx) gc, err := utils.GinContextFromContext(ctx)
var res *model.Response var res *model.Response

View File

@ -1,31 +0,0 @@
package test
import (
"fmt"
"log"
"testing"
"github.com/authorizerdev/authorizer/server/constants"
"github.com/authorizerdev/authorizer/server/envstore"
"github.com/authorizerdev/authorizer/server/resolvers"
"github.com/authorizerdev/authorizer/server/utils"
"github.com/stretchr/testify/assert"
)
func configTests(t *testing.T, s TestSetup) {
t.Helper()
t.Run(`should get config`, func(t *testing.T) {
req, ctx := createContext(s)
_, err := resolvers.ConfigResolver(ctx)
log.Println("error:", err)
assert.NotNil(t, err)
h, err := utils.EncryptPassword(envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminSecret).(string))
assert.Nil(t, err)
req.Header.Set("Cookie", fmt.Sprintf("%s=%s", envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminCookieName).(string), h))
res, err := resolvers.ConfigResolver(ctx)
assert.Nil(t, err)
assert.Equal(t, *res.AdminSecret, envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminSecret).(string))
})
}

View File

@ -0,0 +1,29 @@
package test
import (
"testing"
"github.com/authorizerdev/authorizer/server/constants"
"github.com/authorizerdev/authorizer/server/env"
"github.com/authorizerdev/authorizer/server/envstore"
"github.com/stretchr/testify/assert"
)
func TestEnvs(t *testing.T) {
envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.EnvKeyEnvPath, "../../.env.sample")
env.InitEnv()
store := envstore.EnvInMemoryStoreObj.GetEnvStoreClone()
assert.Equal(t, store[constants.EnvKeyAdminSecret].(string), "admin")
assert.Equal(t, store[constants.EnvKeyEnv].(string), "production")
assert.False(t, store[constants.EnvKeyDisableEmailVerification].(bool))
assert.False(t, store[constants.EnvKeyDisableMagicLinkLogin].(bool))
assert.False(t, store[constants.EnvKeyDisableBasicAuthentication].(bool))
assert.Equal(t, store[constants.EnvKeyJwtType].(string), "HS256")
assert.Equal(t, store[constants.EnvKeyJwtSecret].(string), "random_string")
assert.Equal(t, store[constants.EnvKeyJwtRoleClaim].(string), "role")
assert.EqualValues(t, store[constants.EnvKeyRoles].([]string), []string{"user"})
assert.EqualValues(t, store[constants.EnvKeyDefaultRoles].([]string), []string{"user"})
assert.EqualValues(t, store[constants.EnvKeyProtectedRoles].([]string), []string{"admin"})
assert.EqualValues(t, store[constants.EnvKeyAllowedOrigins].([]string), []string{"*"})
}

View File

@ -1,29 +1,31 @@
package test package test
import ( import (
"fmt"
"log"
"testing" "testing"
"github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/constants"
"github.com/authorizerdev/authorizer/server/env"
"github.com/authorizerdev/authorizer/server/envstore" "github.com/authorizerdev/authorizer/server/envstore"
"github.com/authorizerdev/authorizer/server/resolvers"
"github.com/authorizerdev/authorizer/server/utils"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestEnvs(t *testing.T) { func configTests(t *testing.T, s TestSetup) {
envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.EnvKeyEnvPath, "../../.env.sample") t.Helper()
env.InitEnv() t.Run(`should get config`, func(t *testing.T) {
store := envstore.EnvInMemoryStoreObj.GetEnvStoreClone() req, ctx := createContext(s)
_, err := resolvers.EnvResolver(ctx)
log.Println("error:", err)
assert.NotNil(t, err)
assert.Equal(t, store[constants.EnvKeyAdminSecret].(string), "admin") h, err := utils.EncryptPassword(envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminSecret).(string))
assert.Equal(t, store[constants.EnvKeyEnv].(string), "production") assert.Nil(t, err)
assert.False(t, store[constants.EnvKeyDisableEmailVerification].(bool)) req.Header.Set("Cookie", fmt.Sprintf("%s=%s", envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminCookieName).(string), h))
assert.False(t, store[constants.EnvKeyDisableMagicLinkLogin].(bool)) res, err := resolvers.EnvResolver(ctx)
assert.False(t, store[constants.EnvKeyDisableBasicAuthentication].(bool))
assert.Equal(t, store[constants.EnvKeyJwtType].(string), "HS256") assert.Nil(t, err)
assert.Equal(t, store[constants.EnvKeyJwtSecret].(string), "random_string") assert.Equal(t, *res.AdminSecret, envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminSecret).(string))
assert.Equal(t, store[constants.EnvKeyJwtRoleClaim].(string), "role") })
assert.EqualValues(t, store[constants.EnvKeyRoles].([]string), []string{"user"})
assert.EqualValues(t, store[constants.EnvKeyDefaultRoles].([]string), []string{"user"})
assert.EqualValues(t, store[constants.EnvKeyProtectedRoles].([]string), []string{"admin"})
assert.EqualValues(t, store[constants.EnvKeyAllowedOrigins].([]string), []string{"*"})
} }

View File

@ -19,8 +19,8 @@ func updateConfigTests(t *testing.T, s TestSetup) {
req, ctx := createContext(s) req, ctx := createContext(s)
originalAppURL := envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAppURL).(string) originalAppURL := envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAppURL).(string)
data := model.UpdateConfigInput{} data := model.UpdateEnvInput{}
_, err := resolvers.UpdateConfigResolver(ctx, data) _, err := resolvers.UpdateEnvResolver(ctx, data)
log.Println("error:", err) log.Println("error:", err)
assert.NotNil(t, err) assert.NotNil(t, err)
@ -28,17 +28,17 @@ func updateConfigTests(t *testing.T, s TestSetup) {
assert.Nil(t, err) assert.Nil(t, err)
req.Header.Set("Cookie", fmt.Sprintf("%s=%s", envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminCookieName).(string), h)) req.Header.Set("Cookie", fmt.Sprintf("%s=%s", envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAdminCookieName).(string), h))
newURL := "https://test.com" newURL := "https://test.com"
data = model.UpdateConfigInput{ data = model.UpdateEnvInput{
AppURL: &newURL, AppURL: &newURL,
} }
_, err = resolvers.UpdateConfigResolver(ctx, data) _, err = resolvers.UpdateEnvResolver(ctx, data)
log.Println("error:", err) log.Println("error:", err)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAppURL).(string), newURL) assert.Equal(t, envstore.EnvInMemoryStoreObj.GetEnvVariable(constants.EnvKeyAppURL).(string), newURL)
data = model.UpdateConfigInput{ data = model.UpdateEnvInput{
AppURL: &originalAppURL, AppURL: &originalAppURL,
} }
_, err = resolvers.UpdateConfigResolver(ctx, data) _, err = resolvers.UpdateEnvResolver(ctx, data)
assert.Nil(t, err) assert.Nil(t, err)
}) })
} }