def test_validate_date_incorrect_year(self): date = '12312014' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_date, currentDate, date)
def test_validate_date_invalid_month(self): date = '01312015' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_date, currentDate, date)
def test_validate_date_contains_special_characters(self): date = '1231201]' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_date, currentDate, date)
def test_validate_prediction_type_contains_number(self): predictionType = 'week12' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_prediction_type, predictionType)
def test_validate_prediction_type_invalid_prediction_type(self): predictionType = 'catdog' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_prediction_type, predictionType)
def test_validate_date_invalid_day_in_february_leap_year(self): date = '02302016' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_date, currentDate, date)
def test_validate_region_invalid_region(self): region = 'catdog' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_region, region)
def test_validate_region_contains_special_character(self): region = 'us]' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_region, region)
def test_validate_region_contains_number(self): region = 'us12' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_region, region)
def test_validate_date_invalid_day_for_month_with_thirty_one_days(self): date = '12322016' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_date, currentDate, date)
def test_validate_prediction_type_special_character(self): predictionType = 'week]' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_prediction_type, predictionType)
def test_validate_date_contains_letter(self): date = '1231201a' validator = jishinValidator.Input_Validator() self.assertRaises(ValidationErrors.InputError, validator.validate_date, currentDate, date)
def test_validate_date_ok(self): date = '12312018' validator = jishinValidator.Input_Validator() validator.validate_date(currentDate, date) self.assertFalse(validator.has_error())
def test_validate_prediction_type_ok(self): predictionType = 'monthly' validator = jishinValidator.Input_Validator() validator.validate_prediction_type(predictionType) self.assertFalse(validator.has_error())
def test_validate_region_ok(self): region = 'us' validator = jishinValidator.Input_Validator() validator.validate_region(region) self.assertFalse(validator.has_error())
def test_validate_date_valid_day_in_february(self): validator = jishinValidator.Input_Validator() date = '02292016' validator.validate_date(currentDate, date) self.assertFalse(validator.has_error())
def createPrediction(self, token, region, predictionType, date): username = jwt.decode(token, 'secret', algorithms='HS256').get('username') claims = jwt.decode(token, 'secret', algorithms='HS256').get('claim') currentDate = jwt.decode(token, 'secret', algorithms='HS256').get('dateIssued') region = region.upper() predictionType = predictionType.upper() if constantsclass.WEB_SERVICE in claims: validator = jishinValidator.Input_Validator() try: # validates user input before passing it into query builder validator.validate_date(currentDate, date) validator.validate_region(region) validator.validate_prediction_type(predictionType) # Retrieve correct collection from db to make computation query = queryBuilder.queryBuilder() collection = query.retrieveCollection(region, predictionType) try: # computation computationHandler = ComputationClass() results = str( computationHandler.computationalCalculations( collection, predictionType, date)) # rabbitMq messageQueue = ceRabbitMqPushMessage.messageQueue() messageQueue.sendMessage(username, results, date, region, predictionType) except Exception as e: jishinLogging.logger.error('Computation %s' % e) return True except ValidationErrors.InputError as ve: jishinLogging.logger.error('Validation Error %s' % ve) for e in validator.errors: jishinLogging.logger.error(e) print ve.msg return False except Exception as e: jishinLogging.logger.error('Error Creating Prediction %s' % e) else: return False