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

     1  package fastly
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestClient_Headers(t *testing.T) {
     8  	t.Parallel()
     9  
    10  	var err error
    11  	var tv *Version
    12  	record(t, "headers/version", func(c *Client) {
    13  		tv = testVersion(t, c)
    14  	})
    15  
    16  	// Create
    17  	var h *Header
    18  	record(t, "headers/create", func(c *Client) {
    19  		h, err = c.CreateHeader(&CreateHeaderInput{
    20  			ServiceID:      testServiceID,
    21  			ServiceVersion: tv.Number,
    22  			Name:           "test-header",
    23  			Action:         HeaderActionSet,
    24  			IgnoreIfSet:    false,
    25  			Type:           HeaderTypeRequest,
    26  			Destination:    "http.foo",
    27  			Source:         "client.ip",
    28  			Regex:          "foobar",
    29  			Substitution:   "123",
    30  			Priority:       Uint(50),
    31  		})
    32  	})
    33  	if err != nil {
    34  		t.Fatal(err)
    35  	}
    36  
    37  	// Ensure deleted
    38  	defer func() {
    39  		record(t, "headers/cleanup", func(c *Client) {
    40  			c.DeleteHeader(&DeleteHeaderInput{
    41  				ServiceID:      testServiceID,
    42  				ServiceVersion: tv.Number,
    43  				Name:           "test-header",
    44  			})
    45  
    46  			c.DeleteHeader(&DeleteHeaderInput{
    47  				ServiceID:      testServiceID,
    48  				ServiceVersion: tv.Number,
    49  				Name:           "new-test-header",
    50  			})
    51  		})
    52  	}()
    53  
    54  	if h.Name != "test-header" {
    55  		t.Errorf("bad name: %q", h.Name)
    56  	}
    57  	if h.Action != HeaderActionSet {
    58  		t.Errorf("bad header_action_set: %q", h.Action)
    59  	}
    60  	if h.IgnoreIfSet != false {
    61  		t.Errorf("bad ignore_if_set: %t", h.IgnoreIfSet)
    62  	}
    63  	if h.Type != HeaderTypeRequest {
    64  		t.Errorf("bad type: %q", h.Type)
    65  	}
    66  	if h.Destination != "http.foo" {
    67  		t.Errorf("bad destination: %q", h.Destination)
    68  	}
    69  	if h.Source != "client.ip" {
    70  		t.Errorf("bad source: %q", h.Source)
    71  	}
    72  	if h.Regex != "foobar" {
    73  		t.Errorf("bad regex: %q", h.Regex)
    74  	}
    75  	if h.Substitution != "123" {
    76  		t.Errorf("bad substitution: %q", h.Substitution)
    77  	}
    78  	if h.Priority != 50 {
    79  		t.Errorf("bad priority: %d", h.Priority)
    80  	}
    81  
    82  	// List
    83  	var hs []*Header
    84  	record(t, "headers/list", func(c *Client) {
    85  		hs, err = c.ListHeaders(&ListHeadersInput{
    86  			ServiceID:      testServiceID,
    87  			ServiceVersion: tv.Number,
    88  		})
    89  	})
    90  	if err != nil {
    91  		t.Fatal(err)
    92  	}
    93  	if len(hs) < 1 {
    94  		t.Errorf("bad headers: %v", hs)
    95  	}
    96  
    97  	// Get
    98  	var nh *Header
    99  	record(t, "headers/get", func(c *Client) {
   100  		nh, err = c.GetHeader(&GetHeaderInput{
   101  			ServiceID:      testServiceID,
   102  			ServiceVersion: tv.Number,
   103  			Name:           "test-header",
   104  		})
   105  	})
   106  	if err != nil {
   107  		t.Fatal(err)
   108  	}
   109  	if h.Name != nh.Name {
   110  		t.Errorf("bad name: %q (%q)", h.Name, nh.Name)
   111  	}
   112  	if h.Action != nh.Action {
   113  		t.Errorf("bad header_action_set: %q", h.Action)
   114  	}
   115  	if h.IgnoreIfSet != nh.IgnoreIfSet {
   116  		t.Errorf("bad ignore_if_set: %t", h.IgnoreIfSet)
   117  	}
   118  	if h.Type != nh.Type {
   119  		t.Errorf("bad type: %q", h.Type)
   120  	}
   121  	if h.Destination != nh.Destination {
   122  		t.Errorf("bad destination: %q", h.Destination)
   123  	}
   124  	if h.Source != nh.Source {
   125  		t.Errorf("bad source: %q", h.Source)
   126  	}
   127  	if h.Regex != nh.Regex {
   128  		t.Errorf("bad regex: %q", h.Regex)
   129  	}
   130  	if h.Substitution != nh.Substitution {
   131  		t.Errorf("bad substitution: %q", h.Substitution)
   132  	}
   133  	if h.Priority != nh.Priority {
   134  		t.Errorf("bad priority: %d", h.Priority)
   135  	}
   136  
   137  	// Update
   138  	var uh *Header
   139  	record(t, "headers/update", func(c *Client) {
   140  		uh, err = c.UpdateHeader(&UpdateHeaderInput{
   141  			ServiceID:      testServiceID,
   142  			ServiceVersion: tv.Number,
   143  			Name:           "test-header",
   144  			NewName:        String("new-test-header"),
   145  			Action:         PHeaderAction(HeaderActionAppend),
   146  			Type:           PHeaderType(HeaderTypeFetch),
   147  		})
   148  	})
   149  	if err != nil {
   150  		t.Fatal(err)
   151  	}
   152  	if uh.Name != "new-test-header" {
   153  		t.Errorf("bad name: %q", uh.Name)
   154  	}
   155  
   156  	// Delete
   157  	record(t, "headers/delete", func(c *Client) {
   158  		err = c.DeleteHeader(&DeleteHeaderInput{
   159  			ServiceID:      testServiceID,
   160  			ServiceVersion: tv.Number,
   161  			Name:           "new-test-header",
   162  		})
   163  	})
   164  	if err != nil {
   165  		t.Fatal(err)
   166  	}
   167  }
   168  
   169  func TestClient_ListHeaders_validation(t *testing.T) {
   170  	var err error
   171  	_, err = testClient.ListHeaders(&ListHeadersInput{
   172  		ServiceID: "",
   173  	})
   174  	if err != ErrMissingServiceID {
   175  		t.Errorf("bad error: %s", err)
   176  	}
   177  
   178  	_, err = testClient.ListHeaders(&ListHeadersInput{
   179  		ServiceID:      "foo",
   180  		ServiceVersion: 0,
   181  	})
   182  	if err != ErrMissingServiceVersion {
   183  		t.Errorf("bad error: %s", err)
   184  	}
   185  }
   186  
   187  func TestClient_CreateHeader_validation(t *testing.T) {
   188  	var err error
   189  	_, err = testClient.CreateHeader(&CreateHeaderInput{
   190  		ServiceID: "",
   191  	})
   192  	if err != ErrMissingServiceID {
   193  		t.Errorf("bad error: %s", err)
   194  	}
   195  
   196  	_, err = testClient.CreateHeader(&CreateHeaderInput{
   197  		ServiceID:      "foo",
   198  		ServiceVersion: 0,
   199  	})
   200  	if err != ErrMissingServiceVersion {
   201  		t.Errorf("bad error: %s", err)
   202  	}
   203  }
   204  
   205  func TestClient_GetHeader_validation(t *testing.T) {
   206  	var err error
   207  	_, err = testClient.GetHeader(&GetHeaderInput{
   208  		ServiceID: "",
   209  	})
   210  	if err != ErrMissingServiceID {
   211  		t.Errorf("bad error: %s", err)
   212  	}
   213  
   214  	_, err = testClient.GetHeader(&GetHeaderInput{
   215  		ServiceID:      "foo",
   216  		ServiceVersion: 0,
   217  	})
   218  	if err != ErrMissingServiceVersion {
   219  		t.Errorf("bad error: %s", err)
   220  	}
   221  
   222  	_, err = testClient.GetHeader(&GetHeaderInput{
   223  		ServiceID:      "foo",
   224  		ServiceVersion: 1,
   225  		Name:           "",
   226  	})
   227  	if err != ErrMissingName {
   228  		t.Errorf("bad error: %s", err)
   229  	}
   230  }
   231  
   232  func TestClient_UpdateHeader_validation(t *testing.T) {
   233  	var err error
   234  	_, err = testClient.UpdateHeader(&UpdateHeaderInput{
   235  		ServiceID: "",
   236  	})
   237  	if err != ErrMissingServiceID {
   238  		t.Errorf("bad error: %s", err)
   239  	}
   240  
   241  	_, err = testClient.UpdateHeader(&UpdateHeaderInput{
   242  		ServiceID:      "foo",
   243  		ServiceVersion: 0,
   244  	})
   245  	if err != ErrMissingServiceVersion {
   246  		t.Errorf("bad error: %s", err)
   247  	}
   248  
   249  	_, err = testClient.UpdateHeader(&UpdateHeaderInput{
   250  		ServiceID:      "foo",
   251  		ServiceVersion: 1,
   252  		Name:           "",
   253  	})
   254  	if err != ErrMissingName {
   255  		t.Errorf("bad error: %s", err)
   256  	}
   257  }
   258  
   259  func TestClient_DeleteHeader_validation(t *testing.T) {
   260  	var err error
   261  	err = testClient.DeleteHeader(&DeleteHeaderInput{
   262  		ServiceID: "",
   263  	})
   264  	if err != ErrMissingServiceID {
   265  		t.Errorf("bad error: %s", err)
   266  	}
   267  
   268  	err = testClient.DeleteHeader(&DeleteHeaderInput{
   269  		ServiceID:      "foo",
   270  		ServiceVersion: 0,
   271  	})
   272  	if err != ErrMissingServiceVersion {
   273  		t.Errorf("bad error: %s", err)
   274  	}
   275  
   276  	err = testClient.DeleteHeader(&DeleteHeaderInput{
   277  		ServiceID:      "foo",
   278  		ServiceVersion: 1,
   279  		Name:           "",
   280  	})
   281  	if err != ErrMissingName {
   282  		t.Errorf("bad error: %s", err)
   283  	}
   284  }