25e8c5d647396b03c56ff3839b8592c2b876af14
[modeling/etsicatalog.git] / genericparser / packages / tests / test_vnf_pkg_subscription.py
1 # Copyright (C) 2019 Verizon. All Rights Reserved
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 import uuid
16 import mock
17 from rest_framework.test import APIClient
18 from django.test import TestCase
19 from genericparser.pub.database.models import VnfPkgSubscriptionModel
20
21
22 class TestNfPackageSubscription(TestCase):
23     def setUp(self):
24         self.client = APIClient()
25         VnfPkgSubscriptionModel.objects.filter().delete()
26         self.vnf_subscription_data = {
27             "filters": {
28                 "notificationTypes": [
29                     "VnfPackageOnboardingNotification"
30                 ],
31                 "vnfProductsFromProviders": {
32                     "vnfProvider": "string",
33                     "vnfProducts": {
34                         "vnfProductName": "string",
35                         "versions": {
36                             "vnfSoftwareVersion": "string",
37                             "vnfdVersions": [
38                                 "string"
39                             ]
40                         }
41                     }
42                 },
43                 "vnfdId": [
44                     "3fa85f64-5717-4562-b3fc-2c963f66afa6"
45                 ],
46                 "vnfPkgId": [
47                     "3fa85f64-5717-4562-b3fc-2c963f66afa6"
48                 ],
49                 "operationalState": [
50                     "ENABLED"
51                 ],
52                 "usageState": [
53                     "IN_USE"
54                 ]
55             },
56             "callbackUri": "http://www.vnf1.com/notification",
57             "authentication": {
58                 "authType": [
59                     "BASIC"
60                 ],
61                 "paramsBasic": {
62                     "userName": "string",
63                     "password": "string"
64                 }
65             }
66         }
67
68     def tearDown(self):
69         pass
70
71     @mock.patch("requests.get")
72     @mock.patch.object(uuid, 'uuid4')
73     def test_create_vnf_subscription(self, mock_uuid4, mock_requests):
74         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
75         mock_requests.return_value.status_code = 204
76         mock_requests.get.status_code = 204
77         mock_uuid4.return_value = temp_uuid
78         response = self.client.post("/api/vnfpkgm/v1/subscriptions", data=self.vnf_subscription_data, format='json')
79         self.assertEqual(201, response.status_code)
80         self.assertEqual(self.vnf_subscription_data["callbackUri"], response.data["callbackUri"])
81         self.assertEqual(temp_uuid, response.data["id"])
82
83     @mock.patch("requests.get")
84     @mock.patch.object(uuid, 'uuid4')
85     def test_duplicate_subscriptions(self, mock_uuid4, mock_requests):
86         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
87         temp1_uuid = "00342b18-a5c7-11e8-998c-bf1755941f12"
88         mock_requests.return_value.status_code = 204
89         mock_requests.get.status_code = 204
90         mock_uuid4.side_effect = [temp_uuid, temp1_uuid]
91         response = self.client.post("/api/vnfpkgm/v1/subscriptions", data=self.vnf_subscription_data, format='json')
92         self.assertEqual(201, response.status_code)
93         self.assertEqual(self.vnf_subscription_data["callbackUri"], response.data["callbackUri"])
94         self.assertEqual(temp_uuid, response.data["id"])
95         temp_uuid = "00442b18-a5c7-11e8-998c-bf1755941f12"
96         mock_requests.return_value.status_code = 204
97         mock_requests.get.status_code = 204
98         mock_uuid4.return_value = temp_uuid
99         response = self.client.post("/api/vnfpkgm/v1/subscriptions", data=self.vnf_subscription_data, format='json')
100         self.assertEqual(303, response.status_code)
101
102     @mock.patch("requests.get")
103     @mock.patch.object(uuid, 'uuid4')
104     def test_get_subscriptions(self, mock_uuid4, mock_requests):
105         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
106         mock_requests.return_value.status_code = 204
107         mock_requests.get.status_code = 204
108         mock_uuid4.return_value = temp_uuid
109         self.client.post("/api/vnfpkgm/v1/subscriptions",
110                          data=self.vnf_subscription_data, format='json')
111         response = self.client.get("/api/vnfpkgm/v1/subscriptions?usageState=IN_USE",
112                                    format='json')
113         self.assertEqual(200, response.status_code)
114         self.assertEqual(1, len(response.data))
115
116     @mock.patch("requests.get")
117     @mock.patch.object(uuid, 'uuid4')
118     def test_get_subscriptions_with_invalid_params(self, mock_uuid4, mock_requests):
119         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
120         mock_requests.return_value.status_code = 204
121         mock_requests.get.status_code = 204
122         mock_uuid4.return_value = temp_uuid
123         self.client.post("/api/vnfpkgm/v1/subscriptions",
124                          data=self.vnf_subscription_data, format='json')
125         response = self.client.get("/api/vnfpkgm/v1/subscriptions?dummy=dummy",
126                                    format='json')
127         self.assertEqual(400, response.status_code)
128
129     @mock.patch("requests.get")
130     @mock.patch.object(uuid, 'uuid4')
131     def test_get_subscription_with_id(self, mock_uuid4, mock_requests):
132         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
133         mock_requests.return_value.status_code = 204
134         mock_requests.get.status_code = 204
135         mock_uuid4.return_value = temp_uuid
136         self.client.post("/api/vnfpkgm/v1/subscriptions",
137                          data=self.vnf_subscription_data, format='json')
138         response = self.client.get("/api/vnfpkgm/v1/subscriptions/" + temp_uuid,
139                                    format='json')
140         self.assertEqual(200, response.status_code)
141         self.assertEqual(temp_uuid, response.data["id"])
142
143     @mock.patch("requests.get")
144     @mock.patch.object(uuid, 'uuid4')
145     def test_get_subscription_with_id_not_exists(self, mock_uuid4, mock_requests):
146         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
147         dummy_uuid = str(uuid.uuid4())
148         mock_requests.return_value.status_code = 204
149         mock_requests.get.status_code = 204
150         mock_uuid4.return_value = temp_uuid
151         self.client.post("/api/vnfpkgm/v1/subscriptions",
152                          data=self.vnf_subscription_data, format='json')
153         response = self.client.get("/api/vnfpkgm/v1/subscriptions/" + dummy_uuid,
154                                    format='json')
155         self.assertEqual(404, response.status_code)
156
157     @mock.patch("requests.get")
158     @mock.patch.object(uuid, 'uuid4')
159     def test_delete_subscription_with_id(self, mock_uuid4, mock_requests):
160         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
161         dummy_uuid = str(uuid.uuid4())
162         mock_requests.return_value.status_code = 204
163         mock_requests.get.status_code = 204
164         mock_uuid4.return_value = temp_uuid
165         self.client.post("/api/vnfpkgm/v1/subscriptions",
166                          data=self.vnf_subscription_data, format='json')
167         self.client.get("/api/vnfpkgm/v1/subscriptions/" + dummy_uuid,
168                         format='json')
169         response = self.client.delete("/api/vnfpkgm/v1/subscriptions/" + temp_uuid)
170         self.assertEqual(204, response.status_code)
171
172     @mock.patch("requests.get")
173     @mock.patch.object(uuid, 'uuid4')
174     def test_delete_subscription_with_id_not_exists(self, mock_uuid4, mock_requests):
175         dummy_uuid = str(uuid.uuid4())
176         response = self.client.delete("/api/vnfpkgm/v1/subscriptions/" + dummy_uuid)
177         self.assertEqual(404, response.status_code)