#[cfg(feature = "serde")]
use ::serde::{Deserialize, Serialize};
use crate::version::Version;
#[derive(Copy, Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "UPPERCASE"))]
pub enum ProcessUploadCommand {
Reject,
Accept,
}
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "PascalCase"))]
pub struct ProcessUpload {
pub command: ProcessUploadCommand,
pub source: String,
pub version: Version,
}
#[cfg(all(test, feature = "serde"))]
mod tests {
use super::*;
use crate::control::dak::{Command, CommandAction};
use std::io::{BufReader, Cursor};
#[test]
fn command() {
let command = Command::from_reader(&mut BufReader::new(Cursor::new(
"\
Archive: ftp.upload.debian.org
Uploader: Paul Tagliamonte <paultag@debian.org>
Action: process-upload
Command: ACCEPT
Source: foo
Version: 1.0-1
",
)))
.unwrap();
assert_eq!(command.header.archive, "ftp.upload.debian.org");
assert_eq!(1, command.actions.len());
let Some(CommandAction::ProcessUpload(process_upload)) = command.actions.first() else {
panic!("bad type");
};
assert_eq!(process_upload.command, ProcessUploadCommand::Accept);
assert_eq!(process_upload.source, "foo");
assert_eq!(process_upload.version.to_string(), "1.0-1");
}
}