From 730b86b31233ec069291e372ab7dba6ddbc6b1ca Mon Sep 17 00:00:00 2001 From: Patryk Kalinowski Date: Fri, 31 May 2024 12:31:10 +0200 Subject: [PATCH] tests: fix broken tests --- rpc/admin_test.go | 14 +++++++------- rpc/helpers_test.go | 46 ++++++++++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/rpc/admin_test.go b/rpc/admin_test.go index 21f6ee5f..b5fc2c82 100644 --- a/rpc/admin_test.go +++ b/rpc/admin_test.go @@ -99,7 +99,7 @@ func TestRPC_CreateTenant(t *testing.T) { allowedOrigins := []string{"http://localhost"} t.Run("TenantAlreadyExists", func(t *testing.T) { - tnt, code, err := c.CreateTenant(ctx, tenant.ProjectID, "WAAS_ACCESS_TOKEN", validOidcProviders, allowedOrigins, nil) + tnt, code, err := c.CreateTenant(ctx, tenant.ProjectID, "WAAS_ACCESS_TOKEN", false, validOidcProviders, allowedOrigins, nil) assert.Nil(t, tnt) assert.Empty(t, code) assert.ErrorContains(t, err, "tenant already exists") @@ -110,15 +110,15 @@ func TestRPC_CreateTenant(t *testing.T) { {Issuer: issuer, Audience: audience}, {Issuer: "INVALID", Audience: audience}, } - tnt, code, err := c.CreateTenant(ctx, 2, "WAAS_ACCESS_TOKEN", invalidOidcProviders, allowedOrigins, nil) + tnt, code, err := c.CreateTenant(ctx, 2, "WAAS_ACCESS_TOKEN", false, invalidOidcProviders, allowedOrigins, nil) assert.Nil(t, tnt) assert.Empty(t, code) - assert.ErrorContains(t, err, "invalid oidcProviders") + assert.ErrorContains(t, err, "invalid auth provider configuration") }) t.Run("InvalidOrigin", func(t *testing.T) { invalidOrigins := []string{"localhost"} - tnt, code, err := c.CreateTenant(ctx, 3, "WAAS_ACCESS_TOKEN", validOidcProviders, invalidOrigins, nil) + tnt, code, err := c.CreateTenant(ctx, 3, "WAAS_ACCESS_TOKEN", false, validOidcProviders, invalidOrigins, nil) assert.Nil(t, tnt) assert.Empty(t, code) assert.ErrorContains(t, err, "invalid allowedOrigins") @@ -126,14 +126,14 @@ func TestRPC_CreateTenant(t *testing.T) { t.Run("InvalidPassword", func(t *testing.T) { password := "Password123" - tnt, code, err := c.CreateTenant(ctx, 4, "WAAS_ACCESS_TOKEN", validOidcProviders, allowedOrigins, &password) + tnt, code, err := c.CreateTenant(ctx, 4, "WAAS_ACCESS_TOKEN", false, validOidcProviders, allowedOrigins, &password) assert.Nil(t, tnt) assert.Empty(t, code) assert.ErrorContains(t, err, "password must be at least 12 characters long") }) t.Run("Success", func(t *testing.T) { - tnt, code, err := c.CreateTenant(ctx, 5, "WAAS_ACCESS_TOKEN", validOidcProviders, allowedOrigins, nil) + tnt, code, err := c.CreateTenant(ctx, 5, "WAAS_ACCESS_TOKEN", false, validOidcProviders, allowedOrigins, nil) require.NoError(t, err) assert.NotEmpty(t, code) assert.NotNil(t, tnt) @@ -145,7 +145,7 @@ func TestRPC_CreateTenant(t *testing.T) { t.Run("SuccessWithPassword", func(t *testing.T) { password := "Password1234" - tnt, code, err := c.CreateTenant(ctx, 6, "WAAS_ACCESS_TOKEN", validOidcProviders, allowedOrigins, &password) + tnt, code, err := c.CreateTenant(ctx, 6, "WAAS_ACCESS_TOKEN", false, validOidcProviders, allowedOrigins, &password) require.NoError(t, err) assert.Equal(t, password, code) assert.NotNil(t, tnt) diff --git a/rpc/helpers_test.go b/rpc/helpers_test.go index 5a83e750..8dec2543 100644 --- a/rpc/helpers_test.go +++ b/rpc/helpers_test.go @@ -25,8 +25,9 @@ import ( "github.com/0xsequence/waas-authenticator/proto" proto_wallet "github.com/0xsequence/waas-authenticator/proto/waas" "github.com/0xsequence/waas-authenticator/rpc" + "github.com/0xsequence/waas-authenticator/rpc/auth" + "github.com/0xsequence/waas-authenticator/rpc/auth/oidc" "github.com/0xsequence/waas-authenticator/rpc/crypto" - "github.com/0xsequence/waas-authenticator/rpc/identity" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue" "github.com/aws/aws-sdk-go-v2/service/dynamodb" @@ -69,19 +70,20 @@ func getTestingCtxValue(ctx context.Context, k string) string { func initRPC(cfg *config.Config, enc *enclave.Enclave, dbClient *dbMock) *rpc.RPC { client := httpClient{} cacheBackend := memlru.Backend(1024) - verifier, err := identity.NewVerifier(cacheBackend, client) + legacyProvider, err := oidc.NewLegacyAuthProvider(cacheBackend, client) if err != nil { panic(err) } svc := &rpc.RPC{ - Config: cfg, - HTTPClient: client, - Enclave: enc, - Wallets: newWalletServiceMock(nil), - Tenants: data.NewTenantTable(dbClient, "Tenants"), - Sessions: data.NewSessionTable(dbClient, "Sessions", "UserID-Index"), - Accounts: data.NewAccountTable(dbClient, "Accounts", data.AccountIndices{}), - Verifier: verifier, + Config: cfg, + HTTPClient: client, + Enclave: enc, + Wallets: newWalletServiceMock(nil), + Tenants: data.NewTenantTable(dbClient, "Tenants"), + Sessions: data.NewSessionTable(dbClient, "Sessions", "UserID-Index"), + Accounts: data.NewAccountTable(dbClient, "Accounts", data.AccountIndices{}), + VerificationContexts: data.NewVerificationContextTable(dbClient, "VerificationContexts"), + AuthProviders: map[intents.IdentityType]auth.Provider{intents.IdentityType_None: legacyProvider}, } return svc } @@ -265,9 +267,10 @@ func (m *kmsMock) GenerateDataKey(ctx context.Context, params *kms.GenerateDataK } type dbMock struct { - tenants map[uint64][]*data.Tenant - sessions map[string]*data.Session - accounts map[uint64]map[string]*data.Account + tenants map[uint64][]*data.Tenant + sessions map[string]*data.Session + accounts map[uint64]map[string]*data.Account + verifContexts map[string]*data.VerificationContext } func (d *dbMock) DeleteItem(ctx context.Context, params *dynamodb.DeleteItemInput, optFns ...func(*dynamodb.Options)) (*dynamodb.DeleteItemOutput, error) { @@ -343,6 +346,18 @@ func (d *dbMock) GetItem(ctx context.Context, params *dynamodb.GetItemInput, opt return nil, err } return out, nil + case "VerificationContexts": + id, err := getDynamoAttribute[*dynamodbtypes.AttributeValueMemberS](params.Key, "ID") + if err != nil { + return nil, err + } + out := &dynamodb.GetItemOutput{} + verifCtx := d.verifContexts[id.Value] + out.Item, err = attributevalue.MarshalMap(verifCtx) + if err != nil { + return nil, err + } + return out, nil } return nil, fmt.Errorf("invalid TableName: %q", *params.TableName) @@ -601,6 +616,11 @@ type walletServiceMock struct { registeredSessions map[string]struct{} } +func (w walletServiceMock) InitiateEmailAuth(ctx context.Context, intent *proto_wallet.Intent, answerHash string, salt string) (*proto_wallet.IntentResponse, error) { + //TODO implement me + panic("implement me") +} + func (w walletServiceMock) UpdateProjectUserMapRules(ctx context.Context, projectID uint64, userMapRules *proto_wallet.ProjectSessionUserMapRules) error { //TODO implement me panic("implement me")