From ccaaa21f1681e841289d228a87f246a5a0fb6319 Mon Sep 17 00:00:00 2001 From: Javier Adriel Date: Mon, 23 Jan 2023 10:10:51 -0600 Subject: [PATCH] Move adminClientMock methods to single file (#2583) --- restapi/admin_arns_test.go | 2 +- restapi/admin_client_mock.go | 387 +++++++++++++++++++ restapi/admin_config_test.go | 38 +- restapi/admin_console_test.go | 10 +- restapi/admin_groups_test.go | 41 +- restapi/admin_heal_test.go | 12 +- restapi/admin_health_info_test.go | 10 +- restapi/admin_idp_test.go | 21 +- restapi/admin_info_test.go | 4 +- restapi/admin_kms_test.go | 89 +---- restapi/admin_notification_endpoints_test.go | 2 +- restapi/admin_policies_test.go | 45 +-- restapi/admin_profiling_test.go | 17 +- restapi/admin_service_test.go | 10 +- restapi/admin_site_replication_test.go | 41 +- restapi/admin_subnet_test.go | 4 +- restapi/admin_test.go | 65 ---- restapi/admin_tiers_test.go | 38 +- restapi/admin_trace_test.go | 10 +- restapi/admin_users_test.go | 51 +-- restapi/user_account_test.go | 6 +- restapi/user_buckets_test.go | 11 +- restapi/user_login_test.go | 2 +- restapi/user_service_accounts_test.go | 43 +-- 24 files changed, 444 insertions(+), 515 deletions(-) create mode 100644 restapi/admin_client_mock.go delete mode 100644 restapi/admin_test.go diff --git a/restapi/admin_arns_test.go b/restapi/admin_arns_test.go index e972bb682..860d8abb8 100644 --- a/restapi/admin_arns_test.go +++ b/restapi/admin_arns_test.go @@ -37,7 +37,7 @@ import ( func TestArnsList(t *testing.T) { assert := asrt.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} // Test-1 : getArns() returns proper arn list minioServerInfoMock = func(ctx context.Context) (madmin.InfoMessage, error) { return madmin.InfoMessage{ diff --git a/restapi/admin_client_mock.go b/restapi/admin_client_mock.go new file mode 100644 index 000000000..24fc0bb43 --- /dev/null +++ b/restapi/admin_client_mock.go @@ -0,0 +1,387 @@ +// This file is part of MinIO Console Server +// Copyright (c) 2023 MinIO, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package restapi + +import ( + "context" + "io" + "time" + + "github.com/minio/madmin-go/v2" + iampolicy "github.com/minio/pkg/iam/policy" +) + +type AdminClientMock struct{} + +var ( + minioServerInfoMock func(ctx context.Context) (madmin.InfoMessage, error) + minioChangePasswordMock func(ctx context.Context, accessKey, secretKey string) error + + minioHelpConfigKVMock func(subSys, key string, envOnly bool) (madmin.Help, error) + minioGetConfigKVMock func(key string) ([]byte, error) + minioSetConfigKVMock func(kv string) (restart bool, err error) + minioDelConfigKVMock func(name string) (err error) + + minioGetLogsMock func(ctx context.Context, node string, lineCnt int, logKind string) <-chan madmin.LogInfo + + minioListGroupsMock func() ([]string, error) + minioUpdateGroupMembersMock func(madmin.GroupAddRemove) error + minioGetGroupDescriptionMock func(group string) (*madmin.GroupDesc, error) + minioSetGroupStatusMock func(group string, status madmin.GroupStatus) error + + minioHealMock func(ctx context.Context, bucket, prefix string, healOpts madmin.HealOpts, clientToken string, + forceStart, forceStop bool) (healStart madmin.HealStartSuccess, healTaskStatus madmin.HealTaskStatus, err error) + + minioServerHealthInfoMock func(ctx context.Context, healthDataTypes []madmin.HealthDataType, deadline time.Duration) (interface{}, string, error) + + minioListPoliciesMock func() (map[string]*iampolicy.Policy, error) + minioGetPolicyMock func(name string) (*iampolicy.Policy, error) + minioRemovePolicyMock func(name string) error + minioAddPolicyMock func(name string, policy *iampolicy.Policy) error + minioSetPolicyMock func(policyName, entityName string, isGroup bool) error + + minioStartProfiling func(profiler madmin.ProfilerType) ([]madmin.StartProfilingResult, error) + minioStopProfiling func() (io.ReadCloser, error) + + minioServiceRestartMock func(ctx context.Context) error + + getSiteReplicationInfo func(ctx context.Context) (*madmin.SiteReplicationInfo, error) + addSiteReplicationInfo func(ctx context.Context, sites []madmin.PeerSite) (*madmin.ReplicateAddStatus, error) + editSiteReplicationInfo func(ctx context.Context, site madmin.PeerInfo) (*madmin.ReplicateEditStatus, error) + deleteSiteReplicationInfoMock func(ctx context.Context, removeReq madmin.SRRemoveReq) (*madmin.ReplicateRemoveStatus, error) + getSiteReplicationStatus func(ctx context.Context, params madmin.SRStatusOptions) (*madmin.SRStatusInfo, error) + + minioListTiersMock func(ctx context.Context) ([]*madmin.TierConfig, error) + minioTierStatsMock func(ctx context.Context) ([]madmin.TierInfo, error) + minioAddTiersMock func(ctx context.Context, tier *madmin.TierConfig) error + minioEditTiersMock func(ctx context.Context, tierName string, creds madmin.TierCreds) error + + minioServiceTraceMock func(ctx context.Context, threshold int64, s3, internal, storage, os, errTrace bool) <-chan madmin.ServiceTraceInfo + + minioListUsersMock func() (map[string]madmin.UserInfo, error) + minioAddUserMock func(accessKey, secreyKey string) error + minioRemoveUserMock func(accessKey string) error + minioGetUserInfoMock func(accessKey string) (madmin.UserInfo, error) + minioSetUserStatusMock func(accessKey string, status madmin.AccountStatus) error + + minioAccountInfoMock func(ctx context.Context) (madmin.AccountInfo, error) + minioAddServiceAccountMock func(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string) (madmin.Credentials, error) + minioListServiceAccountsMock func(ctx context.Context, user string) (madmin.ListServiceAccountsResp, error) + minioDeleteServiceAccountMock func(ctx context.Context, serviceAccount string) error + minioInfoServiceAccountMock func(ctx context.Context, serviceAccount string) (madmin.InfoServiceAccountResp, error) + minioUpdateServiceAccountMock func(ctx context.Context, serviceAccount string, opts madmin.UpdateServiceAccountReq) error +) + +func (ac AdminClientMock) serverInfo(ctx context.Context) (madmin.InfoMessage, error) { + return minioServerInfoMock(ctx) +} + +func (ac AdminClientMock) listRemoteBuckets(ctx context.Context, bucket, arnType string) (targets []madmin.BucketTarget, err error) { + return nil, nil +} + +func (ac AdminClientMock) getRemoteBucket(ctx context.Context, bucket, arnType string) (targets *madmin.BucketTarget, err error) { + return nil, nil +} + +func (ac AdminClientMock) removeRemoteBucket(ctx context.Context, bucket, arn string) error { + return nil +} + +func (ac AdminClientMock) addRemoteBucket(ctx context.Context, bucket string, target *madmin.BucketTarget) (string, error) { + return "", nil +} + +func (ac AdminClientMock) changePassword(ctx context.Context, accessKey, secretKey string) error { + return minioChangePasswordMock(ctx, accessKey, secretKey) +} + +func (ac AdminClientMock) speedtest(ctx context.Context, opts madmin.SpeedtestOpts) (chan madmin.SpeedTestResult, error) { + return nil, nil +} + +func (ac AdminClientMock) verifyTierStatus(ctx context.Context, tierName string) error { + return nil +} + +// mock function helpConfigKV() +func (ac AdminClientMock) helpConfigKV(ctx context.Context, subSys, key string, envOnly bool) (madmin.Help, error) { + return minioHelpConfigKVMock(subSys, key, envOnly) +} + +// mock function getConfigKV() +func (ac AdminClientMock) getConfigKV(ctx context.Context, name string) ([]byte, error) { + return minioGetConfigKVMock(name) +} + +// mock function setConfigKV() +func (ac AdminClientMock) setConfigKV(ctx context.Context, kv string) (restart bool, err error) { + return minioSetConfigKVMock(kv) +} + +func (ac AdminClientMock) delConfigKV(ctx context.Context, name string) (err error) { + return minioDelConfigKVMock(name) +} + +func (ac AdminClientMock) getLogs(ctx context.Context, node string, lineCnt int, logKind string) <-chan madmin.LogInfo { + return minioGetLogsMock(ctx, node, lineCnt, logKind) +} + +func (ac AdminClientMock) listGroups(ctx context.Context) ([]string, error) { + return minioListGroupsMock() +} + +func (ac AdminClientMock) updateGroupMembers(ctx context.Context, req madmin.GroupAddRemove) error { + return minioUpdateGroupMembersMock(req) +} + +func (ac AdminClientMock) getGroupDescription(ctx context.Context, group string) (*madmin.GroupDesc, error) { + return minioGetGroupDescriptionMock(group) +} + +func (ac AdminClientMock) setGroupStatus(ctx context.Context, group string, status madmin.GroupStatus) error { + return minioSetGroupStatusMock(group, status) +} + +func (ac AdminClientMock) heal(ctx context.Context, bucket, prefix string, healOpts madmin.HealOpts, clientToken string, + forceStart, forceStop bool, +) (healStart madmin.HealStartSuccess, healTaskStatus madmin.HealTaskStatus, err error) { + return minioHealMock(ctx, bucket, prefix, healOpts, clientToken, forceStart, forceStop) +} + +func (ac AdminClientMock) serverHealthInfo(ctx context.Context, healthDataTypes []madmin.HealthDataType, deadline time.Duration) (interface{}, string, error) { + return minioServerHealthInfoMock(ctx, healthDataTypes, deadline) +} + +func (ac AdminClientMock) addOrUpdateIDPConfig(ctx context.Context, idpType, cfgName, cfgData string, update bool) (restart bool, err error) { + return true, nil +} + +func (ac AdminClientMock) listIDPConfig(ctx context.Context, idpType string) ([]madmin.IDPListItem, error) { + return []madmin.IDPListItem{{Name: "mock"}}, nil +} + +func (ac AdminClientMock) deleteIDPConfig(ctx context.Context, idpType, cfgName string) (restart bool, err error) { + return true, nil +} + +func (ac AdminClientMock) getIDPConfig(ctx context.Context, cfgType, cfgName string) (c madmin.IDPConfig, err error) { + return madmin.IDPConfig{Info: []madmin.IDPCfgInfo{{Key: "mock", Value: "mock"}}}, nil +} + +func (ac AdminClientMock) kmsStatus(ctx context.Context) (madmin.KMSStatus, error) { + return madmin.KMSStatus{Name: "name", DefaultKeyID: "key", Endpoints: map[string]madmin.ItemState{"localhost": madmin.ItemState("online")}}, nil +} + +func (ac AdminClientMock) kmsAPIs(ctx context.Context) ([]madmin.KMSAPI, error) { + return []madmin.KMSAPI{{Method: "GET", Path: "/mock"}}, nil +} + +func (ac AdminClientMock) kmsMetrics(ctx context.Context) (*madmin.KMSMetrics, error) { + return &madmin.KMSMetrics{}, nil +} + +func (ac AdminClientMock) kmsVersion(ctx context.Context) (*madmin.KMSVersion, error) { + return &madmin.KMSVersion{Version: "test-version"}, nil +} + +func (ac AdminClientMock) createKey(ctx context.Context, key string) error { + return nil +} + +func (ac AdminClientMock) importKey(ctx context.Context, key string, content []byte) error { + return nil +} + +func (ac AdminClientMock) listKeys(ctx context.Context, pattern string) ([]madmin.KMSKeyInfo, error) { + return []madmin.KMSKeyInfo{{ + Name: "name", + CreatedBy: "by", + }}, nil +} + +func (ac AdminClientMock) keyStatus(ctx context.Context, key string) (*madmin.KMSKeyStatus, error) { + return &madmin.KMSKeyStatus{KeyID: "key"}, nil +} + +func (ac AdminClientMock) deleteKey(ctx context.Context, key string) error { + return nil +} + +func (ac AdminClientMock) setKMSPolicy(ctx context.Context, policy string, content []byte) error { + return nil +} + +func (ac AdminClientMock) assignPolicy(ctx context.Context, policy string, content []byte) error { + return nil +} + +func (ac AdminClientMock) describePolicy(ctx context.Context, policy string) (*madmin.KMSDescribePolicy, error) { + return &madmin.KMSDescribePolicy{Name: "name"}, nil +} + +func (ac AdminClientMock) getKMSPolicy(ctx context.Context, policy string) (*madmin.KMSPolicy, error) { + return &madmin.KMSPolicy{Allow: []string{""}, Deny: []string{""}}, nil +} + +func (ac AdminClientMock) listKMSPolicies(ctx context.Context, pattern string) ([]madmin.KMSPolicyInfo, error) { + return []madmin.KMSPolicyInfo{{ + Name: "name", + CreatedBy: "by", + }}, nil +} + +func (ac AdminClientMock) deletePolicy(ctx context.Context, policy string) error { + return nil +} + +func (ac AdminClientMock) describeIdentity(ctx context.Context, identity string) (*madmin.KMSDescribeIdentity, error) { + return &madmin.KMSDescribeIdentity{}, nil +} + +func (ac AdminClientMock) describeSelfIdentity(ctx context.Context) (*madmin.KMSDescribeSelfIdentity, error) { + return &madmin.KMSDescribeSelfIdentity{ + Policy: &madmin.KMSPolicy{Allow: []string{}, Deny: []string{}}, + }, nil +} + +func (ac AdminClientMock) deleteIdentity(ctx context.Context, identity string) error { + return nil +} + +func (ac AdminClientMock) listIdentities(ctx context.Context, pattern string) ([]madmin.KMSIdentityInfo, error) { + return []madmin.KMSIdentityInfo{{Identity: "identity"}}, nil +} + +func (ac AdminClientMock) listPolicies(ctx context.Context) (map[string]*iampolicy.Policy, error) { + return minioListPoliciesMock() +} + +func (ac AdminClientMock) getPolicy(ctx context.Context, name string) (*iampolicy.Policy, error) { + return minioGetPolicyMock(name) +} + +func (ac AdminClientMock) removePolicy(ctx context.Context, name string) error { + return minioRemovePolicyMock(name) +} + +func (ac AdminClientMock) addPolicy(ctx context.Context, name string, policy *iampolicy.Policy) error { + return minioAddPolicyMock(name, policy) +} + +func (ac AdminClientMock) setPolicy(ctx context.Context, policyName, entityName string, isGroup bool) error { + return minioSetPolicyMock(policyName, entityName, isGroup) +} + +// mock function for startProfiling() +func (ac AdminClientMock) startProfiling(ctx context.Context, profiler madmin.ProfilerType) ([]madmin.StartProfilingResult, error) { + return minioStartProfiling(profiler) +} + +// mock function for stopProfiling() +func (ac AdminClientMock) stopProfiling(ctx context.Context) (io.ReadCloser, error) { + return minioStopProfiling() +} + +// mock function of serviceRestart() +func (ac AdminClientMock) serviceRestart(ctx context.Context) error { + return minioServiceRestartMock(ctx) +} + +func (ac AdminClientMock) getSiteReplicationInfo(ctx context.Context) (*madmin.SiteReplicationInfo, error) { + return getSiteReplicationInfo(ctx) +} + +func (ac AdminClientMock) addSiteReplicationInfo(ctx context.Context, sites []madmin.PeerSite) (*madmin.ReplicateAddStatus, error) { + return addSiteReplicationInfo(ctx, sites) +} + +func (ac AdminClientMock) editSiteReplicationInfo(ctx context.Context, site madmin.PeerInfo) (*madmin.ReplicateEditStatus, error) { + return editSiteReplicationInfo(ctx, site) +} + +func (ac AdminClientMock) deleteSiteReplicationInfo(ctx context.Context, removeReq madmin.SRRemoveReq) (*madmin.ReplicateRemoveStatus, error) { + return deleteSiteReplicationInfoMock(ctx, removeReq) +} + +func (ac AdminClientMock) getSiteReplicationStatus(ctx context.Context, params madmin.SRStatusOptions) (*madmin.SRStatusInfo, error) { + return getSiteReplicationStatus(ctx, params) +} + +func (ac AdminClientMock) listTiers(ctx context.Context) ([]*madmin.TierConfig, error) { + return minioListTiersMock(ctx) +} + +func (ac AdminClientMock) tierStats(ctx context.Context) ([]madmin.TierInfo, error) { + return minioTierStatsMock(ctx) +} + +func (ac AdminClientMock) addTier(ctx context.Context, tier *madmin.TierConfig) error { + return minioAddTiersMock(ctx, tier) +} + +func (ac AdminClientMock) editTierCreds(ctx context.Context, tierName string, creds madmin.TierCreds) error { + return minioEditTiersMock(ctx, tierName, creds) +} + +func (ac AdminClientMock) serviceTrace(ctx context.Context, threshold int64, s3, internal, storage, os, errTrace bool) <-chan madmin.ServiceTraceInfo { + return minioServiceTraceMock(ctx, threshold, s3, internal, storage, os, errTrace) +} + +func (ac AdminClientMock) listUsers(ctx context.Context) (map[string]madmin.UserInfo, error) { + return minioListUsersMock() +} + +func (ac AdminClientMock) addUser(ctx context.Context, accessKey, secretKey string) error { + return minioAddUserMock(accessKey, secretKey) +} + +func (ac AdminClientMock) removeUser(ctx context.Context, accessKey string) error { + return minioRemoveUserMock(accessKey) +} + +func (ac AdminClientMock) getUserInfo(ctx context.Context, accessKey string) (madmin.UserInfo, error) { + return minioGetUserInfoMock(accessKey) +} + +func (ac AdminClientMock) setUserStatus(ctx context.Context, accessKey string, status madmin.AccountStatus) error { + return minioSetUserStatusMock(accessKey, status) +} + +func (ac AdminClientMock) AccountInfo(ctx context.Context) (madmin.AccountInfo, error) { + return minioAccountInfoMock(ctx) +} + +func (ac AdminClientMock) addServiceAccount(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string) (madmin.Credentials, error) { + return minioAddServiceAccountMock(ctx, policy, user, accessKey, secretKey) +} + +func (ac AdminClientMock) listServiceAccounts(ctx context.Context, user string) (madmin.ListServiceAccountsResp, error) { + return minioListServiceAccountsMock(ctx, user) +} + +func (ac AdminClientMock) deleteServiceAccount(ctx context.Context, serviceAccount string) error { + return minioDeleteServiceAccountMock(ctx, serviceAccount) +} + +func (ac AdminClientMock) infoServiceAccount(ctx context.Context, serviceAccount string) (madmin.InfoServiceAccountResp, error) { + return minioInfoServiceAccountMock(ctx, serviceAccount) +} + +func (ac AdminClientMock) updateServiceAccount(ctx context.Context, serviceAccount string, opts madmin.UpdateServiceAccountReq) error { + return minioUpdateServiceAccountMock(ctx, serviceAccount, opts) +} diff --git a/restapi/admin_config_test.go b/restapi/admin_config_test.go index d4e603c72..ed5ffdf41 100644 --- a/restapi/admin_config_test.go +++ b/restapi/admin_config_test.go @@ -40,37 +40,9 @@ const ( PostgresQueueLimit = "queue_limit" ) -// assigning mock at runtime instead of compile time -var minioHelpConfigKVMock func(subSys, key string, envOnly bool) (madmin.Help, error) - -var ( - minioGetConfigKVMock func(key string) ([]byte, error) - minioSetConfigKVMock func(kv string) (restart bool, err error) - minioDelConfigKVMock func(name string) (err error) -) - -// mock function helpConfigKV() -func (ac adminClientMock) helpConfigKV(ctx context.Context, subSys, key string, envOnly bool) (madmin.Help, error) { - return minioHelpConfigKVMock(subSys, key, envOnly) -} - -// mock function getConfigKV() -func (ac adminClientMock) getConfigKV(ctx context.Context, name string) ([]byte, error) { - return minioGetConfigKVMock(name) -} - -// mock function setConfigKV() -func (ac adminClientMock) setConfigKV(ctx context.Context, kv string) (restart bool, err error) { - return minioSetConfigKVMock(kv) -} - -func (ac adminClientMock) delConfigKV(ctx context.Context, name string) (err error) { - return minioDelConfigKVMock(name) -} - func TestListConfig(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "listConfig()" // Test-1 : listConfig() get list of two configurations and ensure is output correctly configListMock := []madmin.HelpKV{ @@ -119,7 +91,7 @@ func TestListConfig(t *testing.T) { func TestSetConfig(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "setConfig()" // mock function response from setConfig() minioSetConfigKVMock = func(kv string) (restart bool, err error) { @@ -169,7 +141,7 @@ func TestSetConfig(t *testing.T) { func TestDelConfig(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "resetConfig()" // mock function response from setConfig() minioDelConfigKVMock = func(name string) (err error) { @@ -258,7 +230,7 @@ func Test_buildConfig(t *testing.T) { func Test_setConfigWithARN(t *testing.T) { assert := assert.New(t) - client := adminClientMock{} + client := AdminClientMock{} type args struct { ctx context.Context @@ -369,7 +341,7 @@ func Test_setConfigWithARN(t *testing.T) { } func Test_getConfig(t *testing.T) { - client := adminClientMock{} + client := AdminClientMock{} type args struct { client MinioAdmin name string diff --git a/restapi/admin_console_test.go b/restapi/admin_console_test.go index dc789e1a1..6b482a909 100644 --- a/restapi/admin_console_test.go +++ b/restapi/admin_console_test.go @@ -26,17 +26,9 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioGetLogsMock func(ctx context.Context, node string, lineCnt int, logKind string) <-chan madmin.LogInfo - -// mock function of listPolicies() -func (ac adminClientMock) getLogs(ctx context.Context, node string, lineCnt int, logKind string) <-chan madmin.LogInfo { - return minioGetLogsMock(ctx, node, lineCnt, logKind) -} - func TestAdminConsoleLog(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} mockWSConn := mockConn{} function := "startConsoleLog(ctx, )" ctx, cancel := context.WithCancel(context.Background()) diff --git a/restapi/admin_groups_test.go b/restapi/admin_groups_test.go index ca1fd8ee9..2eb76f675 100644 --- a/restapi/admin_groups_test.go +++ b/restapi/admin_groups_test.go @@ -28,38 +28,9 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioListGroupsMock func() ([]string, error) - -var ( - minioUpdateGroupMembersMock func(madmin.GroupAddRemove) error - minioGetGroupDescriptionMock func(group string) (*madmin.GroupDesc, error) - minioSetGroupStatusMock func(group string, status madmin.GroupStatus) error -) - -// mock function of listGroups() -func (ac adminClientMock) listGroups(ctx context.Context) ([]string, error) { - return minioListGroupsMock() -} - -// mock function of updateGroupMembers() -func (ac adminClientMock) updateGroupMembers(ctx context.Context, req madmin.GroupAddRemove) error { - return minioUpdateGroupMembersMock(req) -} - -// mock function of getGroupDescription() -func (ac adminClientMock) getGroupDescription(ctx context.Context, group string) (*madmin.GroupDesc, error) { - return minioGetGroupDescriptionMock(group) -} - -// mock function setGroupStatus() -func (ac adminClientMock) setGroupStatus(ctx context.Context, group string, status madmin.GroupStatus) error { - return minioSetGroupStatusMock(group, status) -} - func TestListGroups(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1 : listGroups() Get response from minio client with two Groups and return the same number on listGroups() @@ -95,7 +66,7 @@ func TestListGroups(t *testing.T) { func TestAddGroup(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1 : addGroup() add a new group with two members @@ -122,7 +93,7 @@ func TestAddGroup(t *testing.T) { func TestRemoveGroup(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1 : removeGroup() remove group assume it has no members @@ -147,7 +118,7 @@ func TestRemoveGroup(t *testing.T) { func TestGroupInfo(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1 : groupInfo() get group info @@ -184,7 +155,7 @@ func TestGroupInfo(t *testing.T) { func TestUpdateGroup(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1 : addOrDeleteMembers() update group members add user3 and delete user2 @@ -280,7 +251,7 @@ func TestUpdateGroup(t *testing.T) { func TestSetGroupStatus(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "setGroupStatus()" groupName := "acmeGroup" ctx, cancel := context.WithCancel(context.Background()) diff --git a/restapi/admin_heal_test.go b/restapi/admin_heal_test.go index 68471783a..db4de91b2 100644 --- a/restapi/admin_heal_test.go +++ b/restapi/admin_heal_test.go @@ -29,20 +29,10 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioHealMock func(ctx context.Context, bucket, prefix string, healOpts madmin.HealOpts, clientToken string, - forceStart, forceStop bool) (healStart madmin.HealStartSuccess, healTaskStatus madmin.HealTaskStatus, err error) - -func (ac adminClientMock) heal(ctx context.Context, bucket, prefix string, healOpts madmin.HealOpts, clientToken string, - forceStart, forceStop bool, -) (healStart madmin.HealStartSuccess, healTaskStatus madmin.HealTaskStatus, err error) { - return minioHealMock(ctx, bucket, prefix, healOpts, clientToken, forceStart, forceStop) -} - func TestHeal(t *testing.T) { assert := assert.New(t) - client := adminClientMock{} + client := AdminClientMock{} mockWSConn := mockConn{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/restapi/admin_health_info_test.go b/restapi/admin_health_info_test.go index 8f0231e7e..3459c6722 100644 --- a/restapi/admin_health_info_test.go +++ b/restapi/admin_health_info_test.go @@ -27,20 +27,12 @@ import ( madmin "github.com/minio/madmin-go/v2" ) -// assigning mock at runtime instead of compile time -var minioServerHealthInfoMock func(ctx context.Context, healthDataTypes []madmin.HealthDataType, deadline time.Duration) (interface{}, string, error) - -// mock function serverHealthInfo -func (ac adminClientMock) serverHealthInfo(ctx context.Context, healthDataTypes []madmin.HealthDataType, deadline time.Duration) (interface{}, string, error) { - return minioServerHealthInfoMock(ctx, healthDataTypes, deadline) -} - func Test_serverHealthInfo(t *testing.T) { var testReceiver chan madmin.HealthInfo ctx, cancel := context.WithCancel(context.Background()) defer cancel() - client := adminClientMock{} + client := AdminClientMock{} mockWSConn := mockConn{} deadlineDuration, _ := time.ParseDuration("1h") diff --git a/restapi/admin_idp_test.go b/restapi/admin_idp_test.go index 6630c9354..fc3a14814 100644 --- a/restapi/admin_idp_test.go +++ b/restapi/admin_idp_test.go @@ -26,39 +26,22 @@ import ( "github.com/minio/console/models" "github.com/minio/console/restapi/operations" "github.com/minio/console/restapi/operations/idp" - "github.com/minio/madmin-go/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) -func (ac adminClientMock) addOrUpdateIDPConfig(ctx context.Context, idpType, cfgName, cfgData string, update bool) (restart bool, err error) { - return true, nil -} - -func (ac adminClientMock) listIDPConfig(ctx context.Context, idpType string) ([]madmin.IDPListItem, error) { - return []madmin.IDPListItem{{Name: "mock"}}, nil -} - -func (ac adminClientMock) deleteIDPConfig(ctx context.Context, idpType, cfgName string) (restart bool, err error) { - return true, nil -} - -func (ac adminClientMock) getIDPConfig(ctx context.Context, cfgType, cfgName string) (c madmin.IDPConfig, err error) { - return madmin.IDPConfig{Info: []madmin.IDPCfgInfo{{Key: "mock", Value: "mock"}}}, nil -} - type IDPTestSuite struct { suite.Suite assert *assert.Assertions currentServer string isServerSet bool server *httptest.Server - adminClient adminClientMock + adminClient AdminClientMock } func (suite *IDPTestSuite) SetupSuite() { suite.assert = assert.New(suite.T()) - suite.adminClient = adminClientMock{} + suite.adminClient = AdminClientMock{} minioServiceRestartMock = func(ctx context.Context) error { return nil } diff --git a/restapi/admin_info_test.go b/restapi/admin_info_test.go index 83b55013c..2c0f6ced8 100644 --- a/restapi/admin_info_test.go +++ b/restapi/admin_info_test.go @@ -38,12 +38,12 @@ type AdminInfoTestSuite struct { isServerSet bool isPrometheusRequest bool server *httptest.Server - adminClient adminClientMock + adminClient AdminClientMock } func (suite *AdminInfoTestSuite) SetupSuite() { suite.assert = assert.New(suite.T()) - suite.adminClient = adminClientMock{} + suite.adminClient = AdminClientMock{} minioServerInfoMock = func(ctx context.Context) (madmin.InfoMessage, error) { return madmin.InfoMessage{ Servers: []madmin.ServerProperties{{ diff --git a/restapi/admin_kms_test.go b/restapi/admin_kms_test.go index 4bc6b6bfa..8fa732596 100644 --- a/restapi/admin_kms_test.go +++ b/restapi/admin_kms_test.go @@ -26,107 +26,22 @@ import ( "github.com/minio/console/models" "github.com/minio/console/restapi/operations" kmsAPI "github.com/minio/console/restapi/operations/k_m_s" - "github.com/minio/madmin-go/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) -func (ac adminClientMock) kmsStatus(ctx context.Context) (madmin.KMSStatus, error) { - return madmin.KMSStatus{Name: "name", DefaultKeyID: "key", Endpoints: map[string]madmin.ItemState{"localhost": madmin.ItemState("online")}}, nil -} - -func (ac adminClientMock) kmsAPIs(ctx context.Context) ([]madmin.KMSAPI, error) { - return []madmin.KMSAPI{{Method: "GET", Path: "/mock"}}, nil -} - -func (ac adminClientMock) kmsMetrics(ctx context.Context) (*madmin.KMSMetrics, error) { - return &madmin.KMSMetrics{}, nil -} - -func (ac adminClientMock) kmsVersion(ctx context.Context) (*madmin.KMSVersion, error) { - return &madmin.KMSVersion{Version: "test-version"}, nil -} - -func (ac adminClientMock) createKey(ctx context.Context, key string) error { - return nil -} - -func (ac adminClientMock) importKey(ctx context.Context, key string, content []byte) error { - return nil -} - -func (ac adminClientMock) listKeys(ctx context.Context, pattern string) ([]madmin.KMSKeyInfo, error) { - return []madmin.KMSKeyInfo{{ - Name: "name", - CreatedBy: "by", - }}, nil -} - -func (ac adminClientMock) keyStatus(ctx context.Context, key string) (*madmin.KMSKeyStatus, error) { - return &madmin.KMSKeyStatus{KeyID: "key"}, nil -} - -func (ac adminClientMock) deleteKey(ctx context.Context, key string) error { - return nil -} - -func (ac adminClientMock) setKMSPolicy(ctx context.Context, policy string, content []byte) error { - return nil -} - -func (ac adminClientMock) assignPolicy(ctx context.Context, policy string, content []byte) error { - return nil -} - -func (ac adminClientMock) describePolicy(ctx context.Context, policy string) (*madmin.KMSDescribePolicy, error) { - return &madmin.KMSDescribePolicy{Name: "name"}, nil -} - -func (ac adminClientMock) getKMSPolicy(ctx context.Context, policy string) (*madmin.KMSPolicy, error) { - return &madmin.KMSPolicy{Allow: []string{""}, Deny: []string{""}}, nil -} - -func (ac adminClientMock) listKMSPolicies(ctx context.Context, pattern string) ([]madmin.KMSPolicyInfo, error) { - return []madmin.KMSPolicyInfo{{ - Name: "name", - CreatedBy: "by", - }}, nil -} - -func (ac adminClientMock) deletePolicy(ctx context.Context, policy string) error { - return nil -} - -func (ac adminClientMock) describeIdentity(ctx context.Context, identity string) (*madmin.KMSDescribeIdentity, error) { - return &madmin.KMSDescribeIdentity{}, nil -} - -func (ac adminClientMock) describeSelfIdentity(ctx context.Context) (*madmin.KMSDescribeSelfIdentity, error) { - return &madmin.KMSDescribeSelfIdentity{ - Policy: &madmin.KMSPolicy{Allow: []string{}, Deny: []string{}}, - }, nil -} - -func (ac adminClientMock) deleteIdentity(ctx context.Context, identity string) error { - return nil -} - -func (ac adminClientMock) listIdentities(ctx context.Context, pattern string) ([]madmin.KMSIdentityInfo, error) { - return []madmin.KMSIdentityInfo{{Identity: "identity"}}, nil -} - type KMSTestSuite struct { suite.Suite assert *assert.Assertions currentServer string isServerSet bool server *httptest.Server - adminClient adminClientMock + adminClient AdminClientMock } func (suite *KMSTestSuite) SetupSuite() { suite.assert = assert.New(suite.T()) - suite.adminClient = adminClientMock{} + suite.adminClient = AdminClientMock{} } func (suite *KMSTestSuite) SetupTest() { diff --git a/restapi/admin_notification_endpoints_test.go b/restapi/admin_notification_endpoints_test.go index 898573d69..46dfd307a 100644 --- a/restapi/admin_notification_endpoints_test.go +++ b/restapi/admin_notification_endpoints_test.go @@ -29,7 +29,7 @@ import ( ) func Test_addNotificationEndpoint(t *testing.T) { - client := adminClientMock{} + client := AdminClientMock{} type args struct { ctx context.Context diff --git a/restapi/admin_policies_test.go b/restapi/admin_policies_test.go index c3623a994..a65858abf 100644 --- a/restapi/admin_policies_test.go +++ b/restapi/admin_policies_test.go @@ -30,46 +30,11 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioListPoliciesMock func() (map[string]*iampolicy.Policy, error) - -var ( - minioGetPolicyMock func(name string) (*iampolicy.Policy, error) - minioRemovePolicyMock func(name string) error - minioAddPolicyMock func(name string, policy *iampolicy.Policy) error - minioSetPolicyMock func(policyName, entityName string, isGroup bool) error -) - -// mock function of listPolicies() -func (ac adminClientMock) listPolicies(ctx context.Context) (map[string]*iampolicy.Policy, error) { - return minioListPoliciesMock() -} - -// mock function of getPolicy() -func (ac adminClientMock) getPolicy(ctx context.Context, name string) (*iampolicy.Policy, error) { - return minioGetPolicyMock(name) -} - -// mock function of removePolicy() -func (ac adminClientMock) removePolicy(ctx context.Context, name string) error { - return minioRemovePolicyMock(name) -} - -// mock function of addPolicy() -func (ac adminClientMock) addPolicy(ctx context.Context, name string, policy *iampolicy.Policy) error { - return minioAddPolicyMock(name, policy) -} - -// mock function SetPolicy() -func (ac adminClientMock) setPolicy(ctx context.Context, policyName, entityName string, isGroup bool) error { - return minioSetPolicyMock(policyName, entityName, isGroup) -} - func TestListPolicies(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() funcAssert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} // mock function response from listPolicies() minioListPoliciesMock = func() (map[string]*iampolicy.Policy, error) { var readonly iampolicy.Policy @@ -115,7 +80,7 @@ func TestRemovePolicy(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() funcAssert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} // Test-1 : removePolicy() remove an existing policy policyToRemove := "console-policy" minioRemovePolicyMock = func(name string) error { @@ -138,7 +103,7 @@ func TestAddPolicy(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() funcAssert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} policyName := "new-policy" policyDefinition := "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:GetBucketLocation\",\"s3:GetObject\",\"s3:ListAllMyBuckets\"],\"Resource\":[\"arn:aws:s3:::*\"]}]}" minioAddPolicyMock = func(name string, policy *iampolicy.Policy) error { @@ -195,7 +160,7 @@ func TestSetPolicy(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() funcAssert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} policyName := "readOnly" entityName := "alevsk" entityObject := models.PolicyEntityUser @@ -235,7 +200,7 @@ func TestSetPolicy(t *testing.T) { func Test_SetPolicyMultiple(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - adminClient := adminClientMock{} + adminClient := AdminClientMock{} type args struct { policyName string diff --git a/restapi/admin_profiling_test.go b/restapi/admin_profiling_test.go index 2ad65b63c..19677fad6 100644 --- a/restapi/admin_profiling_test.go +++ b/restapi/admin_profiling_test.go @@ -29,21 +29,6 @@ import ( "github.com/stretchr/testify/assert" ) -var ( - minioStartProfiling func(profiler madmin.ProfilerType) ([]madmin.StartProfilingResult, error) - minioStopProfiling func() (io.ReadCloser, error) -) - -// mock function for startProfiling() -func (ac adminClientMock) startProfiling(ctx context.Context, profiler madmin.ProfilerType) ([]madmin.StartProfilingResult, error) { - return minioStartProfiling(profiler) -} - -// mock function for stopProfiling() -func (ac adminClientMock) stopProfiling(ctx context.Context) (io.ReadCloser, error) { - return minioStopProfiling() -} - // Implementing fake closingBuffer to mock stopProfiling() (io.ReadCloser, error) type ClosingBuffer struct { *bytes.Buffer @@ -58,7 +43,7 @@ func TestStartProfiling(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} mockWSConn := mockConn{} function := "startProfiling()" testOptions := &profileOptions{ diff --git a/restapi/admin_service_test.go b/restapi/admin_service_test.go index 512e8a658..306ec9296 100644 --- a/restapi/admin_service_test.go +++ b/restapi/admin_service_test.go @@ -25,17 +25,9 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioServiceRestartMock func(ctx context.Context) error - -// mock function of serviceRestart() -func (ac adminClientMock) serviceRestart(ctx context.Context) error { - return minioServiceRestartMock(ctx) -} - func TestServiceRestart(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx := context.Background() function := "serviceRestart()" // Test-1 : serviceRestart() restart services no errors diff --git a/restapi/admin_site_replication_test.go b/restapi/admin_site_replication_test.go index 0f515515b..c08676a26 100644 --- a/restapi/admin_site_replication_test.go +++ b/restapi/admin_site_replication_test.go @@ -27,41 +27,10 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var getSiteReplicationInfo func(ctx context.Context) (*madmin.SiteReplicationInfo, error) - -func (ac adminClientMock) getSiteReplicationInfo(ctx context.Context) (*madmin.SiteReplicationInfo, error) { - return getSiteReplicationInfo(ctx) -} - -var addSiteReplicationInfo func(ctx context.Context, sites []madmin.PeerSite) (*madmin.ReplicateAddStatus, error) - -func (ac adminClientMock) addSiteReplicationInfo(ctx context.Context, sites []madmin.PeerSite) (*madmin.ReplicateAddStatus, error) { - return addSiteReplicationInfo(ctx, sites) -} - -var editSiteReplicationInfo func(ctx context.Context, site madmin.PeerInfo) (*madmin.ReplicateEditStatus, error) - -func (ac adminClientMock) editSiteReplicationInfo(ctx context.Context, site madmin.PeerInfo) (*madmin.ReplicateEditStatus, error) { - return editSiteReplicationInfo(ctx, site) -} - -var deleteSiteReplicationInfoMock func(ctx context.Context, removeReq madmin.SRRemoveReq) (*madmin.ReplicateRemoveStatus, error) - -func (ac adminClientMock) deleteSiteReplicationInfo(ctx context.Context, removeReq madmin.SRRemoveReq) (*madmin.ReplicateRemoveStatus, error) { - return deleteSiteReplicationInfoMock(ctx, removeReq) -} - -var getSiteReplicationStatus func(ctx context.Context, params madmin.SRStatusOptions) (*madmin.SRStatusInfo, error) - -func (ac adminClientMock) getSiteReplicationStatus(ctx context.Context, params madmin.SRStatusOptions) (*madmin.SRStatusInfo, error) { - return getSiteReplicationStatus(ctx, params) -} - func TestGetSiteReplicationInfo(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "getSiteReplicationInfo()" ctx, cancel := context.WithCancel(context.Background()) @@ -117,7 +86,7 @@ func TestGetSiteReplicationInfo(t *testing.T) { func TestAddSiteReplicationInfo(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "addSiteReplicationInfo()" ctx, cancel := context.WithCancel(context.Background()) @@ -166,7 +135,7 @@ func TestAddSiteReplicationInfo(t *testing.T) { func TestEditSiteReplicationInfo(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "editSiteReplicationInfo()" ctx, cancel := context.WithCancel(context.Background()) @@ -204,7 +173,7 @@ func TestEditSiteReplicationInfo(t *testing.T) { func TestDeleteSiteReplicationInfo(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "deleteSiteReplicationInfo()" ctx, cancel := context.WithCancel(context.Background()) @@ -241,7 +210,7 @@ func TestDeleteSiteReplicationInfo(t *testing.T) { func TestSiteReplicationStatus(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "getSiteReplicationStatus()" ctx, cancel := context.WithCancel(context.Background()) diff --git a/restapi/admin_subnet_test.go b/restapi/admin_subnet_test.go index 93265dc83..031a08b12 100644 --- a/restapi/admin_subnet_test.go +++ b/restapi/admin_subnet_test.go @@ -38,12 +38,12 @@ type AdminSubnetTestSuite struct { currentServer string isServerSet bool server *httptest.Server - adminClient adminClientMock + adminClient AdminClientMock } func (suite *AdminSubnetTestSuite) SetupSuite() { suite.assert = assert.New(suite.T()) - suite.adminClient = adminClientMock{} + suite.adminClient = AdminClientMock{} minioGetConfigKVMock = func(key string) ([]byte, error) { return []byte("subnet license=mock api_key=mock proxy=http://mock.com"), nil } diff --git a/restapi/admin_test.go b/restapi/admin_test.go deleted file mode 100644 index dd255ec24..000000000 --- a/restapi/admin_test.go +++ /dev/null @@ -1,65 +0,0 @@ -// This file is part of MinIO Console Server -// Copyright (c) 2021 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package restapi - -import ( - "context" - - "github.com/minio/madmin-go/v2" -) - -// Define a mock struct of Admin Client interface implementation -type adminClientMock struct{} - -// Common mocks - -// assigning mock at runtime instead of compile time -var minioServerInfoMock func(ctx context.Context) (madmin.InfoMessage, error) - -// mock function of serverInfo() -func (ac adminClientMock) serverInfo(ctx context.Context) (madmin.InfoMessage, error) { - return minioServerInfoMock(ctx) -} - -func (ac adminClientMock) listRemoteBuckets(ctx context.Context, bucket, arnType string) (targets []madmin.BucketTarget, err error) { - return nil, nil -} - -func (ac adminClientMock) getRemoteBucket(ctx context.Context, bucket, arnType string) (targets *madmin.BucketTarget, err error) { - return nil, nil -} - -func (ac adminClientMock) removeRemoteBucket(ctx context.Context, bucket, arn string) error { - return nil -} - -func (ac adminClientMock) addRemoteBucket(ctx context.Context, bucket string, target *madmin.BucketTarget) (string, error) { - return "", nil -} - -func (ac adminClientMock) changePassword(ctx context.Context, accessKey, secretKey string) error { - return minioChangePasswordMock(ctx, accessKey, secretKey) -} - -func (ac adminClientMock) speedtest(ctx context.Context, opts madmin.SpeedtestOpts) (chan madmin.SpeedTestResult, error) { - return nil, nil -} - -// implements madmin.VerifyTier() - WILL ALWAYS RETURN TRUE AS SET NOW, FIX IF USED IN TEST -func (ac adminClientMock) verifyTierStatus(ctx context.Context, tierName string) error { - return nil -} diff --git a/restapi/admin_tiers_test.go b/restapi/admin_tiers_test.go index 803d97c2c..44746c8e2 100644 --- a/restapi/admin_tiers_test.go +++ b/restapi/admin_tiers_test.go @@ -28,42 +28,10 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioListTiersMock func(ctx context.Context) ([]*madmin.TierConfig, error) - -// mock function of listTiers() -func (ac adminClientMock) listTiers(ctx context.Context) ([]*madmin.TierConfig, error) { - return minioListTiersMock(ctx) -} - -// assigning mock at runtime instead of compile time -var minioTierStatsMock func(ctx context.Context) ([]madmin.TierInfo, error) - -// mock function of tierStats() -func (ac adminClientMock) tierStats(ctx context.Context) ([]madmin.TierInfo, error) { - return minioTierStatsMock(ctx) -} - -// assigning mock at runtime instead of compile time -var minioAddTiersMock func(ctx context.Context, tier *madmin.TierConfig) error - -// mock function of addTier() -func (ac adminClientMock) addTier(ctx context.Context, tier *madmin.TierConfig) error { - return minioAddTiersMock(ctx, tier) -} - -// assigning mock at runtime instead of compile time -var minioEditTiersMock func(ctx context.Context, tierName string, creds madmin.TierCreds) error - -// mock function of editTierCreds() -func (ac adminClientMock) editTierCreds(ctx context.Context, tierName string, creds madmin.TierCreds) error { - return minioEditTiersMock(ctx, tierName, creds) -} - func TestGetTiers(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "getTiers()" ctx, cancel := context.WithCancel(context.Background()) @@ -187,7 +155,7 @@ func TestGetTiers(t *testing.T) { func TestAddTier(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "addTier()" ctx, cancel := context.WithCancel(context.Background()) @@ -229,7 +197,7 @@ func TestAddTier(t *testing.T) { func TestUpdateTierCreds(t *testing.T) { assert := assert.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "editTierCredentials()" ctx, cancel := context.WithCancel(context.Background()) diff --git a/restapi/admin_trace_test.go b/restapi/admin_trace_test.go index 3c7a18985..1e0884af3 100644 --- a/restapi/admin_trace_test.go +++ b/restapi/admin_trace_test.go @@ -26,17 +26,9 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioServiceTraceMock func(ctx context.Context, threshold int64, s3, internal, storage, os, errTrace bool) <-chan madmin.ServiceTraceInfo - -// mock function of listPolicies() -func (ac adminClientMock) serviceTrace(ctx context.Context, threshold int64, s3, internal, storage, os, errTrace bool) <-chan madmin.ServiceTraceInfo { - return minioServiceTraceMock(ctx, threshold, s3, internal, storage, os, errTrace) -} - func TestAdminTrace(t *testing.T) { assert := assert.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} mockWSConn := mockConn{} function := "startTraceInfo(ctx, )" ctx, cancel := context.WithCancel(context.Background()) diff --git a/restapi/admin_users_test.go b/restapi/admin_users_test.go index 0c49dd421..24217613a 100644 --- a/restapi/admin_users_test.go +++ b/restapi/admin_users_test.go @@ -29,44 +29,9 @@ import ( asrt "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioListUsersMock func() (map[string]madmin.UserInfo, error) - -var ( - minioAddUserMock func(accessKey, secreyKey string) error - minioRemoveUserMock func(accessKey string) error - minioGetUserInfoMock func(accessKey string) (madmin.UserInfo, error) - minioSetUserStatusMock func(accessKey string, status madmin.AccountStatus) error -) - -// mock function of listUsers() -func (ac adminClientMock) listUsers(ctx context.Context) (map[string]madmin.UserInfo, error) { - return minioListUsersMock() -} - -// mock function of addUser() -func (ac adminClientMock) addUser(ctx context.Context, accessKey, secretKey string) error { - return minioAddUserMock(accessKey, secretKey) -} - -// mock function of removeUser() -func (ac adminClientMock) removeUser(ctx context.Context, accessKey string) error { - return minioRemoveUserMock(accessKey) -} - -// mock function of getUserInfo() -func (ac adminClientMock) getUserInfo(ctx context.Context, accessKey string) (madmin.UserInfo, error) { - return minioGetUserInfoMock(accessKey) -} - -// mock function of setUserStatus() -func (ac adminClientMock) setUserStatus(ctx context.Context, accessKey string, status madmin.AccountStatus) error { - return minioSetUserStatusMock(accessKey, status) -} - func TestListUsers(t *testing.T) { assert := asrt.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1 : listUsers() Get response from minio client with two users and return the same number on listUsers() @@ -120,7 +85,7 @@ func TestListUsers(t *testing.T) { func TestAddUser(t *testing.T) { assert := asrt.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Test-1: valid case of adding a user with a proper access key @@ -203,7 +168,7 @@ func TestAddUser(t *testing.T) { func TestRemoveUser(t *testing.T) { assert := asrt.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() function := "removeUser()" @@ -232,7 +197,7 @@ func TestRemoveUser(t *testing.T) { func TestUserGroups(t *testing.T) { assert := asrt.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -294,7 +259,7 @@ func TestUserGroups(t *testing.T) { func TestGetUserInfo(t *testing.T) { assert := asrt.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -340,7 +305,7 @@ func TestGetUserInfo(t *testing.T) { func TestSetUserStatus(t *testing.T) { assert := asrt.New(t) - adminClient := adminClientMock{} + adminClient := AdminClientMock{} function := "setUserStatus()" userName := "userName123" ctx, cancel := context.WithCancel(context.Background()) @@ -383,7 +348,7 @@ func TestSetUserStatus(t *testing.T) { func TestUserGroupsBulk(t *testing.T) { assert := asrt.New(t) // mock minIO client - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -416,7 +381,7 @@ func TestListUsersWithAccessToBucket(t *testing.T) { assert := asrt.New(t) ctx, cancel := context.WithCancel(context.Background()) defer cancel() - adminClient := adminClientMock{} + adminClient := AdminClientMock{} user1 := madmin.UserInfo{ SecretKey: "testtest", PolicyName: "consoleAdmin,testPolicy,redundantPolicy", diff --git a/restapi/user_account_test.go b/restapi/user_account_test.go index 8f7e95948..370a1919c 100644 --- a/restapi/user_account_test.go +++ b/restapi/user_account_test.go @@ -27,8 +27,6 @@ import ( "github.com/stretchr/testify/assert" ) -var minioChangePasswordMock func(ctx context.Context, accessKey, secretKey string) error - func Test_getChangePasswordResponse(t *testing.T) { assert := assert.New(t) session := &models.Principal{ @@ -51,10 +49,10 @@ func Test_getChangePasswordResponse(t *testing.T) { } func Test_changePassword(t *testing.T) { - client := adminClientMock{} + client := AdminClientMock{} type args struct { ctx context.Context - client adminClientMock + client AdminClientMock session *models.Principal currentSecretKey string newSecretKey string diff --git a/restapi/user_buckets_test.go b/restapi/user_buckets_test.go index acfd281a3..2e6411a36 100644 --- a/restapi/user_buckets_test.go +++ b/restapi/user_buckets_test.go @@ -114,13 +114,6 @@ func (c s3ClientMock) setVersioning(ctx context.Context, state string) *probe.Er return minioSetVersioningMock(ctx, state) } -var minioAccountInfoMock func(ctx context.Context) (madmin.AccountInfo, error) - -// mock function of dataUsageInfo() needed for list bucket's usage -func (ac adminClientMock) AccountInfo(ctx context.Context) (madmin.AccountInfo, error) { - return minioAccountInfoMock(ctx) -} - func (mc minioClientMock) GetBucketTagging(ctx context.Context, bucketName string) (*tags.Tags, error) { return minioGetBucketTaggingMock(ctx, bucketName) } @@ -193,7 +186,7 @@ func TestBucketInfo(t *testing.T) { assert := assert.New(t) // mock minIO client minClient := minioClientMock{} - adminClient := adminClientMock{} + adminClient := AdminClientMock{} ctx := context.Background() function := "getBucketInfo()" @@ -1176,7 +1169,7 @@ func Test_getAccountBuckets(t *testing.T) { minioAccountInfoMock = func(ctx context.Context) (madmin.AccountInfo, error) { return tt.args.mockBucketList, tt.args.mockError } - client := adminClientMock{} + client := AdminClientMock{} got, err := getAccountBuckets(tt.args.ctx, client) if !tt.wantErr(t, err, fmt.Sprintf("getAccountBuckets(%v, %v)", tt.args.ctx, client)) { diff --git a/restapi/user_login_test.go b/restapi/user_login_test.go index 9f293edab..75752969a 100644 --- a/restapi/user_login_test.go +++ b/restapi/user_login_test.go @@ -149,7 +149,7 @@ func Test_validateUserAgainstIDP(t *testing.T) { } func Test_getAccountInfo(t *testing.T) { - client := adminClientMock{} + client := AdminClientMock{} type args struct { ctx context.Context client MinioAdmin diff --git a/restapi/user_service_accounts_test.go b/restapi/user_service_accounts_test.go index 1d1e578a6..bd4f23efb 100644 --- a/restapi/user_service_accounts_test.go +++ b/restapi/user_service_accounts_test.go @@ -27,45 +27,10 @@ import ( "github.com/stretchr/testify/assert" ) -// assigning mock at runtime instead of compile time -var minioAddServiceAccountMock func(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string) (madmin.Credentials, error) - -var ( - minioListServiceAccountsMock func(ctx context.Context, user string) (madmin.ListServiceAccountsResp, error) - minioDeleteServiceAccountMock func(ctx context.Context, serviceAccount string) error - minioInfoServiceAccountMock func(ctx context.Context, serviceAccount string) (madmin.InfoServiceAccountResp, error) - minioUpdateServiceAccountMock func(ctx context.Context, serviceAccount string, opts madmin.UpdateServiceAccountReq) error -) - -// mock function of AddServiceAccount() -func (ac adminClientMock) addServiceAccount(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string) (madmin.Credentials, error) { - return minioAddServiceAccountMock(ctx, policy, user, accessKey, secretKey) -} - -// mock function of ListServiceAccounts() -func (ac adminClientMock) listServiceAccounts(ctx context.Context, user string) (madmin.ListServiceAccountsResp, error) { - return minioListServiceAccountsMock(ctx, user) -} - -// mock function of DeleteServiceAccount() -func (ac adminClientMock) deleteServiceAccount(ctx context.Context, serviceAccount string) error { - return minioDeleteServiceAccountMock(ctx, serviceAccount) -} - -// mock function of InfoServiceAccount() -func (ac adminClientMock) infoServiceAccount(ctx context.Context, serviceAccount string) (madmin.InfoServiceAccountResp, error) { - return minioInfoServiceAccountMock(ctx, serviceAccount) -} - -// mock function of UpdateServiceAccount() -func (ac adminClientMock) updateServiceAccount(ctx context.Context, serviceAccount string, opts madmin.UpdateServiceAccountReq) error { - return minioUpdateServiceAccountMock(ctx, serviceAccount, opts) -} - func TestAddServiceAccount(t *testing.T) { assert := assert.New(t) // mock minIO client - client := adminClientMock{} + client := AdminClientMock{} function := "createServiceAccount()" // Test-1: createServiceAccount create a service account by assigning it a policy ctx, cancel := context.WithCancel(context.Background()) @@ -115,7 +80,7 @@ func TestAddServiceAccount(t *testing.T) { func TestListServiceAccounts(t *testing.T) { assert := assert.New(t) // mock minIO client - client := adminClientMock{} + client := AdminClientMock{} function := "getUserServiceAccounts()" // Test-1: getUserServiceAccounts list serviceaccounts for a user @@ -148,7 +113,7 @@ func TestListServiceAccounts(t *testing.T) { func TestDeleteServiceAccount(t *testing.T) { assert := assert.New(t) // mock minIO client - client := adminClientMock{} + client := AdminClientMock{} function := "deleteServiceAccount()" ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -175,7 +140,7 @@ func TestDeleteServiceAccount(t *testing.T) { func TestGetServiceAccountPolicy(t *testing.T) { assert := assert.New(t) // mock minIO client - client := adminClientMock{} + client := AdminClientMock{} function := "getServiceAccountPolicy()" // Test-1: getServiceAccountPolicy list serviceaccounts for a user