def test_set_cors(self, resource_group, location, storage_account, storage_account_key): bsc = BlobServiceClient(self._account_url(storage_account.name), credential=storage_account_key) cors_rule1 = CorsRule(['www.xyz.com'], ['GET']) allowed_origins = ['www.xyz.com', "www.ab.com", "www.bc.com"] allowed_methods = ['GET', 'PUT'] max_age_in_seconds = 500 exposed_headers = [ "x-ms-meta-data*", "x-ms-meta-source*", "x-ms-meta-abc", "x-ms-meta-bcd" ] allowed_headers = [ "x-ms-meta-data*", "x-ms-meta-target*", "x-ms-meta-xyz", "x-ms-meta-foo" ] cors_rule2 = CorsRule(allowed_origins, allowed_methods, max_age_in_seconds=max_age_in_seconds, exposed_headers=exposed_headers, allowed_headers=allowed_headers) cors = [cors_rule1, cors_rule2] # Act bsc.set_service_properties(cors=cors) # Assert received_props = bsc.get_service_properties() self._assert_cors_equal(received_props['cors'], cors)
def test_set_cors(self): # Arrange cors_rule1 = CorsRule(['www.xyz.com'], ['GET']) allowed_origins = ['www.xyz.com', "www.ab.com", "www.bc.com"] allowed_methods = ['GET', 'PUT'] max_age_in_seconds = 500 exposed_headers = [ "x-ms-meta-data*", "x-ms-meta-source*", "x-ms-meta-abc", "x-ms-meta-bcd" ] allowed_headers = [ "x-ms-meta-data*", "x-ms-meta-target*", "x-ms-meta-xyz", "x-ms-meta-foo" ] cors_rule2 = CorsRule(allowed_origins, allowed_methods, max_age_in_seconds=max_age_in_seconds, exposed_headers=exposed_headers, allowed_headers=allowed_headers) cors = [cors_rule1, cors_rule2] # Act self.bsc.set_service_properties(cors=cors) # Assert received_props = self.bsc.get_service_properties() self._assert_cors_equal(received_props.cors, cors)
async def test_set_static_webprops_no_impact_other_props( self, resource_group, location, storage_account, storage_account_key): bsc = BlobServiceClient(self.account_url(storage_account, "blob"), credential=storage_account_key, transport=AiohttpTestTransport()) cors_rule1 = CorsRule(['www.xyz.com'], ['GET']) allowed_origins = ['www.xyz.com', "www.ab.com", "www.bc.com"] allowed_methods = ['GET', 'PUT'] max_age_in_seconds = 500 exposed_headers = [ "x-ms-meta-data*", "x-ms-meta-source*", "x-ms-meta-abc", "x-ms-meta-bcd" ] allowed_headers = [ "x-ms-meta-data*", "x-ms-meta-target*", "x-ms-meta-xyz", "x-ms-meta-foo" ] cors_rule2 = CorsRule(allowed_origins, allowed_methods, max_age_in_seconds=max_age_in_seconds, exposed_headers=exposed_headers, allowed_headers=allowed_headers) cors = [cors_rule1, cors_rule2] # Act await bsc.set_service_properties(cors=cors) # Assert cors is updated received_props = await bsc.get_service_properties() self._assert_cors_equal(received_props['cors'], cors) bsc = BlobServiceClient(self.account_url(storage_account, "blob"), credential=storage_account_key, transport=AiohttpTestTransport()) static_website = StaticWebsite( enabled=True, index_document="index.html", error_document404_path="errors/error/404error.html") # Act to set static website await bsc.set_service_properties(static_website=static_website) # Assert static website was updated was cors was unchanged received_props = await bsc.get_service_properties() self._assert_static_website_equal(received_props['static_website'], static_website) self._assert_cors_equal(received_props['cors'], cors)
def __init__(self, client, container, prefix=None, public=True, dry_run=False): self.dry_run = dry_run if dry_run: self.url = 'https://example.com/a/path/' return self.client = client self.prefix = prefix or '' self.container = container if public: public = 'container' else: public = None try: cc = client.create_container(container, public_access=public) except ResourceExistsError: cc = client.get_container_client(container) cors_rule = CorsRule(['*'], ['GET', 'HEAD']) cors = [cors_rule] client.set_service_properties(cors=cors) self.url = cc.url
def test_blob_service_properties(self): # Instantiate a BlobServiceClient using a connection string from azure.storage.blob import BlobServiceClient blob_service_client = BlobServiceClient.from_connection_string(self.connection_string) # [START set_blob_service_properties] # Create service properties from azure.storage.blob import Logging, Metrics, CorsRule, RetentionPolicy # Create logging settings logging = Logging(read=True, write=True, delete=True, retention_policy=RetentionPolicy(enabled=True, days=5)) # Create metrics for requests statistics hour_metrics = Metrics(enabled=True, include_apis=True, retention_policy=RetentionPolicy(enabled=True, days=5)) minute_metrics = Metrics(enabled=True, include_apis=True, retention_policy=RetentionPolicy(enabled=True, days=5)) # Create CORS rules cors_rule = CorsRule(['www.xyz.com'], ['GET']) cors = [cors_rule] # Set the service properties blob_service_client.set_service_properties(logging, hour_metrics, minute_metrics, cors) # [END set_blob_service_properties] # [START get_blob_service_properties] properties = blob_service_client.get_service_properties() # [END get_blob_service_properties] assert properties is not None
def test_set_static_website_properties_does_not_impact_other_properties( self): # Arrange to set cors cors_rule1 = CorsRule(['www.xyz.com'], ['GET']) allowed_origins = ['www.xyz.com', "www.ab.com", "www.bc.com"] allowed_methods = ['GET', 'PUT'] max_age_in_seconds = 500 exposed_headers = [ "x-ms-meta-data*", "x-ms-meta-source*", "x-ms-meta-abc", "x-ms-meta-bcd" ] allowed_headers = [ "x-ms-meta-data*", "x-ms-meta-target*", "x-ms-meta-xyz", "x-ms-meta-foo" ] cors_rule2 = CorsRule(allowed_origins, allowed_methods, max_age_in_seconds=max_age_in_seconds, exposed_headers=exposed_headers, allowed_headers=allowed_headers) cors = [cors_rule1, cors_rule2] # Act to set cors self.bsc.set_service_properties(cors=cors) # Assert cors is updated received_props = self.bsc.get_service_properties() self._assert_cors_equal(received_props.cors, cors) # Arrange to set static website properties static_website = StaticWebsite( enabled=True, index_document="index.html", error_document404_path="errors/error/404error.html") # Act to set static website self.bsc.set_service_properties(static_website=static_website) # Assert static website was updated was cors was unchanged received_props = self.bsc.get_service_properties() self._assert_static_website_equal(received_props.static_website, static_website) self._assert_cors_equal(received_props.cors, cors)
def test_too_many_cors_rules(self): # Arrange cors = [] for i in range(0, 6): cors.append(CorsRule(['www.xyz.com'], ['GET'])) # Assert self.assertRaises(HttpResponseError, self.bsc.set_service_properties, None, None, None, cors)
async def test_too_many_cors_rules(self, storage_account_name, storage_account_key): bsc = BlobServiceClient(self.account_url(storage_account_name, "blob"), credential=storage_account_key, transport=AiohttpTestTransport()) cors = [] for i in range(0, 6): cors.append(CorsRule(['www.xyz.com'], ['GET'])) # Assert with self.assertRaises(HttpResponseError): await bsc.set_service_properties(None, None, None, cors)
def test_too_many_cors_rules(self, resource_group, location, storage_account, storage_account_key): bsc = BlobServiceClient(self.account_url(storage_account.name, "blob"), credential=storage_account_key) cors = [] for i in range(0, 6): cors.append(CorsRule(['www.xyz.com'], ['GET'])) # Assert self.assertRaises(HttpResponseError, bsc.set_service_properties, None, None, None, cors)
def setup(self): # From: https://docs.microsoft.com/en-us/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services cors = [ CorsRule( allowed_origins="*", allowed_methods=["GET", "PUT"], max_age_in_seconds=3000, exposed_headers=["x-ms-meta-*"], allowed_headers=[ "x-ms-meta-data*", "x-ms-meta-target*", "x-ms-meta-abc", "Content-Type", ], ) ] self._blob_service_client.set_service_properties(cors=cors)