Skip to content

Commit c5ca544

Browse files
committed
add tests
1 parent 02c8df0 commit c5ca544

14 files changed

+3480
-0
lines changed
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
package network_services
2+
3+
import (
4+
"context"
5+
"net/http"
6+
"testing"
7+
8+
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/require"
10+
11+
"github.com/paloaltonetworks/scm-go/common"
12+
"github.com/paloaltonetworks/scm-go/generated/network_services"
13+
)
14+
15+
// Test_network_services_BGPAddressFamilyProfilesAPIService_Create tests the creation of a BGP address family profile.
16+
func Test_network_services_BGPAddressFamilyProfilesAPIService_Create(t *testing.T) {
17+
client := SetupNetworkSvcTestClient(t)
18+
profileName := "test-bgp-addr-fam-create-" + common.GenerateRandomString(6)
19+
20+
unicast := network_services.BgpAddressFamily{
21+
Enable: common.BoolPtr(true),
22+
}
23+
ipv4 := network_services.BgpAddressFamilyProfilesIpv4{
24+
Unicast: &unicast,
25+
}
26+
profile := network_services.BgpAddressFamilyProfiles{
27+
Name: profileName,
28+
Folder: common.StringPtr("Prisma Access"),
29+
Ipv4: &ipv4,
30+
}
31+
32+
t.Logf("Creating BGP address family profile with name: %s", profileName)
33+
req := client.BGPAddressFamilyProfilesAPI.CreateBGPAddressFamilyProfiles(context.Background()).BgpAddressFamilyProfiles(profile)
34+
res, httpRes, err := req.Execute()
35+
36+
if err != nil {
37+
handleAPIError(err)
38+
}
39+
require.NoError(t, err, "Failed to create BGP address family profile")
40+
assert.Equal(t, http.StatusCreated, httpRes.StatusCode, "Expected 201 Created status")
41+
require.NotNil(t, res, "Response body should not be nil")
42+
43+
createdProfileID := res.Id
44+
45+
// Cleanup the created profile
46+
defer func() {
47+
t.Logf("Cleaning up BGP address family profile with ID: %s", *createdProfileID)
48+
_, errDel := client.BGPAddressFamilyProfilesAPI.DeleteBGPAddressFamilyProfilesByID(context.Background(), *createdProfileID).Execute()
49+
if errDel != nil {
50+
t.Logf("Cleanup failed: %v", errDel)
51+
}
52+
}()
53+
54+
// Verify the response matches key input fields
55+
assert.Equal(t, profileName, res.Name, "Created profile name should match")
56+
}
57+
58+
// Test_network_services_BGPAddressFamilyProfilesAPIService_GetByID tests retrieving a BGP address family profile by ID.
59+
func Test_network_services_BGPAddressFamilyProfilesAPIService_GetByID(t *testing.T) {
60+
client := SetupNetworkSvcTestClient(t)
61+
profileName := "test-bgp-addr-fam-get-" + common.GenerateRandomString(6)
62+
63+
unicast := network_services.BgpAddressFamily{
64+
Enable: common.BoolPtr(true),
65+
}
66+
ipv4 := network_services.BgpAddressFamilyProfilesIpv4{
67+
Unicast: &unicast,
68+
}
69+
profile := network_services.BgpAddressFamilyProfiles{
70+
Name: profileName,
71+
Folder: common.StringPtr("Prisma Access"),
72+
Ipv4: &ipv4,
73+
}
74+
75+
// Setup: Create a profile first
76+
createRes, _, err := client.BGPAddressFamilyProfilesAPI.CreateBGPAddressFamilyProfiles(context.Background()).BgpAddressFamilyProfiles(profile).Execute()
77+
require.NoError(t, err, "Failed to create profile for get test setup")
78+
createdProfileID := createRes.Id
79+
80+
defer func() {
81+
client.BGPAddressFamilyProfilesAPI.DeleteBGPAddressFamilyProfilesByID(context.Background(), *createdProfileID).Execute()
82+
}()
83+
84+
// Test: Retrieve the profile
85+
getRes, httpResGet, errGet := client.BGPAddressFamilyProfilesAPI.GetBGPAddressFamilyProfilesByID(context.Background(), *createdProfileID).Execute()
86+
87+
require.NoError(t, errGet, "Failed to get BGP address family profile by ID")
88+
assert.Equal(t, http.StatusOK, httpResGet.StatusCode, "Expected 200 OK status")
89+
require.NotNil(t, getRes, "Get response should not be nil")
90+
91+
// Verify the retrieved data
92+
assert.Equal(t, profileName, getRes.Name, "Profile name should match")
93+
assert.Equal(t, *createdProfileID, *getRes.Id, "Profile ID should match")
94+
}
95+
96+
// Test_network_services_BGPAddressFamilyProfilesAPIService_UpdateByID tests updating a BGP address family profile.
97+
func Test_network_services_BGPAddressFamilyProfilesAPIService_UpdateByID(t *testing.T) {
98+
client := SetupNetworkSvcTestClient(t)
99+
profileName := "test-bgp-addr-fam-update-" + common.GenerateRandomString(6)
100+
101+
unicast := network_services.BgpAddressFamily{
102+
Enable: common.BoolPtr(true),
103+
}
104+
ipv4 := network_services.BgpAddressFamilyProfilesIpv4{
105+
Unicast: &unicast,
106+
}
107+
profile := network_services.BgpAddressFamilyProfiles{
108+
Name: profileName,
109+
Folder: common.StringPtr("Prisma Access"),
110+
Ipv4: &ipv4,
111+
}
112+
113+
// Setup: Create a profile first
114+
createRes, _, err := client.BGPAddressFamilyProfilesAPI.CreateBGPAddressFamilyProfiles(context.Background()).BgpAddressFamilyProfiles(profile).Execute()
115+
require.NoError(t, err, "Failed to create profile for update test setup")
116+
createdProfileID := createRes.Id
117+
118+
defer func() {
119+
client.BGPAddressFamilyProfilesAPI.DeleteBGPAddressFamilyProfilesByID(context.Background(), *createdProfileID).Execute()
120+
}()
121+
122+
// Test: Update the profile with multicast enabled
123+
multicast := network_services.BgpAddressFamily{
124+
Enable: common.BoolPtr(true),
125+
}
126+
updatedIpv4 := network_services.BgpAddressFamilyProfilesIpv4{
127+
Unicast: &unicast,
128+
Multicast: &multicast,
129+
}
130+
updatedProfile := network_services.BgpAddressFamilyProfiles{
131+
Name: profileName,
132+
Folder: common.StringPtr("Prisma Access"),
133+
Ipv4: &updatedIpv4,
134+
}
135+
136+
updateRes, httpResUpdate, errUpdate := client.BGPAddressFamilyProfilesAPI.UpdateBGPAddressFamilyProfilesByID(context.Background(), *createdProfileID).BgpAddressFamilyProfiles(updatedProfile).Execute()
137+
138+
require.NoError(t, errUpdate, "Failed to update BGP address family profile")
139+
assert.Equal(t, http.StatusOK, httpResUpdate.StatusCode, "Expected 200 OK status")
140+
require.NotNil(t, updateRes, "Update response should not be nil")
141+
142+
// Verify the updated data
143+
assert.Equal(t, profileName, updateRes.Name, "Profile name should match")
144+
assert.Equal(t, *createdProfileID, *updateRes.Id, "Profile ID should match")
145+
}
146+
147+
// Test_network_services_BGPAddressFamilyProfilesAPIService_List tests listing BGP address family profiles.
148+
func Test_network_services_BGPAddressFamilyProfilesAPIService_List(t *testing.T) {
149+
t.Skip("List response contains array fields that cause model deserialization error")
150+
client := SetupNetworkSvcTestClient(t)
151+
152+
// Test: List profiles
153+
listRes, httpResList, errList := client.BGPAddressFamilyProfilesAPI.ListBGPAddressFamilyProfiles(context.Background()).Folder("Prisma Access").Execute()
154+
155+
require.NoError(t, errList, "Failed to list BGP address family profiles")
156+
assert.Equal(t, http.StatusOK, httpResList.StatusCode, "Expected 200 OK status")
157+
require.NotNil(t, listRes, "List response should not be nil")
158+
require.NotNil(t, listRes.Data, "List response data should not be nil")
159+
}
160+
161+
// Test_network_services_BGPAddressFamilyProfilesAPIService_DeleteByID tests deleting a BGP address family profile by ID.
162+
func Test_network_services_BGPAddressFamilyProfilesAPIService_DeleteByID(t *testing.T) {
163+
client := SetupNetworkSvcTestClient(t)
164+
profileName := "test-bgp-addr-fam-delete-" + common.GenerateRandomString(6)
165+
166+
unicast := network_services.BgpAddressFamily{
167+
Enable: common.BoolPtr(true),
168+
}
169+
ipv4 := network_services.BgpAddressFamilyProfilesIpv4{
170+
Unicast: &unicast,
171+
}
172+
profile := network_services.BgpAddressFamilyProfiles{
173+
Name: profileName,
174+
Folder: common.StringPtr("Prisma Access"),
175+
Ipv4: &ipv4,
176+
}
177+
178+
// Setup: Create a profile first
179+
createRes, _, err := client.BGPAddressFamilyProfilesAPI.CreateBGPAddressFamilyProfiles(context.Background()).BgpAddressFamilyProfiles(profile).Execute()
180+
require.NoError(t, err, "Failed to create profile for delete test")
181+
createdProfileID := createRes.Id
182+
183+
// Test: Delete the profile
184+
httpResDel, errDel := client.BGPAddressFamilyProfilesAPI.DeleteBGPAddressFamilyProfilesByID(context.Background(), *createdProfileID).Execute()
185+
186+
require.NoError(t, errDel, "Failed to delete BGP address family profile")
187+
assert.Equal(t, http.StatusOK, httpResDel.StatusCode, "Expected 200 OK status")
188+
}
189+
190+
// Test_network_services_BGPAddressFamilyProfilesAPIService_Fetch tests the FetchBGPAddressFamilyProfiles convenience method.
191+
func Test_network_services_BGPAddressFamilyProfilesAPIService_Fetch(t *testing.T) {
192+
client := SetupNetworkSvcTestClient(t)
193+
profileName := "test-bgp-addr-fam-fetch-" + common.GenerateRandomString(6)
194+
195+
unicast := network_services.BgpAddressFamily{
196+
Enable: common.BoolPtr(true),
197+
}
198+
ipv4 := network_services.BgpAddressFamilyProfilesIpv4{
199+
Unicast: &unicast,
200+
}
201+
profile := network_services.BgpAddressFamilyProfiles{
202+
Name: profileName,
203+
Folder: common.StringPtr("Prisma Access"),
204+
Ipv4: &ipv4,
205+
}
206+
207+
// Create a test profile
208+
createRes, _, err := client.BGPAddressFamilyProfilesAPI.CreateBGPAddressFamilyProfiles(context.Background()).BgpAddressFamilyProfiles(profile).Execute()
209+
require.NoError(t, err, "Failed to create test profile for fetch test")
210+
createdID := createRes.Id
211+
212+
// Cleanup after test
213+
defer func() {
214+
client.BGPAddressFamilyProfilesAPI.DeleteBGPAddressFamilyProfilesByID(context.Background(), *createdID).Execute()
215+
t.Logf("Cleaned up test profile: %s", *createdID)
216+
}()
217+
218+
// Test 1: Fetch existing profile by name
219+
fetchedProfile, err := client.BGPAddressFamilyProfilesAPI.FetchBGPAddressFamilyProfiles(
220+
context.Background(),
221+
profileName,
222+
common.StringPtr("Prisma Access"),
223+
nil, // snippet
224+
nil, // device
225+
)
226+
227+
// Verify successful fetch
228+
require.NoError(t, err, "Failed to fetch BGP address family profile by name")
229+
require.NotNil(t, fetchedProfile, "Fetched profile should not be nil")
230+
assert.Equal(t, *createdID, *fetchedProfile.Id, "Fetched profile ID should match")
231+
assert.Equal(t, profileName, fetchedProfile.Name, "Fetched profile name should match")
232+
t.Logf("[SUCCESS] FetchBGPAddressFamilyProfiles found profile: %s", fetchedProfile.Name)
233+
234+
// Test 2: Fetch non-existent profile (should return nil, nil)
235+
notFound, err := client.BGPAddressFamilyProfilesAPI.FetchBGPAddressFamilyProfiles(
236+
context.Background(),
237+
"non-existent-bgp-addr-fam-profile-xyz-12345",
238+
common.StringPtr("Prisma Access"),
239+
nil,
240+
nil,
241+
)
242+
require.NoError(t, err, "Fetch should not error for non-existent profile")
243+
assert.Nil(t, notFound, "Should return nil for non-existent profile")
244+
t.Logf("[SUCCESS] FetchBGPAddressFamilyProfiles correctly returned nil for non-existent profile")
245+
}

0 commit comments

Comments
 (0)