Ejemplo n.º 1
0
    def test_for_for_asset_type(self):
        APISchema._discovery_document_cache = {
            'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest': {
                'id': 'compute.v1',
                'schemas': {
                    'Instance': {
                        'properties': {
                            'property-1': {
                                'type': 'string',
                                'description': 'description-1.'
                            }}}}},
            'https://content.googleapis.com/discovery/v1/apis': {
                'items': [{
                    'name': 'compute',
                    'version': 'v1',
                    'discoveryRestUrl': 'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest'}]}}

        schema = APISchema.bigquery_schema_for_resource(
            'google.compute.Instance',
            'Instance',
            'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest',
            True, True)
        data_fields = self.get_schema_data_field(schema)
        self.assertEqual(
            [{'field_type': 'STRING',
              'name': 'property-1',
              'description': 'description-1.',
              'mode': 'NULLABLE'},
             {'field_type': 'STRING',
              'description': 'Last time resource was changed.',
              'name': 'lastModifiedTime',
              'mode': 'NULLABLE'}],
            data_fields)
        # name, asset_type, timestamp, resource, iam_policy
        self.assertEqual(len(schema), 5)
Ejemplo n.º 2
0
 def test_resource_last_modified(self):
     # Test that resource lastModifiedTime takes precedence.
     APISchema._discovery_document_cache = {
         'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest': {
             'id': 'compute.v1',
             'schemas': {
                 'Machine': {
                     'properties': {
                         'lastModifiedTime': {
                             'type': 'string',
                             'description': 'Track time of last change.'
                         }}}}},
         'https://content.googleapis.com/discovery/v1/apis': {
             'items': [{
                 'name': 'compute',
                 'version': 'v1',
                 'discoveryRestUrl': 'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest'}]}}
     schema = APISchema.bigquery_schema_for_resource(
         'google.compute.Machine',
         'Machine',
         'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest',
         True, True)
     data_fields = self.get_schema_data_field(schema)
     self.assertEqual(
         [{'field_type': 'STRING',
           'name': 'lastModifiedTime',
           'description': 'Track time of last change.',
           'mode': 'NULLABLE'}],
         data_fields)
Ejemplo n.º 3
0
 def element_to_schema(self, element):
     element_resource = element.get('resource', {})
     return APISchema.bigquery_schema_for_resource(
         element['asset_type'],
         element_resource.get('discovery_name', None),
         element_resource.get('discovery_document_uri', None), 'data'
         in element_resource, 'iam_policy' in element)
    def test_for_swagger_type(self):
        APISchema._discovery_document_cache = {
            'https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json':
            {
                'info': {
                    'title': 'Kubernetes',
                    'version': 'v1.15.0'
                },
                'definitions': {
                    'io.k8s.api.rbac.v1.ClusterRole': {
                        'properties': {
                            'aggregationRule': {
                                '$ref':
                                '#/definitions/io.k8s.api.rbac.v1.AggregationRule',
                            }
                        }
                    },
                    'io.k8s.api.rbac.v1.AggregationRule': {
                        'properties': {
                            'name': {
                                'type': 'string'
                            }
                        }
                    }
                }
            },
            'https://content.googleapis.com/discovery/v1/apis': {
                'items': []
            }
        }

        schema = APISchema.bigquery_schema_for_resource(
            'io.k8s.authorization.rbac.ClusterRoleBinding',
            'io.k8s.api.rbac.v1.ClusterRole',
            'https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json',
            True, True)
        data_fields = self.get_schema_data_field(schema)
        self.assertEqual([{
            'field_type':
            'RECORD',
            'name':
            'aggregationRule',
            'fields': [{
                'field_type': 'STRING',
                'name': 'name',
                'mode': 'NULLABLE'
            }],
            'mode':
            'NULLABLE'
        }, {
            'field_type': 'STRING',
            'description': 'Last time resource was changed.',
            'name': 'lastModifiedTime',
            'mode': 'NULLABLE'
        }], data_fields)