use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Credential {
name: String,
username: String,
password: String,
url: Option<String>,
}
impl Credential {
pub fn new(name: String, username: String, password: String, url: Option<String>) -> Self {
Credential {
name,
username,
password,
url,
}
}
pub fn name(&self) -> &str {
&self.name
}
pub fn set_name(&mut self, name: String) -> &mut Self {
self.name = name;
self
}
pub fn username(&self) -> &str {
&self.username
}
pub fn set_username(&mut self, username: String) -> &mut Self {
self.username = username;
self
}
pub fn password(&self) -> &str {
&self.password
}
pub fn set_password(&mut self, password: String) -> &mut Self {
self.password = password;
self
}
pub fn url(&self) -> Option<&str> {
self.url.as_deref()
}
pub fn set_url(&mut self, url: Option<String>) -> &mut Self {
self.url = url;
self
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new() {
let credential = Credential::new(
"My Credential".to_string(),
"username".to_string(),
"password".to_string(),
Some("https://example.com".to_string()),
);
assert_eq!(credential.name(), "My Credential");
assert_eq!(credential.username(), "username");
assert_eq!(credential.password(), "password");
assert_eq!(credential.url(), Some("https://example.com"));
}
}