...

Source file src/github.com/Azure/azure-sdk-for-go/storage/queue_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 (
     7  	"time"
     8  
     9  	chk "gopkg.in/check.v1"
    10  )
    11  
    12  type StorageQueueSuite struct{}
    13  
    14  var _ = chk.Suite(&StorageQueueSuite{})
    15  
    16  func getQueueClient(c *chk.C) *QueueServiceClient {
    17  	cli := getBasicClient(c).GetQueueService()
    18  	return &cli
    19  }
    20  
    21  func (s *StorageQueueSuite) Test_pathForQueue(c *chk.C) {
    22  	c.Assert(getQueueClient(c).
    23  		GetQueueReference("q").
    24  		buildPath(), chk.Equals, "/q")
    25  }
    26  
    27  func (s *StorageQueueSuite) Test_pathForQueueMessages(c *chk.C) {
    28  	c.Assert(getQueueClient(c).
    29  		GetQueueReference("q").
    30  		buildPathMessages(), chk.Equals, "/q/messages")
    31  }
    32  
    33  func (s *StorageQueueSuite) TestCreateQueue_DeleteQueue(c *chk.C) {
    34  	cli := getQueueClient(c)
    35  	rec := cli.client.appendRecorder(c)
    36  	defer rec.Stop()
    37  
    38  	q := cli.GetQueueReference(queueName(c))
    39  	c.Assert(q.Create(nil), chk.IsNil)
    40  	c.Assert(q.Delete(nil), chk.IsNil)
    41  }
    42  
    43  func (s *StorageQueueSuite) Test_GetMetadata_GetApproximateCount(c *chk.C) {
    44  	cli := getQueueClient(c)
    45  	rec := cli.client.appendRecorder(c)
    46  	defer rec.Stop()
    47  
    48  	queue1 := cli.GetQueueReference(queueName(c, "1"))
    49  	c.Assert(queue1.Create(nil), chk.IsNil)
    50  	defer queue1.Delete(nil)
    51  
    52  	err := queue1.GetMetadata(nil)
    53  	c.Assert(err, chk.IsNil)
    54  	c.Assert(queue1.AproxMessageCount, chk.Equals, uint64(0))
    55  
    56  	queue2 := cli.GetQueueReference(queueName(c, "2"))
    57  	c.Assert(queue2.Create(nil), chk.IsNil)
    58  	defer queue2.Delete(nil)
    59  	for ix := 0; ix < 3; ix++ {
    60  		msg := queue2.GetMessageReference("lolrofl")
    61  		err = msg.Put(nil)
    62  		c.Assert(err, chk.IsNil)
    63  	}
    64  	time.Sleep(1 * time.Second)
    65  
    66  	err = queue2.GetMetadata(nil)
    67  	c.Assert(err, chk.IsNil)
    68  	c.Assert(queue2.AproxMessageCount, chk.Equals, uint64(3))
    69  }
    70  
    71  func (s *StorageQueueSuite) Test_SetMetadataGetMetadata_Roundtrips(c *chk.C) {
    72  	cli := getQueueClient(c)
    73  	rec := cli.client.appendRecorder(c)
    74  	defer rec.Stop()
    75  
    76  	queue1 := cli.GetQueueReference(queueName(c, "1"))
    77  	c.Assert(queue1.Create(nil), chk.IsNil)
    78  	defer queue1.Delete(nil)
    79  
    80  	metadata := make(map[string]string)
    81  	metadata["Lol1"] = "rofl1"
    82  	metadata["lolBaz"] = "rofl"
    83  	queue1.Metadata = metadata
    84  	err := queue1.SetMetadata(nil)
    85  	c.Assert(err, chk.IsNil)
    86  
    87  	err = queue1.GetMetadata(nil)
    88  	c.Assert(err, chk.IsNil)
    89  	c.Assert(queue1.Metadata["lol1"], chk.Equals, metadata["Lol1"])
    90  	c.Assert(queue1.Metadata["lolbaz"], chk.Equals, metadata["lolBaz"])
    91  }
    92  
    93  func (s *StorageQueueSuite) TestQueueExists(c *chk.C) {
    94  	cli := getQueueClient(c)
    95  	rec := cli.client.appendRecorder(c)
    96  	defer rec.Stop()
    97  
    98  	queue1 := cli.GetQueueReference(queueName(c, "nonexistent"))
    99  	ok, err := queue1.Exists()
   100  	c.Assert(err, chk.IsNil)
   101  	c.Assert(ok, chk.Equals, false)
   102  
   103  	queue2 := cli.GetQueueReference(queueName(c, "exisiting"))
   104  	c.Assert(queue2.Create(nil), chk.IsNil)
   105  	defer queue2.Delete(nil)
   106  
   107  	ok, err = queue2.Exists()
   108  	c.Assert(err, chk.IsNil)
   109  	c.Assert(ok, chk.Equals, true)
   110  }
   111  
   112  func (s *StorageQueueSuite) TestGetMessages(c *chk.C) {
   113  	cli := getQueueClient(c)
   114  	rec := cli.client.appendRecorder(c)
   115  	defer rec.Stop()
   116  
   117  	queue := cli.GetQueueReference(queueName(c))
   118  	c.Assert(queue.Create(nil), chk.IsNil)
   119  	defer queue.Delete(nil)
   120  
   121  	msg := queue.GetMessageReference("message")
   122  	n := 4
   123  	for i := 0; i < n; i++ {
   124  		c.Assert(msg.Put(nil), chk.IsNil)
   125  	}
   126  
   127  	list, err := queue.GetMessages(&GetMessagesOptions{NumOfMessages: n})
   128  	c.Assert(err, chk.IsNil)
   129  	c.Assert(len(list), chk.Equals, n)
   130  }
   131  
   132  func (s *StorageQueueSuite) TestDeleteMessages(c *chk.C) {
   133  	cli := getQueueClient(c)
   134  	rec := cli.client.appendRecorder(c)
   135  	defer rec.Stop()
   136  
   137  	queue := cli.GetQueueReference(queueName(c))
   138  	c.Assert(queue.Create(nil), chk.IsNil)
   139  	defer queue.Delete(nil)
   140  
   141  	msg := queue.GetMessageReference("message")
   142  	c.Assert(msg.Put(nil), chk.IsNil)
   143  	list, err := queue.GetMessages(&GetMessagesOptions{VisibilityTimeout: 1})
   144  	c.Assert(err, chk.IsNil)
   145  	c.Assert(len(list), chk.Equals, 1)
   146  	msg = &(list[0])
   147  	c.Assert(msg.Delete(nil), chk.IsNil)
   148  }
   149  
   150  func queueName(c *chk.C, extras ...string) string {
   151  	// 63 is the max len for shares
   152  	return nameGenerator(63, "queue-", alphanum, c, extras)
   153  }
   154  
   155  func (s *StorageQueueSuite) Test_SetPermissionsAllTrueNoTimeout(c *chk.C) {
   156  	cli := getQueueClient(c)
   157  	rec := cli.client.appendRecorder(c)
   158  	defer rec.Stop()
   159  
   160  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   161  	c.Assert(queue1.Create(nil), chk.IsNil)
   162  	defer queue1.Delete(nil)
   163  
   164  	perms := QueuePermissions{}
   165  	qapd := QueueAccessPolicy{
   166  		ID:         "GolangRocksOnAzure",
   167  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   168  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   169  		CanRead:    true,
   170  		CanAdd:     true,
   171  		CanUpdate:  true,
   172  		CanProcess: true,
   173  	}
   174  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   175  	err := queue1.SetPermissions(perms, nil)
   176  	c.Assert(err, chk.IsNil)
   177  }
   178  
   179  func (s *StorageQueueSuite) Test_SetPermissionsAllTrueWithTimeout(c *chk.C) {
   180  	cli := getQueueClient(c)
   181  	rec := cli.client.appendRecorder(c)
   182  	defer rec.Stop()
   183  
   184  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   185  	c.Assert(queue1.Create(nil), chk.IsNil)
   186  	defer queue1.Delete(nil)
   187  
   188  	perms := QueuePermissions{}
   189  	qapd := QueueAccessPolicy{
   190  		ID:         "GolangRocksOnAzure",
   191  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   192  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   193  		CanRead:    true,
   194  		CanAdd:     true,
   195  		CanUpdate:  true,
   196  		CanProcess: true,
   197  	}
   198  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   199  
   200  	options := SetQueuePermissionOptions{Timeout: 30}
   201  	err := queue1.SetPermissions(perms, &options)
   202  	c.Assert(err, chk.IsNil)
   203  
   204  }
   205  
   206  func (s *StorageQueueSuite) Test_SetPermissionsAlternateTrueNoTimeout(c *chk.C) {
   207  	cli := getQueueClient(c)
   208  	rec := cli.client.appendRecorder(c)
   209  	defer rec.Stop()
   210  
   211  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   212  	c.Assert(queue1.Create(nil), chk.IsNil)
   213  	defer queue1.Delete(nil)
   214  
   215  	perms := QueuePermissions{}
   216  	qapd := QueueAccessPolicy{
   217  		ID:         "GolangRocksOnAzure",
   218  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   219  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   220  		CanRead:    true,
   221  		CanAdd:     false,
   222  		CanUpdate:  true,
   223  		CanProcess: false,
   224  	}
   225  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   226  	err := queue1.SetPermissions(perms, nil)
   227  	c.Assert(err, chk.IsNil)
   228  }
   229  
   230  func (s *StorageQueueSuite) Test_SetPermissionsAlternateTrueWithTimeout(c *chk.C) {
   231  	cli := getQueueClient(c)
   232  	rec := cli.client.appendRecorder(c)
   233  	defer rec.Stop()
   234  
   235  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   236  	c.Assert(queue1.Create(nil), chk.IsNil)
   237  	defer queue1.Delete(nil)
   238  
   239  	perms := QueuePermissions{}
   240  	qapd := QueueAccessPolicy{
   241  		ID:         "GolangRocksOnAzure",
   242  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   243  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.FixedZone("GMT", -6)),
   244  		CanRead:    true,
   245  		CanAdd:     false,
   246  		CanUpdate:  true,
   247  		CanProcess: false,
   248  	}
   249  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   250  
   251  	options := SetQueuePermissionOptions{Timeout: 30}
   252  	err := queue1.SetPermissions(perms, &options)
   253  	c.Assert(err, chk.IsNil)
   254  }
   255  
   256  func (s *StorageQueueSuite) Test_GetPermissionsAllTrueNoTimeout(c *chk.C) {
   257  	cli := getQueueClient(c)
   258  	rec := cli.client.appendRecorder(c)
   259  	defer rec.Stop()
   260  
   261  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   262  	c.Assert(queue1.Create(nil), chk.IsNil)
   263  	defer queue1.Delete(nil)
   264  
   265  	perms := QueuePermissions{}
   266  	qapd := QueueAccessPolicy{
   267  		ID:         "GolangRocksOnAzure",
   268  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.UTC),
   269  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.UTC),
   270  		CanRead:    true,
   271  		CanAdd:     true,
   272  		CanUpdate:  true,
   273  		CanProcess: true,
   274  	}
   275  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   276  	err := queue1.SetPermissions(perms, nil)
   277  	c.Assert(err, chk.IsNil)
   278  
   279  	returnedPerms, err := queue1.GetPermissions(nil)
   280  	c.Assert(err, chk.IsNil)
   281  	c.Assert(returnedPerms.AccessPolicies, chk.HasLen, 1)
   282  
   283  	c.Assert(returnedPerms.AccessPolicies[0].CanRead, chk.Equals, true)
   284  	c.Assert(returnedPerms.AccessPolicies[0].CanAdd, chk.Equals, true)
   285  	c.Assert(returnedPerms.AccessPolicies[0].CanUpdate, chk.Equals, true)
   286  	c.Assert(returnedPerms.AccessPolicies[0].CanProcess, chk.Equals, true)
   287  	c.Assert(returnedPerms.AccessPolicies[0].ID, chk.Equals, "GolangRocksOnAzure")
   288  	c.Assert(returnedPerms.AccessPolicies[0].StartTime, chk.Equals, qapd.StartTime)
   289  	c.Assert(returnedPerms.AccessPolicies[0].ExpiryTime, chk.Equals, qapd.ExpiryTime)
   290  }
   291  
   292  func (s *StorageQueueSuite) Test_GetPermissionsAllTrueWithTimeout(c *chk.C) {
   293  	cli := getQueueClient(c)
   294  	rec := cli.client.appendRecorder(c)
   295  	defer rec.Stop()
   296  
   297  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   298  	c.Assert(queue1.Create(nil), chk.IsNil)
   299  	defer queue1.Delete(nil)
   300  
   301  	perms := QueuePermissions{}
   302  	qapd := QueueAccessPolicy{
   303  		ID:         "GolangRocksOnAzure",
   304  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.UTC),
   305  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.UTC),
   306  		CanRead:    true,
   307  		CanAdd:     true,
   308  		CanUpdate:  true,
   309  		CanProcess: true,
   310  	}
   311  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   312  	err := queue1.SetPermissions(perms, nil)
   313  	c.Assert(err, chk.IsNil)
   314  
   315  	options := GetQueuePermissionOptions{Timeout: 30}
   316  	returnedPerms, err := queue1.GetPermissions(&options)
   317  	c.Assert(err, chk.IsNil)
   318  	c.Assert(returnedPerms.AccessPolicies, chk.HasLen, 1)
   319  
   320  	c.Assert(returnedPerms.AccessPolicies[0].CanRead, chk.Equals, true)
   321  	c.Assert(returnedPerms.AccessPolicies[0].CanAdd, chk.Equals, true)
   322  	c.Assert(returnedPerms.AccessPolicies[0].CanUpdate, chk.Equals, true)
   323  	c.Assert(returnedPerms.AccessPolicies[0].CanProcess, chk.Equals, true)
   324  	c.Assert(returnedPerms.AccessPolicies[0].ID, chk.Equals, "GolangRocksOnAzure")
   325  	c.Assert(returnedPerms.AccessPolicies[0].StartTime, chk.Equals, qapd.StartTime)
   326  	c.Assert(returnedPerms.AccessPolicies[0].ExpiryTime, chk.Equals, qapd.ExpiryTime)
   327  
   328  }
   329  
   330  func (s *StorageQueueSuite) Test_GetPermissionsAlternateTrueNoTimeout(c *chk.C) {
   331  	cli := getQueueClient(c)
   332  	rec := cli.client.appendRecorder(c)
   333  	defer rec.Stop()
   334  
   335  	queue1 := cli.GetQueueReference(queueName(c, "1"))
   336  	c.Assert(queue1.Create(nil), chk.IsNil)
   337  	defer queue1.Delete(nil)
   338  
   339  	perms := QueuePermissions{}
   340  	qapd := QueueAccessPolicy{
   341  		ID:         "GolangRocksOnAzure",
   342  		StartTime:  time.Date(2050, time.December, 20, 21, 55, 0, 0, time.UTC),
   343  		ExpiryTime: time.Date(2051, time.December, 20, 21, 55, 0, 0, time.UTC),
   344  		CanRead:    true,
   345  		CanAdd:     false,
   346  		CanUpdate:  true,
   347  		CanProcess: false,
   348  	}
   349  	perms.AccessPolicies = append(perms.AccessPolicies, qapd)
   350  	err := queue1.SetPermissions(perms, nil)
   351  	c.Assert(err, chk.IsNil)
   352  
   353  	returnedPerms, err := queue1.GetPermissions(nil)
   354  	c.Assert(err, chk.IsNil)
   355  	c.Assert(returnedPerms.AccessPolicies, chk.HasLen, 1)
   356  
   357  	c.Assert(returnedPerms.AccessPolicies[0].CanRead, chk.Equals, true)
   358  	c.Assert(returnedPerms.AccessPolicies[0].CanAdd, chk.Equals, false)
   359  	c.Assert(returnedPerms.AccessPolicies[0].CanUpdate, chk.Equals, true)
   360  	c.Assert(returnedPerms.AccessPolicies[0].CanProcess, chk.Equals, false)
   361  	c.Assert(returnedPerms.AccessPolicies[0].ID, chk.Equals, "GolangRocksOnAzure")
   362  	c.Assert(returnedPerms.AccessPolicies[0].StartTime, chk.Equals, qapd.StartTime)
   363  	c.Assert(returnedPerms.AccessPolicies[0].ExpiryTime, chk.Equals, qapd.ExpiryTime)
   364  }
   365  

View as plain text