def post(self, request, *args, **kwargs): username = request.POST.get("uid") password = request.POST.get("password") xml_string = request.POST.get("xml") if not username or not password or not xml_string: return HttpResponseBadRequest() user = authenticate(username=username, password=password) alert_id = None error_message = "" is_valid = False if (not user or not user.groups.filter( name=settings.ALERT_CREATORS_GROUP_NAME)): raise PermissionDenied alert_id, is_valid, error_message = utils.CreateAlert( xml_string, username) response = { "error": error_message, "uuid": alert_id, "valid": is_valid, } return HttpResponse(json.dumps(response), content_type="application/json")
def test_create_alert_failed(self): """Tests alert creation failed for invalid XML tree.""" uuid, is_valid, error = utils.CreateAlert(self.invalid_alert_content, self.TEST_USER_NAME) self.assertEquals(uuid, None) self.assertFalse(is_valid) self.assertTrue(error)
def test_generate_feed_inactive_alert(self): """Tests XML feed with date after alert expiration date. Expiration date is 2014-08-10T23:55:12+00:00. """ uuid, _, _ = utils.CreateAlert(self.draft_alert_content, self.TEST_USER_NAME) self.assertFalse(uuid in utils.GenerateFeed())
def test_create_alert_created(self): """Tests alert created successfully.""" alert_uuid, is_valid, error = utils.CreateAlert(self.draft_alert_content, self.TEST_USER_NAME) self.assertTrue(UUID_RE.match(alert_uuid)) self.assertTrue(is_valid) self.assertEqual(error, None) alert = models.Alert.objects.get(uuid=alert_uuid) alert_dict = utils.ParseAlert(alert.content, "xml", alert.uuid) draft_dict = utils.ParseAlert(self.draft_alert_content, "xml", alert.uuid) # Remove alert IDs due to their random nature. del alert_dict["alert_id"] del draft_dict["alert_id"] self.assertDictEqual(alert_dict, draft_dict)