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 }