1mod credentials;
32mod error;
33
34pub use credentials::*;
35pub use error::*;
36
37#[cfg(test)]
38mod tests {
39 use std::str::FromStr;
40
41 use super::*;
42
43 #[test]
44 fn it_creates_credentials_from_value() {
45 let auth_header_value = String::from("dXNlcm5hbWU6cGFzc3dvcmQ=");
46 let credentials = Credentials::decode(auth_header_value).unwrap();
47
48 assert_eq!(credentials.user_id, String::from("username"));
49 assert_eq!(credentials.password, String::from("password"));
50 }
51
52 #[test]
53 fn it_creates_credentials_from_value_with_colon() {
54 let auth_header_value = String::from("dXNlcm5hbWU6OnBhc3M6d29yZDo=");
55 let credentials = Credentials::decode(auth_header_value).unwrap();
56
57 assert_eq!(credentials.user_id, String::from("username"));
58 assert_eq!(credentials.password, String::from(":pass:word:"));
59 }
60
61 #[test]
62 fn it_encodes_credentials() {
63 let credentials = Credentials::new("username", "password");
64 let credentials = credentials.encode();
65
66 assert_eq!(String::from("dXNlcm5hbWU6cGFzc3dvcmQ="), credentials);
67 }
68
69 #[test]
70 fn it_creates_credentials_from_header_value() {
71 let auth_header_value = String::from("Basic dXNlcm5hbWU6cGFzc3dvcmQ=");
72 let credentials = Credentials::from_header(auth_header_value).unwrap();
73
74 assert_eq!(credentials.user_id, String::from("username"));
75 assert_eq!(credentials.password, String::from("password"));
76 }
77
78 #[test]
79 fn it_creates_credentials_from_header_value_with_colon() {
80 let auth_header_value = String::from("Basic dXNlcm5hbWU6OnBhc3M6d29yZDo=");
81 let credentials = Credentials::from_header(auth_header_value).unwrap();
82
83 assert_eq!(credentials.user_id, String::from("username"));
84 assert_eq!(credentials.password, String::from(":pass:word:"));
85 }
86
87 #[test]
88 fn it_creates_header_value() {
89 let credentials = Credentials::new("username", "password");
90 let credentials = credentials.as_http_header();
91
92 assert_eq!(String::from("Basic dXNlcm5hbWU6cGFzc3dvcmQ="), credentials);
93 }
94
95 #[test]
96 fn it_creates_header_value_with_colon() {
97 let credentials = Credentials::new("username", ":pass:word:");
98 let credentials = credentials.as_http_header();
99
100 assert_eq!(
101 String::from("Basic dXNlcm5hbWU6OnBhc3M6d29yZDo="),
102 credentials
103 );
104 }
105
106 #[test]
107 fn it_creates_credentials_from_str_value() {
108 let auth_header_value_str = "dXNlcm5hbWU6cGFzc3dvcmQ=";
109 let credentials = Credentials::from_str(auth_header_value_str).unwrap();
110
111 assert_eq!(credentials.user_id, String::from("username"));
112 assert_eq!(credentials.password, String::from("password"));
113 }
114
115 #[test]
116 fn it_creates_credentials_from_str_header() {
117 let auth_header_str = "Basic dXNlcm5hbWU6cGFzc3dvcmQ=";
118 let credentials = Credentials::from_str(auth_header_str).unwrap();
119
120 assert_eq!(credentials.user_id, String::from("username"));
121 assert_eq!(credentials.password, String::from("password"));
122 }
123
124 #[test]
125 fn from_header_returns_err_when_input_has_no_whitespace() {
126 let auth_header_value = String::from("BasicdXNlcm5hbWU6OnBhc3M6d29yZDo=");
127 let credentials = Credentials::from_header(auth_header_value);
128
129 assert!(credentials.is_err());
130 }
131
132 #[test]
133 fn from_header_returns_err_when_input_contains_multiple_whitespaces() {
134 let auth_header_value = String::from("Basic dXNlcm5hbWU6On Bhc3M6d29yZDo=");
135 let credentials = Credentials::from_header(auth_header_value);
136
137 assert!(credentials.is_err());
138 }
139
140 #[test]
141 fn from_header_returns_err_when_input_is_not_basic_auth() {
142 let auth_header_value = String::from("Bearer dXNlcm5hbWU6OnBhc3M6d29yZDo=");
143 let credentials = Credentials::from_header(auth_header_value);
144
145 assert!(credentials.is_err());
146 }
147
148 #[test]
149 fn decode_returns_err_when_input_has_no_colons() {
150 let auth_header_value = String::from("dXNlcm5hbWVwYXNzd29yZA==");
152 let credentials = Credentials::from_header(auth_header_value);
153
154 assert!(credentials.is_err());
155 }
156}