From 1bd6031e5a708e1ae9611f9f5f789876dfa43534 Mon Sep 17 00:00:00 2001 From: Dietrich Date: Mon, 21 Sep 2020 14:37:21 +0200 Subject: [PATCH] Adding tests --- src/bin/main.rs | 4 ++-- src/passwd.rs | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/bin/main.rs b/src/bin/main.rs index d37ed23..a3ee2d0 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -2,10 +2,10 @@ extern crate adduser; use adduser::passwd::Passwd; use std::fs::File; -use std::io::{self, prelude::*, BufReader}; +use std::io::{prelude::*, BufReader}; fn main() { - let mut file = File::open("/etc/passwd").unwrap(); + let file = File::open("/etc/passwd").unwrap(); let reader = BufReader::new(file); for line in reader.lines() { diff --git a/src/passwd.rs b/src/passwd.rs index 8c2e457..c6f7296 100644 --- a/src/passwd.rs +++ b/src/passwd.rs @@ -110,17 +110,19 @@ fn parse_gecos(source: &str) -> Result { impl Default for Passwd<'_> { fn default() -> Self { Passwd { - pw_name: Username { pw_name: "howdy" }, + pw_name: Username { + pw_name: "defaultuser", + }, pw_passwd: Password { pw_passwd: "notencrypted", }, pw_uid: Uid { pw_uid: 1001 }, pw_gid: Gid { pw_gid: 1001 }, pw_gecos: Gecos::Simple { - comment: "not done", + comment: "gecos default comment", }, pw_dir: HomeDir { - pw_dir: "/home/test", + pw_dir: "/home/default", }, pw_shell: ShellDir { pw_shell: "/bin/bash", @@ -199,3 +201,44 @@ impl Display for ShellDir<'_> { write!(f, "{}", self.pw_shell,) } } + +#[test] +fn default_user() { + let pwd = Passwd::default(); + assert_eq!(pwd.pw_name.pw_name, "defaultuser"); + assert_eq!(pwd.pw_dir.pw_dir, "/home/default"); + assert_eq!(pwd.pw_uid.pw_uid, 1001); +} + +#[test] +fn test_new_from_string() { + let pwd = + Passwd::new_from_string("testuser:testpassword:1001:1001:testcomment:/home/test:/bin/test") + .unwrap(); + let pwd2 = + Passwd::new_from_string("testuser:testpassword:1001:1001:full Name,004,000342,001-2312,myemail@test.com:/home/test:/bin/test") + .unwrap(); + assert_eq!(pwd.pw_name.pw_name, "testuser"); + assert_eq!(pwd.pw_dir.pw_dir, "/home/test"); + assert_eq!(pwd.pw_uid.pw_uid, 1001); + match pwd.pw_gecos { + Gecos::Simple { comment } => assert_eq!(comment, "testcomment"), + _ => unreachable!(), + } + match pwd2.pw_gecos { + Gecos::Detail { + full_name, + room, + phone_work, + phone_home, + other, + } => { + assert_eq!(full_name, "full Name"); + assert_eq!(room, "004"); + assert_eq!(phone_work, "000342"); + assert_eq!(phone_home, "001-2312"); + assert_eq!(other, "myemail@test.com"); + } + _ => unreachable!(), + } +}