github.com/fastly/go-fastly/v5@v5.3.0/fastly/pubsub_test.go (about) 1 package fastly 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func TestClient_Pubsubs(t *testing.T) { 9 t.Parallel() 10 11 var err error 12 var tv *Version 13 record(t, "pubsubs/version", func(c *Client) { 14 tv = testVersion(t, c) 15 }) 16 17 // Create 18 var pubsub *Pubsub 19 record(t, "pubsubs/create", func(c *Client) { 20 pubsub, err = c.CreatePubsub(&CreatePubsubInput{ 21 ServiceID: testServiceID, 22 ServiceVersion: tv.Number, 23 Name: "test-pubsub", 24 Topic: "topic", 25 User: "user", 26 SecretKey: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9aQoqdHVA86oq\nTdRQ5HqwMfpiLBBMKNQcAJsO71RKNrDWwJJZiyYbvM4FOWRZFtRSdPIDgX0C0Wg1\nNnqWYvHDyA5Ug+T8kowiQDn56dU6Km2FWO4wnqZeA8q5G7rQVXlqdibuiP7FglHA\neURUzFsqyymXMUGrqDPqrHsVWC2E3NTJEb4QlywtrwI13qbhlvTx6/9oRfUjytXJ\nRuUIE5xL8yhRCagNr5ZW250aa+wBwu5DSCk5fDNr0eDuZjw84WHDll+mHxBFGV+X\nKJ5jCOmGumGqjVWZesJpNN1My3M9bsY9layNJJ0eiDeHDEi/yXhhO/mNEXhvhq/R\nfN0Jh2A3AgMBAAECggEAef+CEL5aF6/aVs0yh7fiXkKSp1ECXkud8ztgpEn63KJF\nXM1EdnBt50fA2xSQUeGmeEXi6+cngf0nRb8FToAEgLoGoOEjSJuLrzP3I8U9Fe3m\nBRG2uZI2Ti/bD0eRGEc1oSDhCpsqnkTGK1bwcD4AKpwY+c08Izh/2BOoY6McDoqh\ndQ89jzTuMtD4cNlnPiIrY9HbxoNjshK2ax1OaeXyYKZFG1TxqMFv5gA/G5+S3Cwr\nVG4fkAxYi5vdIK3b8jUXrTM/kpoTl+d3dlQ7rRZYf7KyT31/HtJ/GNzxFI6upzO7\niDNrrUOyeOPjWXdzUh9budv3j+6UfbYK7uZIoebHIQKBgQDykYX1L/akGaOC2tfS\njzCWUzPxGFYVZQ7zD1PM6UyouuS1KLURDEGk9RxqVzTPh/pYd8Ivnz3vOVski5Zt\n19ozLGxdtDhn122DcnVpfCdYzHBdAzPCzORenFohX+MhiX5fEotTlVi7wfOmzTP5\nhUCMSd/17bJrV4XMLhkdrMRBFQKBgQDH5fwV7o+Ej/ZfcdGIa3mAFazToPDzxhHU\nnwADxaxpNGKRU03XCaiYkykarLYdG6Rk+7dXUv8eLy+6Dcq1SWQtfCWKEor++IIp\n1RwWmFHfYriHGkmxSkkEkLFvL8old9xM5YWbEXc4QIXvnfR4BZxdyJHVzIDdbI2i\nFgcn17U3GwKBgDd1njMY7ENIuWHJt16k7m7wRwfwkH4DxQ89ieNn0+cgE/p3fC6R\nptCYWg7WMXThmhNwDi3lMrvnWTdZ0uL6XyEkHwKtmdfkIV3UZZPglv5uf6JEgSkg\nv3YCOXk3+y5HyWTjUIejtc334kVY1XFPThrFKTeJSSnRsP2l7IgkYBqhAoGAYGsr\nM3z1FrDF2nWw5odIfKJ30UAw2LRyB0eGH0uqhLgyzvwKcK2E98sLqYUi9llN6zOK\n1IEA8xM5hxl97AFxY4sdJEMbbi55wim7uZ5Q51nbvbbNUsmM/Lm6C/JWI8pzpVeU\nIR7EjYp50AE1WOsD6CyFQ0W35pWkn0jWvL4L938CgYEAlax4dLE5+YCG5DeLT1/N\nin6kQjl7JS4oCNlPEj6aRPLX2OJresI7oOn+uNatKvlVyfPm6rdxeHCmER1FpR7Q\nA/aNVjPeViKT/R4nK9ytsa+s/1IJVrwLFHJK3toGE660g5w3vKrCjWisMdP4yzzQ\nbv1KwcKoQbNVXwauH79JKc0=\n-----END PRIVATE KEY-----\n", 27 ProjectID: "project-id", 28 FormatVersion: 2, 29 Format: "format", 30 Placement: "waf_debug", 31 }) 32 }) 33 if err != nil { 34 t.Fatal(err) 35 } 36 37 // Ensure deleted 38 defer func() { 39 record(t, "pubsubs/cleanup", func(c *Client) { 40 c.DeletePubsub(&DeletePubsubInput{ 41 ServiceID: testServiceID, 42 ServiceVersion: tv.Number, 43 Name: "test-pubsub", 44 }) 45 46 c.DeletePubsub(&DeletePubsubInput{ 47 ServiceID: testServiceID, 48 ServiceVersion: tv.Number, 49 Name: "new-test-pubsub", 50 }) 51 }) 52 }() 53 54 if pubsub.Name != "test-pubsub" { 55 t.Errorf("bad name: %q", pubsub.Name) 56 } 57 if pubsub.Topic != "topic" { 58 t.Errorf("bad topic: %q", pubsub.Topic) 59 } 60 if pubsub.User != "user" { 61 t.Errorf("bad user: %q", pubsub.User) 62 } 63 if strings.TrimSpace(pubsub.SecretKey) != `-----BEGIN PRIVATE KEY----- 64 MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9aQoqdHVA86oq 65 TdRQ5HqwMfpiLBBMKNQcAJsO71RKNrDWwJJZiyYbvM4FOWRZFtRSdPIDgX0C0Wg1 66 NnqWYvHDyA5Ug+T8kowiQDn56dU6Km2FWO4wnqZeA8q5G7rQVXlqdibuiP7FglHA 67 eURUzFsqyymXMUGrqDPqrHsVWC2E3NTJEb4QlywtrwI13qbhlvTx6/9oRfUjytXJ 68 RuUIE5xL8yhRCagNr5ZW250aa+wBwu5DSCk5fDNr0eDuZjw84WHDll+mHxBFGV+X 69 KJ5jCOmGumGqjVWZesJpNN1My3M9bsY9layNJJ0eiDeHDEi/yXhhO/mNEXhvhq/R 70 fN0Jh2A3AgMBAAECggEAef+CEL5aF6/aVs0yh7fiXkKSp1ECXkud8ztgpEn63KJF 71 XM1EdnBt50fA2xSQUeGmeEXi6+cngf0nRb8FToAEgLoGoOEjSJuLrzP3I8U9Fe3m 72 BRG2uZI2Ti/bD0eRGEc1oSDhCpsqnkTGK1bwcD4AKpwY+c08Izh/2BOoY6McDoqh 73 dQ89jzTuMtD4cNlnPiIrY9HbxoNjshK2ax1OaeXyYKZFG1TxqMFv5gA/G5+S3Cwr 74 VG4fkAxYi5vdIK3b8jUXrTM/kpoTl+d3dlQ7rRZYf7KyT31/HtJ/GNzxFI6upzO7 75 iDNrrUOyeOPjWXdzUh9budv3j+6UfbYK7uZIoebHIQKBgQDykYX1L/akGaOC2tfS 76 jzCWUzPxGFYVZQ7zD1PM6UyouuS1KLURDEGk9RxqVzTPh/pYd8Ivnz3vOVski5Zt 77 19ozLGxdtDhn122DcnVpfCdYzHBdAzPCzORenFohX+MhiX5fEotTlVi7wfOmzTP5 78 hUCMSd/17bJrV4XMLhkdrMRBFQKBgQDH5fwV7o+Ej/ZfcdGIa3mAFazToPDzxhHU 79 nwADxaxpNGKRU03XCaiYkykarLYdG6Rk+7dXUv8eLy+6Dcq1SWQtfCWKEor++IIp 80 1RwWmFHfYriHGkmxSkkEkLFvL8old9xM5YWbEXc4QIXvnfR4BZxdyJHVzIDdbI2i 81 Fgcn17U3GwKBgDd1njMY7ENIuWHJt16k7m7wRwfwkH4DxQ89ieNn0+cgE/p3fC6R 82 ptCYWg7WMXThmhNwDi3lMrvnWTdZ0uL6XyEkHwKtmdfkIV3UZZPglv5uf6JEgSkg 83 v3YCOXk3+y5HyWTjUIejtc334kVY1XFPThrFKTeJSSnRsP2l7IgkYBqhAoGAYGsr 84 M3z1FrDF2nWw5odIfKJ30UAw2LRyB0eGH0uqhLgyzvwKcK2E98sLqYUi9llN6zOK 85 1IEA8xM5hxl97AFxY4sdJEMbbi55wim7uZ5Q51nbvbbNUsmM/Lm6C/JWI8pzpVeU 86 IR7EjYp50AE1WOsD6CyFQ0W35pWkn0jWvL4L938CgYEAlax4dLE5+YCG5DeLT1/N 87 in6kQjl7JS4oCNlPEj6aRPLX2OJresI7oOn+uNatKvlVyfPm6rdxeHCmER1FpR7Q 88 A/aNVjPeViKT/R4nK9ytsa+s/1IJVrwLFHJK3toGE660g5w3vKrCjWisMdP4yzzQ 89 bv1KwcKoQbNVXwauH79JKc0= 90 -----END PRIVATE KEY-----` { 91 t.Errorf("bad secret_key: %q", pubsub.SecretKey) 92 } 93 if pubsub.ProjectID != "project-id" { 94 t.Errorf("bad project_id: %q", pubsub.ProjectID) 95 } 96 if pubsub.FormatVersion != 2 { 97 t.Errorf("bad format_version: %q", pubsub.FormatVersion) 98 } 99 if pubsub.Format != "format" { 100 t.Errorf("bad format: %q", pubsub.Format) 101 } 102 if pubsub.Placement != "waf_debug" { 103 t.Errorf("bad placement: %q", pubsub.Placement) 104 } 105 106 // List 107 var pubsubs []*Pubsub 108 record(t, "pubsubs/list", func(c *Client) { 109 pubsubs, err = c.ListPubsubs(&ListPubsubsInput{ 110 ServiceID: testServiceID, 111 ServiceVersion: tv.Number, 112 }) 113 }) 114 if err != nil { 115 t.Fatal(err) 116 } 117 if len(pubsubs) < 1 { 118 t.Errorf("bad pubsubs: %v", pubsubs) 119 } 120 121 // Get 122 var npubsub *Pubsub 123 record(t, "pubsubs/get", func(c *Client) { 124 npubsub, err = c.GetPubsub(&GetPubsubInput{ 125 ServiceID: testServiceID, 126 ServiceVersion: tv.Number, 127 Name: "test-pubsub", 128 }) 129 }) 130 if err != nil { 131 t.Fatal(err) 132 } 133 if pubsub.Name != npubsub.Name { 134 t.Errorf("bad name: %q", pubsub.Name) 135 } 136 if pubsub.Topic != npubsub.Topic { 137 t.Errorf("bad topic: %q", pubsub.Topic) 138 } 139 if pubsub.User != npubsub.User { 140 t.Errorf("bad user: %q", pubsub.User) 141 } 142 if pubsub.SecretKey != npubsub.SecretKey { 143 t.Errorf("bad secret_key: %q", pubsub.SecretKey) 144 } 145 if pubsub.ProjectID != npubsub.ProjectID { 146 t.Errorf("bad project_id: %q", pubsub.ProjectID) 147 } 148 if pubsub.FormatVersion != npubsub.FormatVersion { 149 t.Errorf("bad format_version: %q", pubsub.FormatVersion) 150 } 151 if pubsub.Format != npubsub.Format { 152 t.Errorf("bad format: %q", pubsub.Format) 153 } 154 if pubsub.Placement != npubsub.Placement { 155 t.Errorf("bad placement: %q", pubsub.Placement) 156 } 157 158 // Update 159 var upubsub *Pubsub 160 record(t, "pubsubs/update", func(c *Client) { 161 upubsub, err = c.UpdatePubsub(&UpdatePubsubInput{ 162 ServiceID: testServiceID, 163 ServiceVersion: tv.Number, 164 Name: "test-pubsub", 165 NewName: String("new-test-pubsub"), 166 Topic: String("new-topic"), 167 }) 168 }) 169 if err != nil { 170 t.Fatal(err) 171 } 172 if upubsub.Name != "new-test-pubsub" { 173 t.Errorf("bad name: %q", upubsub.Name) 174 } 175 if upubsub.Topic != "new-topic" { 176 t.Errorf("bad topic: %q", upubsub.Topic) 177 } 178 179 // Delete 180 record(t, "pubsubs/delete", func(c *Client) { 181 err = c.DeletePubsub(&DeletePubsubInput{ 182 ServiceID: testServiceID, 183 ServiceVersion: tv.Number, 184 Name: "new-test-pubsub", 185 }) 186 }) 187 if err != nil { 188 t.Fatal(err) 189 } 190 } 191 192 func TestClient_ListPubsubs_validation(t *testing.T) { 193 var err error 194 _, err = testClient.ListPubsubs(&ListPubsubsInput{ 195 ServiceID: "", 196 }) 197 if err != ErrMissingServiceID { 198 t.Errorf("bad error: %s", err) 199 } 200 201 _, err = testClient.ListPubsubs(&ListPubsubsInput{ 202 ServiceID: "foo", 203 ServiceVersion: 0, 204 }) 205 if err != ErrMissingServiceVersion { 206 t.Errorf("bad error: %s", err) 207 } 208 } 209 210 func TestClient_CreatePubsub_validation(t *testing.T) { 211 var err error 212 _, err = testClient.CreatePubsub(&CreatePubsubInput{ 213 ServiceID: "", 214 }) 215 if err != ErrMissingServiceID { 216 t.Errorf("bad error: %s", err) 217 } 218 219 _, err = testClient.CreatePubsub(&CreatePubsubInput{ 220 ServiceID: "foo", 221 ServiceVersion: 0, 222 }) 223 if err != ErrMissingServiceVersion { 224 t.Errorf("bad error: %s", err) 225 } 226 } 227 228 func TestClient_GetPubsub_validation(t *testing.T) { 229 var err error 230 _, err = testClient.GetPubsub(&GetPubsubInput{ 231 ServiceID: "", 232 }) 233 if err != ErrMissingServiceID { 234 t.Errorf("bad error: %s", err) 235 } 236 237 _, err = testClient.GetPubsub(&GetPubsubInput{ 238 ServiceID: "foo", 239 ServiceVersion: 0, 240 }) 241 if err != ErrMissingServiceVersion { 242 t.Errorf("bad error: %s", err) 243 } 244 245 _, err = testClient.GetPubsub(&GetPubsubInput{ 246 ServiceID: "foo", 247 ServiceVersion: 1, 248 Name: "", 249 }) 250 if err != ErrMissingName { 251 t.Errorf("bad error: %s", err) 252 } 253 } 254 255 func TestClient_UpdatePubsub_validation(t *testing.T) { 256 var err error 257 _, err = testClient.UpdatePubsub(&UpdatePubsubInput{ 258 ServiceID: "", 259 }) 260 if err != ErrMissingServiceID { 261 t.Errorf("bad error: %s", err) 262 } 263 264 _, err = testClient.UpdatePubsub(&UpdatePubsubInput{ 265 ServiceID: "foo", 266 ServiceVersion: 0, 267 }) 268 if err != ErrMissingServiceVersion { 269 t.Errorf("bad error: %s", err) 270 } 271 272 _, err = testClient.UpdatePubsub(&UpdatePubsubInput{ 273 ServiceID: "foo", 274 ServiceVersion: 1, 275 Name: "", 276 }) 277 if err != ErrMissingName { 278 t.Errorf("bad error: %s", err) 279 } 280 } 281 282 func TestClient_DeletePubsub_validation(t *testing.T) { 283 var err error 284 err = testClient.DeletePubsub(&DeletePubsubInput{ 285 ServiceID: "", 286 }) 287 if err != ErrMissingServiceID { 288 t.Errorf("bad error: %s", err) 289 } 290 291 err = testClient.DeletePubsub(&DeletePubsubInput{ 292 ServiceID: "foo", 293 ServiceVersion: 0, 294 }) 295 if err != ErrMissingServiceVersion { 296 t.Errorf("bad error: %s", err) 297 } 298 299 err = testClient.DeletePubsub(&DeletePubsubInput{ 300 ServiceID: "foo", 301 ServiceVersion: 1, 302 Name: "", 303 }) 304 if err != ErrMissingName { 305 t.Errorf("bad error: %s", err) 306 } 307 }