github.com/fastly/go-fastly/v5@v5.3.0/fastly/cloudfiles_test.go (about)

     1  package fastly
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestClient_Cloudfiles(t *testing.T) {
     8  	t.Parallel()
     9  
    10  	var err error
    11  	var tv *Version
    12  	record(t, "cloudfiles/version", func(c *Client) {
    13  		tv = testVersion(t, c)
    14  	})
    15  
    16  	// Create
    17  	var cloudfilesCreateResp1, cloudfilesCreateResp2, cloudfilesCreateResp3 *Cloudfiles
    18  	record(t, "cloudfiles/create", func(c *Client) {
    19  		cloudfilesCreateResp1, err = c.CreateCloudfiles(&CreateCloudfilesInput{
    20  			ServiceID:        testServiceID,
    21  			ServiceVersion:   tv.Number,
    22  			Name:             "test-cloudfiles",
    23  			User:             "user",
    24  			AccessKey:        "secret-key",
    25  			BucketName:       "bucket-name",
    26  			Path:             "/path",
    27  			Region:           "DFW",
    28  			Period:           12,
    29  			Format:           "format",
    30  			FormatVersion:    1,
    31  			TimestampFormat:  "%Y",
    32  			MessageType:      "classic",
    33  			Placement:        "waf_debug",
    34  			PublicKey:        pgpPublicKey(),
    35  			CompressionCodec: "snappy",
    36  		})
    37  	})
    38  	if err != nil {
    39  		t.Fatal(err)
    40  	}
    41  
    42  	record(t, "cloudfiles/create2", func(c *Client) {
    43  		cloudfilesCreateResp2, err = c.CreateCloudfiles(&CreateCloudfilesInput{
    44  			ServiceID:       testServiceID,
    45  			ServiceVersion:  tv.Number,
    46  			Name:            "test-cloudfiles-2",
    47  			User:            "user",
    48  			AccessKey:       "secret-key",
    49  			BucketName:      "bucket-name",
    50  			Path:            "/path",
    51  			Region:          "DFW",
    52  			Period:          12,
    53  			GzipLevel:       8,
    54  			Format:          "format",
    55  			FormatVersion:   1,
    56  			TimestampFormat: "%Y",
    57  			MessageType:     "classic",
    58  			Placement:       "waf_debug",
    59  			PublicKey:       pgpPublicKey(),
    60  		})
    61  	})
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  
    66  	record(t, "cloudfiles/create3", func(c *Client) {
    67  		cloudfilesCreateResp3, err = c.CreateCloudfiles(&CreateCloudfilesInput{
    68  			ServiceID:        testServiceID,
    69  			ServiceVersion:   tv.Number,
    70  			Name:             "test-cloudfiles-3",
    71  			User:             "user",
    72  			AccessKey:        "secret-key",
    73  			BucketName:       "bucket-name",
    74  			Path:             "/path",
    75  			Region:           "DFW",
    76  			Period:           12,
    77  			Format:           "format",
    78  			FormatVersion:    1,
    79  			TimestampFormat:  "%Y",
    80  			MessageType:      "classic",
    81  			Placement:        "waf_debug",
    82  			PublicKey:        pgpPublicKey(),
    83  			CompressionCodec: "snappy",
    84  		})
    85  	})
    86  	if err != nil {
    87  		t.Fatal(err)
    88  	}
    89  
    90  	// This case is expected to fail because both CompressionCodec and
    91  	// GzipLevel are present.
    92  	record(t, "cloudfiles/create4", func(c *Client) {
    93  		_, err = c.CreateCloudfiles(&CreateCloudfilesInput{
    94  			ServiceID:        testServiceID,
    95  			ServiceVersion:   tv.Number,
    96  			Name:             "test-cloudfiles-4",
    97  			User:             "user",
    98  			AccessKey:        "secret-key",
    99  			BucketName:       "bucket-name",
   100  			Path:             "/path",
   101  			Region:           "DFW",
   102  			Period:           12,
   103  			GzipLevel:        8,
   104  			Format:           "format",
   105  			FormatVersion:    1,
   106  			TimestampFormat:  "%Y",
   107  			MessageType:      "classic",
   108  			Placement:        "waf_debug",
   109  			PublicKey:        pgpPublicKey(),
   110  			CompressionCodec: "snappy",
   111  		})
   112  	})
   113  	if err == nil {
   114  		t.Fatal(err)
   115  	}
   116  
   117  	// Ensure deleted
   118  	defer func() {
   119  		record(t, "cloudfiles/cleanup", func(c *Client) {
   120  			c.DeleteCloudfiles(&DeleteCloudfilesInput{
   121  				ServiceID:      testServiceID,
   122  				ServiceVersion: tv.Number,
   123  				Name:           "test-cloudfiles",
   124  			})
   125  
   126  			c.DeleteCloudfiles(&DeleteCloudfilesInput{
   127  				ServiceID:      testServiceID,
   128  				ServiceVersion: tv.Number,
   129  				Name:           "test-cloudfiles-2",
   130  			})
   131  
   132  			c.DeleteCloudfiles(&DeleteCloudfilesInput{
   133  				ServiceID:      testServiceID,
   134  				ServiceVersion: tv.Number,
   135  				Name:           "test-cloudfiles-3",
   136  			})
   137  
   138  			c.DeleteCloudfiles(&DeleteCloudfilesInput{
   139  				ServiceID:      testServiceID,
   140  				ServiceVersion: tv.Number,
   141  				Name:           "new-test-cloudfiles",
   142  			})
   143  		})
   144  	}()
   145  
   146  	if cloudfilesCreateResp1.Name != "test-cloudfiles" {
   147  		t.Errorf("bad name: %q", cloudfilesCreateResp1.Name)
   148  	}
   149  	if cloudfilesCreateResp1.User != "user" {
   150  		t.Errorf("bad user: %q", cloudfilesCreateResp1.User)
   151  	}
   152  	if cloudfilesCreateResp1.BucketName != "bucket-name" {
   153  		t.Errorf("bad bucket_name: %q", cloudfilesCreateResp1.BucketName)
   154  	}
   155  	if cloudfilesCreateResp1.AccessKey != "secret-key" {
   156  		t.Errorf("bad access_key: %q", cloudfilesCreateResp1.AccessKey)
   157  	}
   158  	if cloudfilesCreateResp1.Path != "/path" {
   159  		t.Errorf("bad path: %q", cloudfilesCreateResp1.Path)
   160  	}
   161  	if cloudfilesCreateResp1.Region != "DFW" {
   162  		t.Errorf("bad region: %q", cloudfilesCreateResp1.Region)
   163  	}
   164  	if cloudfilesCreateResp1.Period != 12 {
   165  		t.Errorf("bad period: %q", cloudfilesCreateResp1.Period)
   166  	}
   167  	if cloudfilesCreateResp1.GzipLevel != 0 {
   168  		t.Errorf("bad gzip_level: %q", cloudfilesCreateResp1.GzipLevel)
   169  	}
   170  	if cloudfilesCreateResp1.Format != "format" {
   171  		t.Errorf("bad format: %q", cloudfilesCreateResp1.Format)
   172  	}
   173  	if cloudfilesCreateResp1.FormatVersion != 1 {
   174  		t.Errorf("bad format_version: %q", cloudfilesCreateResp1.FormatVersion)
   175  	}
   176  	if cloudfilesCreateResp1.TimestampFormat != "%Y" {
   177  		t.Errorf("bad timestamp_format: %q", cloudfilesCreateResp1.TimestampFormat)
   178  	}
   179  	if cloudfilesCreateResp1.MessageType != "classic" {
   180  		t.Errorf("bad message_type: %q", cloudfilesCreateResp1.MessageType)
   181  	}
   182  	if cloudfilesCreateResp1.Placement != "waf_debug" {
   183  		t.Errorf("bad placement: %q", cloudfilesCreateResp1.Placement)
   184  	}
   185  	if cloudfilesCreateResp1.PublicKey != pgpPublicKey() {
   186  		t.Errorf("bad public_key: %q", cloudfilesCreateResp1.PublicKey)
   187  	}
   188  
   189  	if cloudfilesCreateResp2.CompressionCodec != "" {
   190  		t.Errorf("bad compression_codec: %q", cloudfilesCreateResp2.CompressionCodec)
   191  	}
   192  	if cloudfilesCreateResp2.GzipLevel != 8 {
   193  		t.Errorf("bad gzip_level: %q", cloudfilesCreateResp2.GzipLevel)
   194  	}
   195  
   196  	if cloudfilesCreateResp3.CompressionCodec != "snappy" {
   197  		t.Errorf("bad compression_codec: %q", cloudfilesCreateResp3.CompressionCodec)
   198  	}
   199  	if cloudfilesCreateResp3.GzipLevel != 0 {
   200  		t.Errorf("bad gzip_level: %q", cloudfilesCreateResp3.GzipLevel)
   201  	}
   202  
   203  	// List
   204  	var lc []*Cloudfiles
   205  	record(t, "cloudfiles/list", func(c *Client) {
   206  		lc, err = c.ListCloudfiles(&ListCloudfilesInput{
   207  			ServiceID:      testServiceID,
   208  			ServiceVersion: tv.Number,
   209  		})
   210  	})
   211  	if err != nil {
   212  		t.Fatal(err)
   213  	}
   214  	if len(lc) < 1 {
   215  		t.Errorf("bad cloudfiles: %v", lc)
   216  	}
   217  
   218  	// Get
   219  	var cloudfilesGetResp *Cloudfiles
   220  	record(t, "cloudfiles/get", func(c *Client) {
   221  		cloudfilesGetResp, err = c.GetCloudfiles(&GetCloudfilesInput{
   222  			ServiceID:      testServiceID,
   223  			ServiceVersion: tv.Number,
   224  			Name:           "test-cloudfiles",
   225  		})
   226  	})
   227  	if err != nil {
   228  		t.Fatal(err)
   229  	}
   230  	if cloudfilesCreateResp1.Name != cloudfilesGetResp.Name {
   231  		t.Errorf("bad name: %q", cloudfilesCreateResp1.Name)
   232  	}
   233  	if cloudfilesCreateResp1.User != cloudfilesGetResp.User {
   234  		t.Errorf("bad user: %q", cloudfilesCreateResp1.User)
   235  	}
   236  	if cloudfilesCreateResp1.BucketName != cloudfilesGetResp.BucketName {
   237  		t.Errorf("bad bucket_name: %q", cloudfilesCreateResp1.BucketName)
   238  	}
   239  	if cloudfilesCreateResp1.AccessKey != cloudfilesGetResp.AccessKey {
   240  		t.Errorf("bad access_key: %q", cloudfilesCreateResp1.AccessKey)
   241  	}
   242  	if cloudfilesCreateResp1.Path != cloudfilesGetResp.Path {
   243  		t.Errorf("bad path: %q", cloudfilesCreateResp1.Path)
   244  	}
   245  	if cloudfilesCreateResp1.Region != cloudfilesGetResp.Region {
   246  		t.Errorf("bad region: %q", cloudfilesCreateResp1.Region)
   247  	}
   248  	if cloudfilesCreateResp1.Period != cloudfilesGetResp.Period {
   249  		t.Errorf("bad period: %q", cloudfilesCreateResp1.Period)
   250  	}
   251  	if cloudfilesCreateResp1.GzipLevel != cloudfilesGetResp.GzipLevel {
   252  		t.Errorf("bad gzip_level: %q", cloudfilesCreateResp1.GzipLevel)
   253  	}
   254  	if cloudfilesCreateResp1.Format != cloudfilesGetResp.Format {
   255  		t.Errorf("bad format: %q", cloudfilesCreateResp1.Format)
   256  	}
   257  	if cloudfilesCreateResp1.FormatVersion != cloudfilesGetResp.FormatVersion {
   258  		t.Errorf("bad format_version: %q", cloudfilesCreateResp1.FormatVersion)
   259  	}
   260  	if cloudfilesCreateResp1.TimestampFormat != cloudfilesGetResp.TimestampFormat {
   261  		t.Errorf("bad timestamp_format: %q", cloudfilesCreateResp1.TimestampFormat)
   262  	}
   263  	if cloudfilesCreateResp1.MessageType != cloudfilesGetResp.MessageType {
   264  		t.Errorf("bad message_type: %q", cloudfilesCreateResp1.MessageType)
   265  	}
   266  	if cloudfilesCreateResp1.Placement != cloudfilesGetResp.Placement {
   267  		t.Errorf("bad placement: %q", cloudfilesCreateResp1.Placement)
   268  	}
   269  	if cloudfilesCreateResp1.PublicKey != cloudfilesGetResp.PublicKey {
   270  		t.Errorf("bad public_key: %q", cloudfilesCreateResp1.PublicKey)
   271  	}
   272  	if cloudfilesCreateResp1.CompressionCodec != cloudfilesGetResp.CompressionCodec {
   273  		t.Errorf("bad compression_codec: %q", cloudfilesCreateResp1.CompressionCodec)
   274  	}
   275  
   276  	// Update
   277  	var cloudfilesUpdateResp1, cloudfilesUpdateResp2, cloudfilesUpdateResp3 *Cloudfiles
   278  	record(t, "cloudfiles/update", func(c *Client) {
   279  		cloudfilesUpdateResp1, err = c.UpdateCloudfiles(&UpdateCloudfilesInput{
   280  			ServiceID:        testServiceID,
   281  			ServiceVersion:   tv.Number,
   282  			Name:             "test-cloudfiles",
   283  			NewName:          String("new-test-cloudfiles"),
   284  			User:             String("new-user"),
   285  			Period:           Uint(0),
   286  			FormatVersion:    Uint(2),
   287  			CompressionCodec: String("zstd"),
   288  		})
   289  	})
   290  	if err != nil {
   291  		t.Fatal(err)
   292  	}
   293  
   294  	record(t, "cloudfiles/update2", func(c *Client) {
   295  		cloudfilesUpdateResp2, err = c.UpdateCloudfiles(&UpdateCloudfilesInput{
   296  			ServiceID:        testServiceID,
   297  			ServiceVersion:   tv.Number,
   298  			Name:             "test-cloudfiles-2",
   299  			CompressionCodec: String("zstd"),
   300  		})
   301  	})
   302  	if err != nil {
   303  		t.Fatal(err)
   304  	}
   305  
   306  	record(t, "cloudfiles/update3", func(c *Client) {
   307  		cloudfilesUpdateResp3, err = c.UpdateCloudfiles(&UpdateCloudfilesInput{
   308  			ServiceID:      testServiceID,
   309  			ServiceVersion: tv.Number,
   310  			Name:           "test-cloudfiles-3",
   311  			GzipLevel:      Uint(9),
   312  		})
   313  	})
   314  	if err != nil {
   315  		t.Fatal(err)
   316  	}
   317  
   318  	if cloudfilesUpdateResp1.Name != "new-test-cloudfiles" {
   319  		t.Errorf("bad name: %q", cloudfilesUpdateResp1.Name)
   320  	}
   321  	if cloudfilesUpdateResp1.User != "new-user" {
   322  		t.Errorf("bad user: %q", cloudfilesUpdateResp1.User)
   323  	}
   324  	if cloudfilesUpdateResp1.GzipLevel != 0 {
   325  		t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp1.GzipLevel)
   326  	}
   327  	if cloudfilesUpdateResp1.Period != 0 {
   328  		t.Errorf("bad period: %q", cloudfilesUpdateResp1.Period)
   329  	}
   330  	if cloudfilesUpdateResp1.FormatVersion != 2 {
   331  		t.Errorf("bad format_version: %q", cloudfilesUpdateResp1.FormatVersion)
   332  	}
   333  	if cloudfilesUpdateResp1.CompressionCodec != "zstd" {
   334  		t.Errorf("bad compression_codec: %q", cloudfilesUpdateResp1.CompressionCodec)
   335  	}
   336  	if cloudfilesUpdateResp1.GzipLevel != 0 {
   337  		t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp1.GzipLevel)
   338  	}
   339  
   340  	if cloudfilesUpdateResp2.CompressionCodec != "zstd" {
   341  		t.Errorf("bad compression_codec: %q", cloudfilesUpdateResp2.CompressionCodec)
   342  	}
   343  	if cloudfilesUpdateResp2.GzipLevel != 0 {
   344  		t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp2.GzipLevel)
   345  	}
   346  
   347  	if cloudfilesUpdateResp3.CompressionCodec != "" {
   348  		t.Errorf("bad compression_codec: %q", cloudfilesUpdateResp3.CompressionCodec)
   349  	}
   350  	if cloudfilesUpdateResp3.GzipLevel != 9 {
   351  		t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp3.GzipLevel)
   352  	}
   353  
   354  	// Delete
   355  	record(t, "cloudfiles/delete", func(c *Client) {
   356  		err = c.DeleteCloudfiles(&DeleteCloudfilesInput{
   357  			ServiceID:      testServiceID,
   358  			ServiceVersion: tv.Number,
   359  			Name:           "new-test-cloudfiles",
   360  		})
   361  	})
   362  	if err != nil {
   363  		t.Fatal(err)
   364  	}
   365  }
   366  
   367  func TestClient_ListCloudfiles_validation(t *testing.T) {
   368  	var err error
   369  	_, err = testClient.ListCloudfiles(&ListCloudfilesInput{
   370  		ServiceID: "",
   371  	})
   372  	if err != ErrMissingServiceID {
   373  		t.Errorf("bad error: %s", err)
   374  	}
   375  
   376  	_, err = testClient.ListCloudfiles(&ListCloudfilesInput{
   377  		ServiceID:      "foo",
   378  		ServiceVersion: 0,
   379  	})
   380  	if err != ErrMissingServiceVersion {
   381  		t.Errorf("bad error: %s", err)
   382  	}
   383  }
   384  
   385  func TestClient_CreateCloudfiles_validation(t *testing.T) {
   386  	var err error
   387  	_, err = testClient.CreateCloudfiles(&CreateCloudfilesInput{
   388  		ServiceID: "",
   389  	})
   390  	if err != ErrMissingServiceID {
   391  		t.Errorf("bad error: %s", err)
   392  	}
   393  
   394  	_, err = testClient.CreateCloudfiles(&CreateCloudfilesInput{
   395  		ServiceID:      "foo",
   396  		ServiceVersion: 0,
   397  	})
   398  	if err != ErrMissingServiceVersion {
   399  		t.Errorf("bad error: %s", err)
   400  	}
   401  }
   402  
   403  func TestClient_GetCloudfiles_validation(t *testing.T) {
   404  	var err error
   405  	_, err = testClient.GetCloudfiles(&GetCloudfilesInput{
   406  		ServiceID: "",
   407  	})
   408  	if err != ErrMissingServiceID {
   409  		t.Errorf("bad error: %s", err)
   410  	}
   411  
   412  	_, err = testClient.GetCloudfiles(&GetCloudfilesInput{
   413  		ServiceID:      "foo",
   414  		ServiceVersion: 0,
   415  	})
   416  	if err != ErrMissingServiceVersion {
   417  		t.Errorf("bad error: %s", err)
   418  	}
   419  
   420  	_, err = testClient.GetCloudfiles(&GetCloudfilesInput{
   421  		ServiceID:      "foo",
   422  		ServiceVersion: 1,
   423  		Name:           "",
   424  	})
   425  	if err != ErrMissingName {
   426  		t.Errorf("bad error: %s", err)
   427  	}
   428  }
   429  
   430  func TestClient_UpdateCloudfiles_validation(t *testing.T) {
   431  	var err error
   432  	_, err = testClient.UpdateCloudfiles(&UpdateCloudfilesInput{
   433  		ServiceID: "",
   434  	})
   435  	if err != ErrMissingServiceID {
   436  		t.Errorf("bad error: %s", err)
   437  	}
   438  
   439  	_, err = testClient.UpdateCloudfiles(&UpdateCloudfilesInput{
   440  		ServiceID:      "foo",
   441  		ServiceVersion: 0,
   442  	})
   443  	if err != ErrMissingServiceVersion {
   444  		t.Errorf("bad error: %s", err)
   445  	}
   446  
   447  	_, err = testClient.UpdateCloudfiles(&UpdateCloudfilesInput{
   448  		ServiceID:      "foo",
   449  		ServiceVersion: 1,
   450  		Name:           "",
   451  	})
   452  	if err != ErrMissingName {
   453  		t.Errorf("bad error: %s", err)
   454  	}
   455  }
   456  
   457  func TestClient_DeleteCloudfiles_validation(t *testing.T) {
   458  	var err error
   459  	err = testClient.DeleteCloudfiles(&DeleteCloudfilesInput{
   460  		ServiceID: "",
   461  	})
   462  	if err != ErrMissingServiceID {
   463  		t.Errorf("bad error: %s", err)
   464  	}
   465  
   466  	err = testClient.DeleteCloudfiles(&DeleteCloudfilesInput{
   467  		ServiceID:      "foo",
   468  		ServiceVersion: 0,
   469  	})
   470  	if err != ErrMissingServiceVersion {
   471  		t.Errorf("bad error: %s", err)
   472  	}
   473  
   474  	err = testClient.DeleteCloudfiles(&DeleteCloudfilesInput{
   475  		ServiceID:      "foo",
   476  		ServiceVersion: 1,
   477  		Name:           "",
   478  	})
   479  	if err != ErrMissingName {
   480  		t.Errorf("bad error: %s", err)
   481  	}
   482  }