...

Source file src/github.com/Azure/azure-sdk-for-go/storage/share_test.go

Documentation: github.com/Azure/azure-sdk-for-go/storage

     1  package storage
     2  
     3  // Copyright (c) Microsoft Corporation. All rights reserved.
     4  // Licensed under the MIT License. See License.txt in the project root for license information.
     5  
     6  import chk "gopkg.in/check.v1"
     7  
     8  type StorageShareSuite struct{}
     9  
    10  var _ = chk.Suite(&StorageShareSuite{})
    11  
    12  func getFileClient(c *chk.C) FileServiceClient {
    13  	return getBasicClient(c).GetFileService()
    14  }
    15  
    16  func (s *StorageShareSuite) TestCreateShareDeleteShare(c *chk.C) {
    17  	cli := getFileClient(c)
    18  	rec := cli.client.appendRecorder(c)
    19  	defer rec.Stop()
    20  
    21  	share := cli.GetShareReference(shareName(c))
    22  	c.Assert(share.Create(nil), chk.IsNil)
    23  	c.Assert(share.Delete(nil), chk.IsNil)
    24  }
    25  
    26  func (s *StorageShareSuite) TestCreateShareIfNotExists(c *chk.C) {
    27  	cli := getFileClient(c)
    28  	rec := cli.client.appendRecorder(c)
    29  	defer rec.Stop()
    30  
    31  	// Create non existing
    32  	share := cli.GetShareReference(shareName(c, "notexists"))
    33  	ok, err := share.CreateIfNotExists(nil)
    34  	defer share.Delete(nil)
    35  	c.Assert(err, chk.IsNil)
    36  	c.Assert(ok, chk.Equals, true)
    37  
    38  }
    39  
    40  func (s *StorageShareSuite) TestCreateShareIfExists(c *chk.C) {
    41  	cli := getFileClient(c)
    42  	rec := cli.client.appendRecorder(c)
    43  	defer rec.Stop()
    44  
    45  	share := cli.GetShareReference(shareName(c, "exists"))
    46  	share.Create(nil)
    47  	defer share.Delete(nil)
    48  
    49  	// Try to create exisiting
    50  	ok, err := share.CreateIfNotExists(nil)
    51  	c.Assert(err, chk.IsNil)
    52  	c.Assert(ok, chk.Equals, false)
    53  }
    54  
    55  func (s *StorageShareSuite) TestDeleteShareIfNotExists(c *chk.C) {
    56  	cli := getFileClient(c)
    57  	rec := cli.client.appendRecorder(c)
    58  	defer rec.Stop()
    59  
    60  	// delete non-existing share
    61  	share1 := cli.GetShareReference(shareName(c, "1"))
    62  	ok, err := share1.DeleteIfExists(nil)
    63  	c.Assert(err, chk.IsNil)
    64  	c.Assert(ok, chk.Equals, false)
    65  
    66  	// delete existing share
    67  	share2 := cli.GetShareReference(shareName(c, "2"))
    68  	c.Assert(share2.Create(nil), chk.IsNil)
    69  	ok, err = share2.DeleteIfExists(nil)
    70  	c.Assert(err, chk.IsNil)
    71  	c.Assert(ok, chk.Equals, true)
    72  }
    73  
    74  func (s *StorageShareSuite) TestListShares(c *chk.C) {
    75  	cli := getFileClient(c)
    76  	rec := cli.client.appendRecorder(c)
    77  	defer rec.Stop()
    78  	cli.deleteAllShares()
    79  
    80  	name := shareName(c)
    81  	share := cli.GetShareReference(name)
    82  
    83  	c.Assert(share.Create(nil), chk.IsNil)
    84  
    85  	resp, err := cli.ListShares(ListSharesParameters{
    86  		MaxResults: 5,
    87  	})
    88  	c.Assert(err, chk.IsNil)
    89  
    90  	c.Check(len(resp.Shares), chk.Equals, 1)
    91  	c.Check(resp.Shares[0].Name, chk.Equals, name)
    92  
    93  	// clean up via the retrieved share object
    94  	resp.Shares[0].Delete(nil)
    95  }
    96  
    97  func (s *StorageShareSuite) TestShareExists(c *chk.C) {
    98  	cli := getFileClient(c)
    99  	rec := cli.client.appendRecorder(c)
   100  	defer rec.Stop()
   101  
   102  	// Share does not exist
   103  	share1 := cli.GetShareReference(shareName(c, "3"))
   104  	ok, err := share1.Exists()
   105  	c.Assert(err, chk.IsNil)
   106  	c.Assert(ok, chk.Equals, false)
   107  
   108  	// Share exists
   109  	share2 := cli.GetShareReference(shareName(c, "4"))
   110  	c.Assert(share2.Create(nil), chk.IsNil)
   111  	defer share1.Delete(nil)
   112  	ok, err = share2.Exists()
   113  	c.Assert(err, chk.IsNil)
   114  	c.Assert(ok, chk.Equals, true)
   115  }
   116  
   117  func (s *StorageShareSuite) TestGetAndSetShareProperties(c *chk.C) {
   118  	cli := getFileClient(c)
   119  	rec := cli.client.appendRecorder(c)
   120  	defer rec.Stop()
   121  	share := cli.GetShareReference(shareName(c))
   122  	quota := 55
   123  
   124  	c.Assert(share.Create(nil), chk.IsNil)
   125  	defer share.Delete(nil)
   126  	c.Assert(share.Properties.LastModified, chk.Not(chk.Equals), "")
   127  
   128  	share.Properties.Quota = quota
   129  	err := share.SetProperties(nil)
   130  	c.Assert(err, chk.IsNil)
   131  
   132  	err = share.FetchAttributes(nil)
   133  	c.Assert(err, chk.IsNil)
   134  
   135  	c.Assert(share.Properties.Quota, chk.Equals, quota)
   136  }
   137  
   138  func (s *StorageShareSuite) TestGetAndSetShareMetadata(c *chk.C) {
   139  	cli := getFileClient(c)
   140  	rec := cli.client.appendRecorder(c)
   141  	defer rec.Stop()
   142  	share1 := cli.GetShareReference(shareName(c, "1"))
   143  
   144  	c.Assert(share1.Create(nil), chk.IsNil)
   145  	defer share1.Delete(nil)
   146  
   147  	// by default there should be no metadata
   148  	c.Assert(share1.Metadata, chk.IsNil)
   149  	c.Assert(share1.FetchAttributes(nil), chk.IsNil)
   150  	c.Assert(share1.Metadata, chk.IsNil)
   151  
   152  	share2 := cli.GetShareReference(shareName(c, "5"))
   153  	c.Assert(share2.Create(nil), chk.IsNil)
   154  	defer share2.Delete(nil)
   155  
   156  	c.Assert(share2.Metadata, chk.IsNil)
   157  
   158  	mPut := map[string]string{
   159  		"lol":      "rofl",
   160  		"rofl_baz": "waz qux",
   161  	}
   162  
   163  	share2.Metadata = mPut
   164  	c.Assert(share2.SetMetadata(nil), chk.IsNil)
   165  	c.Check(share2.Metadata, chk.DeepEquals, mPut)
   166  
   167  	c.Assert(share2.FetchAttributes(nil), chk.IsNil)
   168  	c.Check(share2.Metadata, chk.DeepEquals, mPut)
   169  }
   170  
   171  func (s *StorageShareSuite) TestMetadataCaseMunging(c *chk.C) {
   172  	cli := getFileClient(c)
   173  	rec := cli.client.appendRecorder(c)
   174  	defer rec.Stop()
   175  	share := cli.GetShareReference(shareName(c))
   176  
   177  	c.Assert(share.Create(nil), chk.IsNil)
   178  	defer share.Delete(nil)
   179  
   180  	mPutUpper := map[string]string{
   181  		"Lol":      "different rofl",
   182  		"rofl_BAZ": "different waz qux",
   183  	}
   184  	mExpectLower := map[string]string{
   185  		"lol":      "different rofl",
   186  		"rofl_baz": "different waz qux",
   187  	}
   188  
   189  	share.Metadata = mPutUpper
   190  	c.Assert(share.SetMetadata(nil), chk.IsNil)
   191  
   192  	c.Check(share.Metadata, chk.DeepEquals, mPutUpper)
   193  	c.Assert(share.FetchAttributes(nil), chk.IsNil)
   194  	c.Check(share.Metadata, chk.DeepEquals, mExpectLower)
   195  }
   196  
   197  func (cli *FileServiceClient) deleteAllShares() {
   198  	resp, _ := cli.ListShares(ListSharesParameters{})
   199  	if resp != nil && len(resp.Shares) > 0 {
   200  		for _, sh := range resp.Shares {
   201  			share := cli.GetShareReference(sh.Name)
   202  			share.Delete(nil)
   203  		}
   204  	}
   205  }
   206  
   207  func shareName(c *chk.C, extras ...string) string {
   208  	return nameGenerator(63, "share-", alphanum, c, extras)
   209  }
   210  

View as plain text