code refactor for genericparser
[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
18 from rest_framework.test import APIClient
19 from django.test import TestCase
20
21 from genericparser.pub.database.models import VnfPkgSubscriptionModel
22 from .const import vnf_subscription_data
23
24
25 class TestNfPackageSubscription(TestCase):
26     def setUp(self):
27         self.client = APIClient()
28         VnfPkgSubscriptionModel.objects.filter().delete()
29         self.vnf_subscription_data = vnf_subscription_data
30
31     def tearDown(self):
32         pass
33
34     @mock.patch("requests.get")
35     @mock.patch.object(uuid, 'uuid4')
36     def test_create_vnf_subscription(self, mock_uuid4, mock_requests):
37         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
38         mock_requests.return_value.status_code = 204
39         mock_requests.get.status_code = 204
40         mock_uuid4.return_value = temp_uuid
41         response = self.client.post(
42             "/api/vnfpkgm/v1/subscriptions",
43             data=self.vnf_subscription_data,
44             format='json'
45         )
46         self.assertEqual(201, response.status_code)
47         self.assertEqual(
48             self.vnf_subscription_data["callbackUri"],
49             response.data["callbackUri"]
50         )
51         self.assertEqual(temp_uuid, response.data["id"])
52
53     @mock.patch("requests.get")
54     @mock.patch.object(uuid, 'uuid4')
55     def test_duplicate_subscriptions(self, mock_uuid4, mock_requests):
56         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
57         temp1_uuid = "00342b18-a5c7-11e8-998c-bf1755941f12"
58         mock_requests.return_value.status_code = 204
59         mock_requests.get.status_code = 204
60         mock_uuid4.side_effect = [temp_uuid, temp1_uuid]
61         response = self.client.post(
62             "/api/vnfpkgm/v1/subscriptions",
63             data=self.vnf_subscription_data,
64             format='json'
65         )
66         self.assertEqual(201, response.status_code)
67         self.assertEqual(
68             self.vnf_subscription_data["callbackUri"],
69             response.data["callbackUri"]
70         )
71         self.assertEqual(temp_uuid, response.data["id"])
72         temp_uuid = "00442b18-a5c7-11e8-998c-bf1755941f12"
73         mock_requests.return_value.status_code = 204
74         mock_requests.get.status_code = 204
75         mock_uuid4.return_value = temp_uuid
76         response = self.client.post(
77             "/api/vnfpkgm/v1/subscriptions",
78             data=self.vnf_subscription_data,
79             format='json'
80         )
81         self.assertEqual(303, response.status_code)
82
83     @mock.patch("requests.get")
84     @mock.patch.object(uuid, 'uuid4')
85     def test_get_subscriptions(self, mock_uuid4, mock_requests):
86         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
87         mock_requests.return_value.status_code = 204
88         mock_requests.get.status_code = 204
89         mock_uuid4.return_value = temp_uuid
90         self.client.post(
91             "/api/vnfpkgm/v1/subscriptions",
92             data=self.vnf_subscription_data,
93             format='json'
94         )
95         response = self.client.get(
96             "/api/vnfpkgm/v1/subscriptions?usageState=IN_USE",
97             format='json'
98         )
99         self.assertEqual(200, response.status_code)
100         self.assertEqual(1, len(response.data))
101
102     @mock.patch("requests.get")
103     @mock.patch.object(uuid, 'uuid4')
104     def test_get_subscriptions_with_invalid_params(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(
110             "/api/vnfpkgm/v1/subscriptions",
111             data=self.vnf_subscription_data,
112             format='json'
113         )
114         response = self.client.get(
115             "/api/vnfpkgm/v1/subscriptions?dummy=dummy",
116             format='json'
117         )
118         self.assertEqual(400, response.status_code)
119
120     @mock.patch("requests.get")
121     @mock.patch.object(uuid, 'uuid4')
122     def test_get_subscription_with_id(self, mock_uuid4, mock_requests):
123         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
124         mock_requests.return_value.status_code = 204
125         mock_requests.get.status_code = 204
126         mock_uuid4.return_value = temp_uuid
127         self.client.post(
128             "/api/vnfpkgm/v1/subscriptions",
129             data=self.vnf_subscription_data,
130             format='json'
131         )
132         response = self.client.get(
133             "/api/vnfpkgm/v1/subscriptions/%s" % temp_uuid,
134             format='json'
135         )
136         self.assertEqual(200, response.status_code)
137         self.assertEqual(temp_uuid, response.data["id"])
138
139     @mock.patch("requests.get")
140     @mock.patch.object(uuid, 'uuid4')
141     def test_get_subscription_with_id_not_exists(self, mock_uuid4, mock_requests):
142         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
143         dummy_uuid = str(uuid.uuid4())
144         mock_requests.return_value.status_code = 204
145         mock_requests.get.status_code = 204
146         mock_uuid4.return_value = temp_uuid
147         self.client.post(
148             "/api/vnfpkgm/v1/subscriptions",
149             data=self.vnf_subscription_data,
150             format='json'
151         )
152         response = self.client.get(
153             "/api/vnfpkgm/v1/subscriptions/%s" % dummy_uuid,
154             format='json'
155         )
156         self.assertEqual(404, response.status_code)
157
158     @mock.patch("requests.get")
159     @mock.patch.object(uuid, 'uuid4')
160     def test_delete_subscription_with_id(self, mock_uuid4, mock_requests):
161         temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
162         dummy_uuid = str(uuid.uuid4())
163         mock_requests.return_value.status_code = 204
164         mock_requests.get.status_code = 204
165         mock_uuid4.return_value = temp_uuid
166         self.client.post(
167             "/api/vnfpkgm/v1/subscriptions",
168             data=self.vnf_subscription_data,
169             format='json'
170         )
171         self.client.get(
172             "/api/vnfpkgm/v1/subscriptions/%s" % dummy_uuid,
173             format='json'
174         )
175         response = self.client.delete("/api/vnfpkgm/v1/subscriptions/%s" % temp_uuid)
176         self.assertEqual(204, response.status_code)
177
178     @mock.patch("requests.get")
179     @mock.patch.object(uuid, 'uuid4')
180     def test_delete_subscription_with_id_not_exists(self, mock_uuid4, mock_requests):
181         dummy_uuid = str(uuid.uuid4())
182         response = self.client.delete("/api/vnfpkgm/v1/subscriptions/%s" % dummy_uuid)
183         self.assertEqual(404, response.status_code)