openai_mock/validators/
req_required_fields.rs

1use crate::models::completion::CompletionRequest;
2use crate::validators::ValidationError;
3
4/// Validates the required fields for a completion request
5pub fn validate_required_fields(req: &CompletionRequest) -> Result<(), ValidationError> {
6    // Validate model field
7    if req.model.trim().is_empty() {
8        return Err(ValidationError::new("model field must not be empty"));
9    }
10
11    // Note: prompt is already handled by the Optional<Value> type in the struct
12    // and will always be present (though it can be None)
13
14    Ok(())
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20    use serde_json::json;
21
22    #[test]
23    fn test_validate_empty_model() {
24        let req = CompletionRequest {
25            model: "".to_string(),
26            prompt: Some(json!("test prompt")),
27            ..Default::default() // This will use all the default values we defined
28        };
29
30        let result = validate_required_fields(&req);
31        assert!(result.is_err());
32        assert_eq!(
33            result.unwrap_err().to_string(),
34            "model field must not be empty"
35        );
36    }
37
38    #[test]
39    fn test_validate_valid_request() {
40        let req = CompletionRequest {
41            model: "gpt-3.5-turbo".to_string(),
42            prompt: Some(json!("test prompt")),
43            ..Default::default()
44        };
45
46        let result = validate_required_fields(&req);
47        assert!(result.is_ok());
48    }
49}