github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/compute/v2/secgroups/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/vnpaycloud-console/gophercloud/v2/openstack/compute/v2/secgroups" 8 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 9 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 10 "github.com/vnpaycloud-console/gophercloud/v2/testhelper/client" 11 ) 12 13 const ( 14 serverID = "{serverID}" 15 groupID = "{groupID}" 16 ruleID = "{ruleID}" 17 ) 18 19 func TestList(t *testing.T) { 20 th.SetupHTTP() 21 defer th.TeardownHTTP() 22 23 mockListGroupsResponse(t) 24 25 count := 0 26 27 err := secgroups.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 28 count++ 29 actual, err := secgroups.ExtractSecurityGroups(page) 30 if err != nil { 31 t.Errorf("Failed to extract users: %v", err) 32 return false, err 33 } 34 35 expected := []secgroups.SecurityGroup{ 36 { 37 ID: groupID, 38 Description: "default", 39 Name: "default", 40 Rules: []secgroups.Rule{}, 41 TenantID: "openstack", 42 }, 43 } 44 45 th.CheckDeepEquals(t, expected, actual) 46 47 return true, nil 48 }) 49 50 th.AssertNoErr(t, err) 51 th.AssertEquals(t, 1, count) 52 } 53 54 func TestListByServer(t *testing.T) { 55 th.SetupHTTP() 56 defer th.TeardownHTTP() 57 58 mockListGroupsByServerResponse(t, serverID) 59 60 count := 0 61 62 err := secgroups.ListByServer(client.ServiceClient(), serverID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 63 count++ 64 actual, err := secgroups.ExtractSecurityGroups(page) 65 if err != nil { 66 t.Errorf("Failed to extract users: %v", err) 67 return false, err 68 } 69 70 expected := []secgroups.SecurityGroup{ 71 { 72 ID: groupID, 73 Description: "default", 74 Name: "default", 75 Rules: []secgroups.Rule{}, 76 TenantID: "openstack", 77 }, 78 } 79 80 th.CheckDeepEquals(t, expected, actual) 81 82 return true, nil 83 }) 84 85 th.AssertNoErr(t, err) 86 th.AssertEquals(t, 1, count) 87 } 88 89 func TestCreate(t *testing.T) { 90 th.SetupHTTP() 91 defer th.TeardownHTTP() 92 93 mockCreateGroupResponse(t) 94 95 opts := secgroups.CreateOpts{ 96 Name: "test", 97 Description: "something", 98 } 99 100 group, err := secgroups.Create(context.TODO(), client.ServiceClient(), opts).Extract() 101 th.AssertNoErr(t, err) 102 103 expected := &secgroups.SecurityGroup{ 104 ID: groupID, 105 Name: "test", 106 Description: "something", 107 TenantID: "openstack", 108 Rules: []secgroups.Rule{}, 109 } 110 th.AssertDeepEquals(t, expected, group) 111 } 112 113 func TestUpdate(t *testing.T) { 114 th.SetupHTTP() 115 defer th.TeardownHTTP() 116 117 mockUpdateGroupResponse(t, groupID) 118 119 description := "new_desc" 120 opts := secgroups.UpdateOpts{ 121 Name: "new_name", 122 Description: &description, 123 } 124 125 group, err := secgroups.Update(context.TODO(), client.ServiceClient(), groupID, opts).Extract() 126 th.AssertNoErr(t, err) 127 128 expected := &secgroups.SecurityGroup{ 129 ID: groupID, 130 Name: "new_name", 131 Description: "something", 132 TenantID: "openstack", 133 Rules: []secgroups.Rule{}, 134 } 135 th.AssertDeepEquals(t, expected, group) 136 } 137 138 func TestGet(t *testing.T) { 139 th.SetupHTTP() 140 defer th.TeardownHTTP() 141 142 mockGetGroupsResponse(t, groupID) 143 144 group, err := secgroups.Get(context.TODO(), client.ServiceClient(), groupID).Extract() 145 th.AssertNoErr(t, err) 146 147 expected := &secgroups.SecurityGroup{ 148 ID: groupID, 149 Description: "default", 150 Name: "default", 151 TenantID: "openstack", 152 Rules: []secgroups.Rule{ 153 { 154 FromPort: 80, 155 ToPort: 85, 156 IPProtocol: "TCP", 157 IPRange: secgroups.IPRange{CIDR: "0.0.0.0"}, 158 Group: secgroups.Group{TenantID: "openstack", Name: "default"}, 159 ParentGroupID: groupID, 160 ID: ruleID, 161 }, 162 }, 163 } 164 165 th.AssertDeepEquals(t, expected, group) 166 } 167 168 func TestGetNumericID(t *testing.T) { 169 th.SetupHTTP() 170 defer th.TeardownHTTP() 171 172 numericGroupID := 12345 173 174 mockGetNumericIDGroupResponse(t, numericGroupID) 175 176 group, err := secgroups.Get(context.TODO(), client.ServiceClient(), "12345").Extract() 177 th.AssertNoErr(t, err) 178 179 expected := &secgroups.SecurityGroup{ID: "12345"} 180 th.AssertDeepEquals(t, expected, group) 181 } 182 183 func TestGetNumericRuleID(t *testing.T) { 184 th.SetupHTTP() 185 defer th.TeardownHTTP() 186 187 numericGroupID := 12345 188 189 mockGetNumericIDGroupRuleResponse(t, numericGroupID) 190 191 group, err := secgroups.Get(context.TODO(), client.ServiceClient(), "12345").Extract() 192 th.AssertNoErr(t, err) 193 194 expected := &secgroups.SecurityGroup{ 195 ID: "12345", 196 Rules: []secgroups.Rule{ 197 { 198 ParentGroupID: "12345", 199 ID: "12345", 200 }, 201 }, 202 } 203 th.AssertDeepEquals(t, expected, group) 204 } 205 206 func TestDelete(t *testing.T) { 207 th.SetupHTTP() 208 defer th.TeardownHTTP() 209 210 mockDeleteGroupResponse(t, groupID) 211 212 err := secgroups.Delete(context.TODO(), client.ServiceClient(), groupID).ExtractErr() 213 th.AssertNoErr(t, err) 214 } 215 216 func TestAddRule(t *testing.T) { 217 th.SetupHTTP() 218 defer th.TeardownHTTP() 219 220 mockAddRuleResponse(t) 221 222 opts := secgroups.CreateRuleOpts{ 223 ParentGroupID: groupID, 224 FromPort: 22, 225 ToPort: 22, 226 IPProtocol: "TCP", 227 CIDR: "0.0.0.0/0", 228 } 229 230 rule, err := secgroups.CreateRule(context.TODO(), client.ServiceClient(), opts).Extract() 231 th.AssertNoErr(t, err) 232 233 expected := &secgroups.Rule{ 234 FromPort: 22, 235 ToPort: 22, 236 Group: secgroups.Group{}, 237 IPProtocol: "TCP", 238 ParentGroupID: groupID, 239 IPRange: secgroups.IPRange{CIDR: "0.0.0.0/0"}, 240 ID: ruleID, 241 } 242 243 th.AssertDeepEquals(t, expected, rule) 244 } 245 246 func TestAddRuleICMPZero(t *testing.T) { 247 th.SetupHTTP() 248 defer th.TeardownHTTP() 249 250 mockAddRuleResponseICMPZero(t) 251 252 opts := secgroups.CreateRuleOpts{ 253 ParentGroupID: groupID, 254 FromPort: 0, 255 ToPort: 0, 256 IPProtocol: "ICMP", 257 CIDR: "0.0.0.0/0", 258 } 259 260 rule, err := secgroups.CreateRule(context.TODO(), client.ServiceClient(), opts).Extract() 261 th.AssertNoErr(t, err) 262 263 expected := &secgroups.Rule{ 264 FromPort: 0, 265 ToPort: 0, 266 Group: secgroups.Group{}, 267 IPProtocol: "ICMP", 268 ParentGroupID: groupID, 269 IPRange: secgroups.IPRange{CIDR: "0.0.0.0/0"}, 270 ID: ruleID, 271 } 272 273 th.AssertDeepEquals(t, expected, rule) 274 } 275 276 func TestDeleteRule(t *testing.T) { 277 th.SetupHTTP() 278 defer th.TeardownHTTP() 279 280 mockDeleteRuleResponse(t, ruleID) 281 282 err := secgroups.DeleteRule(context.TODO(), client.ServiceClient(), ruleID).ExtractErr() 283 th.AssertNoErr(t, err) 284 } 285 286 func TestAddServer(t *testing.T) { 287 th.SetupHTTP() 288 defer th.TeardownHTTP() 289 290 mockAddServerToGroupResponse(t, serverID) 291 292 err := secgroups.AddServer(context.TODO(), client.ServiceClient(), serverID, "test").ExtractErr() 293 th.AssertNoErr(t, err) 294 } 295 296 func TestRemoveServer(t *testing.T) { 297 th.SetupHTTP() 298 defer th.TeardownHTTP() 299 300 mockRemoveServerFromGroupResponse(t, serverID) 301 302 err := secgroups.RemoveServer(context.TODO(), client.ServiceClient(), serverID, "test").ExtractErr() 303 th.AssertNoErr(t, err) 304 }