lib/resources/aws/aws_iam_policies.rb in inspec-2.0.32 vs lib/resources/aws/aws_iam_policies.rb in inspec-2.0.45

- old
+ new

@@ -1,46 +1,53 @@ -class AwsIamPolicies < Inspec.resource(1) - name 'aws_iam_policies' - desc 'Verifies settings for AWS IAM Policies in bulk' - example ' - describe aws_iam_policies do - it { should exist } - end - ' - supports platform: 'aws' - - include AwsPluralResourceMixin - def validate_params(resource_params) - unless resource_params.empty? - raise ArgumentError, 'aws_iam_policies does not accept resource parameters.' - end - resource_params - end - - # Underlying FilterTable implementation. - filter = FilterTable.create - filter.add_accessor(:entries) - .add(:exists?) { |x| !x.entries.empty? } - .add(:policy_names, field: :policy_name) - .add(:arns, field: :arn) - filter.connect(self, :table) - - def to_s - 'IAM Policies' - end - - def fetch_from_api - backend = BackendFactory.create(inspec_runner) - @table = backend.list_policies({}).to_h[:policies] - end - - class Backend - class AwsClientApi < AwsBackendBase - BackendFactory.set_default_backend(self) - self.aws_client_class = Aws::IAM::Client - - def list_policies(query) - aws_service_client.list_policies(query) - end - end - end -end +class AwsIamPolicies < Inspec.resource(1) + name 'aws_iam_policies' + desc 'Verifies settings for AWS IAM Policies in bulk' + example ' + describe aws_iam_policies do + it { should exist } + end + ' + supports platform: 'aws' + + include AwsPluralResourceMixin + def validate_params(resource_params) + unless resource_params.empty? + raise ArgumentError, 'aws_iam_policies does not accept resource parameters.' + end + resource_params + end + + # Underlying FilterTable implementation. + filter = FilterTable.create + filter.add_accessor(:entries) + .add(:exists?) { |x| !x.entries.empty? } + .add(:policy_names, field: :policy_name) + .add(:arns, field: :arn) + filter.connect(self, :table) + + def to_s + 'IAM Policies' + end + + def fetch_from_api + backend = BackendFactory.create(inspec_runner) + @table = [] + pagination_opts = {} + loop do + api_result = backend.list_policies(pagination_opts) + @table += api_result.policies.map(&:to_h) + pagination_opts = { marker: api_result.marker } + break unless api_result.is_truncated + end + end + + class Backend + class AwsClientApi < AwsBackendBase + BackendFactory.set_default_backend(self) + self.aws_client_class = Aws::IAM::Client + + def list_policies(query) + aws_service_client.list_policies(query) + end + end + end +end