Skip to content

Commit

Permalink
refactor: azure resources repository
Browse files Browse the repository at this point in the history
  • Loading branch information
sundowndev committed Oct 1, 2021
1 parent b483ab2 commit 1e0eb3e
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 37 deletions.
2 changes: 1 addition & 1 deletion pkg/remote/azurerm/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func Init(

storageAccountRepo := repository.NewStorageRepository(con, providerConfig, c)
networkRepo := repository.NewNetworkRepository(con, providerConfig, c)
armResourcesRepo := repository.NewArmResourcesRepository(con, providerConfig, c)
armResourcesRepo := repository.NewResourcesRepository(con, providerConfig, c)

providerLibrary.AddProvider(terraform.AZURE, provider)

Expand Down
24 changes: 12 additions & 12 deletions pkg/remote/azurerm/repository/armresources.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,37 +13,37 @@ type ResourcesRepository interface {
ListAllResourceGroups() ([]*armresources.ResourceGroup, error)
}

type armResourcesListPager interface {
type resourcesListPager interface {
pager
PageResponse() armresources.ResourceGroupsListResponse
}

type armResourcesClient interface {
List(options *armresources.ResourceGroupsListOptions) armResourcesListPager
type resourcesClient interface {
List(options *armresources.ResourceGroupsListOptions) resourcesListPager
}

type armResourcesClientImpl struct {
type resourcesClientImpl struct {
client *armresources.ResourceGroupsClient
}

func (c armResourcesClientImpl) List(options *armresources.ResourceGroupsListOptions) armResourcesListPager {
func (c resourcesClientImpl) List(options *armresources.ResourceGroupsListOptions) resourcesListPager {
return c.client.List(options)
}

type armResourcesRepository struct {
client armResourcesClient
type resourcesRepository struct {
client resourcesClient
cache cache.Cache
}

func NewArmResourcesRepository(con *arm.Connection, config common.AzureProviderConfig, cache cache.Cache) *armResourcesRepository {
return &armResourcesRepository{
&armResourcesClientImpl{armresources.NewResourceGroupsClient(con, config.SubscriptionID)},
func NewResourcesRepository(con *arm.Connection, config common.AzureProviderConfig, cache cache.Cache) *resourcesRepository {
return &resourcesRepository{
&resourcesClientImpl{armresources.NewResourceGroupsClient(con, config.SubscriptionID)},
cache,
}
}

func (s *armResourcesRepository) ListAllResourceGroups() ([]*armresources.ResourceGroup, error) {
cacheKey := "armResourcesListAllResourceGroups"
func (s *resourcesRepository) ListAllResourceGroups() ([]*armresources.ResourceGroup, error) {
cacheKey := "resourcesListAllResourceGroups"
if v := s.cache.Get(cacheKey); v != nil {
return v.([]*armresources.ResourceGroup), nil
}
Expand Down
26 changes: 13 additions & 13 deletions pkg/remote/azurerm/repository/armresources_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ func Test_ArmResources_ListAllResourceGroups(t *testing.T) {

testcases := []struct {
name string
mocks func(*mockArmResourcesListPager, *cache.MockCache)
mocks func(*mockResourcesListPager, *cache.MockCache)
expected []*armresources.ResourceGroup
wantErr string
}{
{
name: "should return resource groups",
mocks: func(mockPager *mockArmResourcesListPager, mockCache *cache.MockCache) {
mocks: func(mockPager *mockResourcesListPager, mockCache *cache.MockCache) {
mockPager.On("Err").Return(nil).Times(3)
mockPager.On("NextPage", mock.Anything).Return(true).Times(2)
mockPager.On("NextPage", mock.Anything).Return(false).Times(1)
Expand Down Expand Up @@ -69,21 +69,21 @@ func Test_ArmResources_ListAllResourceGroups(t *testing.T) {
},
}).Times(1)

mockCache.On("Get", "armResourcesListAllResourceGroups").Return(nil).Times(1)
mockCache.On("Put", "armResourcesListAllResourceGroups", expectedResults).Return(true).Times(1)
mockCache.On("Get", "resourcesListAllResourceGroups").Return(nil).Times(1)
mockCache.On("Put", "resourcesListAllResourceGroups", expectedResults).Return(true).Times(1)
},
expected: expectedResults,
},
{
name: "should hit cache and return resource groups",
mocks: func(mockPager *mockArmResourcesListPager, mockCache *cache.MockCache) {
mockCache.On("Get", "armResourcesListAllResourceGroups").Return(expectedResults).Times(1)
mocks: func(mockPager *mockResourcesListPager, mockCache *cache.MockCache) {
mockCache.On("Get", "resourcesListAllResourceGroups").Return(expectedResults).Times(1)
},
expected: expectedResults,
},
{
name: "should return remote error",
mocks: func(mockPager *mockArmResourcesListPager, mockCache *cache.MockCache) {
mocks: func(mockPager *mockResourcesListPager, mockCache *cache.MockCache) {
mockPager.On("NextPage", mock.Anything).Return(true).Times(1)
mockPager.On("PageResponse").Return(armresources.ResourceGroupsListResponse{
ResourceGroupsListResult: armresources.ResourceGroupsListResult{
Expand All @@ -94,13 +94,13 @@ func Test_ArmResources_ListAllResourceGroups(t *testing.T) {
}).Times(1)
mockPager.On("Err").Return(errors.New("remote error")).Times(1)

mockCache.On("Get", "armResourcesListAllResourceGroups").Return(nil).Times(1)
mockCache.On("Get", "resourcesListAllResourceGroups").Return(nil).Times(1)
},
wantErr: "remote error",
},
{
name: "should return remote error after fetching all pages",
mocks: func(mockPager *mockArmResourcesListPager, mockCache *cache.MockCache) {
mocks: func(mockPager *mockResourcesListPager, mockCache *cache.MockCache) {
mockPager.On("NextPage", mock.Anything).Return(true).Times(1)
mockPager.On("NextPage", mock.Anything).Return(false).Times(1)
mockPager.On("PageResponse").Return(armresources.ResourceGroupsListResponse{
Expand All @@ -113,23 +113,23 @@ func Test_ArmResources_ListAllResourceGroups(t *testing.T) {
mockPager.On("Err").Return(nil).Times(1)
mockPager.On("Err").Return(errors.New("remote error")).Times(1)

mockCache.On("Get", "armResourcesListAllResourceGroups").Return(nil).Times(1)
mockCache.On("Get", "resourcesListAllResourceGroups").Return(nil).Times(1)
},
wantErr: "remote error",
},
}

for _, tt := range testcases {
t.Run(tt.name, func(t *testing.T) {
fakeClient := &mockArmResourcesClient{}
mockPager := &mockArmResourcesListPager{}
fakeClient := &mockResourcesClient{}
mockPager := &mockResourcesListPager{}
mockCache := &cache.MockCache{}

fakeClient.On("List", mock.Anything).Maybe().Return(mockPager)

tt.mocks(mockPager, mockCache)

s := &armResourcesRepository{
s := &resourcesRepository{
client: fakeClient,
cache: mockCache,
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1e0eb3e

Please sign in to comment.