|
2 | 2 | from test.unit.base import ClientBaseCase |
3 | 3 |
|
4 | 4 | from linode_api4.objects import AlertChannel, MonitorDashboard, MonitorService |
5 | | -from linode_api4.objects.monitor import ChannelDetails, EmailDetails |
6 | 5 |
|
7 | 6 |
|
8 | 7 | class MonitorTest(ClientBaseCase): |
@@ -171,58 +170,59 @@ def test_alert_channels(self): |
171 | 170 | ) |
172 | 171 | self.assertEqual(channels[0].alerts.alert_count, 0) |
173 | 172 |
|
174 | | - def test_create_channel(self): |
175 | | - |
| 173 | + def test_create_update_delete_channel(self): |
| 174 | + """ |
| 175 | + Test CRUD operations for AlertChannel: create, update, and delete. |
| 176 | + Verifies the full lifecycle of an alert channel object. |
| 177 | + """ |
| 178 | + channel_id = 999 |
| 179 | + url = f"/monitor/alert-channels/{channel_id}" |
| 180 | + |
| 181 | + # Create the channel |
176 | 182 | create_response = { |
177 | | - "id": 456, |
178 | | - "label": "Email channel for api change", |
| 183 | + "id": channel_id, |
| 184 | + "label": "CRUD Test Channel", |
179 | 185 | "type": "user", |
180 | 186 | "channel_type": "email", |
181 | 187 | "details": { |
182 | 188 | "email": { |
| 189 | + "usernames": ["crud_user"], |
183 | 190 | "recipient_type": "user", |
184 | | - "usernames": ["mawasthy_tenant02_admin"], |
185 | 191 | } |
186 | 192 | }, |
187 | 193 | "alerts": { |
188 | | - "url": "/monitor/alert-channels/456/alerts", |
| 194 | + "url": f"{url}/alerts", |
189 | 195 | "type": "alerts-definitions", |
190 | 196 | "alert_count": 0, |
191 | 197 | }, |
192 | 198 | "created": "2024-01-01T00:00:00", |
193 | 199 | "updated": "2024-01-01T00:00:00", |
194 | | - "created_by": "mawasthy_tenant02_admin", |
195 | | - "updated_by": "mawasthy_tenant02_admin", |
| 200 | + "created_by": "crud_user", |
| 201 | + "updated_by": "crud_user", |
196 | 202 | } |
197 | 203 |
|
198 | | - with self.mock_post(create_response) as m: |
199 | | - result = self.client.monitor.channel_create( |
200 | | - label="Email channel for api change", |
201 | | - channel_type="email", |
202 | | - details=ChannelDetails( |
203 | | - email=EmailDetails( |
204 | | - recipient_type="user", |
205 | | - usernames=["mawasthy_tenant02_admin"], |
206 | | - ) |
207 | | - ), |
208 | | - ) |
| 204 | + with self.mock_get(create_response) as m_get: |
| 205 | + channel = self.client.load(AlertChannel, channel_id) |
| 206 | + self.assertIsInstance(channel, AlertChannel) |
| 207 | + self.assertEqual(channel.id, channel_id) |
| 208 | + self.assertEqual(channel.label, "CRUD Test Channel") |
209 | 209 |
|
210 | | - self.assertEqual(m.call_url, "/monitor/alert-channels") |
211 | | - self.assertEqual(m.call_data["label"], "Email channel for api change") |
212 | | - self.assertEqual(m.call_data["channel_type"], "email") |
213 | | - self.assertEqual( |
214 | | - m.call_data["details"]["email"]["recipient_type"], "user" |
215 | | - ) |
216 | | - self.assertEqual( |
217 | | - m.call_data["details"]["email"]["usernames"], ["mawasthy_tenant02_admin"] |
218 | | - ) |
| 210 | + # Update the channel |
| 211 | + updated_response = create_response.copy() |
| 212 | + updated_response["label"] = "CRUD Test Channel Updated" |
| 213 | + updated_response["updated"] = "2024-01-02T00:00:00" |
| 214 | + |
| 215 | + with self.mock_put(updated_response) as m_put: |
| 216 | + channel.label = "CRUD Test Channel Updated" |
| 217 | + result = channel.save() |
| 218 | + |
| 219 | + self.assertEqual(m_put.call_url, url) |
| 220 | + self.assertTrue(result) |
| 221 | + self.assertEqual(channel.label, "CRUD Test Channel Updated") |
| 222 | + |
| 223 | + # Delete the channel |
| 224 | + with self.mock_delete() as m_delete: |
| 225 | + result = channel.delete() |
219 | 226 |
|
220 | | - self.assertIsInstance(result, AlertChannel) |
221 | | - self.assertEqual(result.id, 456) |
222 | | - self.assertEqual(result.label, "Email channel for api change") |
223 | | - self.assertEqual(result.type, "user") |
224 | | - self.assertEqual(result.channel_type, "email") |
225 | | - self.assertIsNotNone(result.details) |
226 | | - self.assertIsNotNone(result.details.email) |
227 | | - self.assertEqual(result.details.email.recipient_type, "user") |
228 | | - self.assertEqual(result.details.email.usernames, ["mawasthy_tenant02_admin"]) |
| 227 | + self.assertEqual(m_delete.call_url, url) |
| 228 | + self.assertTrue(result) |
0 commit comments