1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// #[cfg(test)]
// mod tests {
// use dotenv::dotenv;
// use std::env;
// use tradingview::error::*;
// #[tokio::test]
// #[ignore]
// async fn test_login_empty_credentials() {
// let mut empty_user = tradingview::models::UserCookies::default();
// // empty_user.auth_token = "unauthorized_user_token".to_string();
// // let result = User::build().credentials("", "").get().await;
// // assert!(result.is_ok());
// // assert_eq!(result.unwrap(), empty_user);
// }
// #[tokio::test]
// #[ignore]
// async fn test_login_with_credentials() {
// dotenv().ok();
// let mut empty_user = User::default();
// empty_user.auth_token = "unauthorized_user_token".to_string();
// let username = env::var("TV_USERNAME").unwrap();
// let password = env::var("TV_PASSWORD").unwrap();
// let result = User::build().credentials(&username, &password).get().await;
// assert!(result.is_ok());
// let user = result.unwrap();
// assert_ne!(user, empty_user);
// assert!(!user.auth_token.is_empty());
// assert!(!user.session.is_empty());
// assert!(!user.signature.is_empty());
// assert!(!user.session_hash.is_empty());
// assert!(!user.private_channel.is_empty());
// assert!(!user.auth_token.is_empty());
// }
// #[tokio::test]
// #[ignore]
// async fn test_login_with_invalid_credentials() {
// let mut empty_user = User::default();
// empty_user.auth_token = "unauthorized_user_token".to_string();
// let result = User::build().credentials("invalid", "invalid").get().await;
// assert!(result.is_err());
// let error = result.unwrap_err();
// assert!(matches!(
// error,
// tradingview::error::Error::LoginError(LoginError::InvalidCredentials)
// ));
// }
// #[tokio::test]
// #[ignore]
// async fn test_login_with_credentials_and_mfa() {
// dotenv().ok();
// let mut empty_user = User::default();
// empty_user.auth_token = "unauthorized_user_token".to_string();
// let username = env::var("TV_TOTP_USERNAME").unwrap();
// let password = env::var("TV_TOTP_PASSWORD").unwrap();
// let totp = env::var("TV_TOTP_SECRET").unwrap();
// let result = User::build()
// .credentials(&username, &password)
// .totp_secret(&totp)
// .get()
// .await;
// assert!(result.is_ok());
// let user = result.unwrap();
// assert_ne!(user, empty_user);
// assert!(!user.auth_token.is_empty());
// assert!(!user.session.is_empty());
// assert!(!user.signature.is_empty());
// assert!(!user.session_hash.is_empty());
// assert!(!user.private_channel.is_empty());
// assert!(!user.auth_token.is_empty());
// }
// #[tokio::test]
// #[ignore]
// async fn test_user_with_valid_session() {
// dotenv().ok();
// let mut empty_user = User::default();
// empty_user.auth_token = "unauthorized_user_token".to_string();
// let session = env::var("TV_SESSION").unwrap();
// let signature = env::var("TV_SIGNATURE").unwrap();
// let result = User::build().session(&session, &signature).get().await;
// assert!(result.is_ok());
// let user = result.unwrap();
// assert_ne!(user, empty_user);
// assert!(!user.auth_token.is_empty());
// assert!(!user.session.is_empty());
// assert!(!user.signature.is_empty());
// assert!(!user.session_hash.is_empty());
// assert!(!user.private_channel.is_empty());
// assert!(!user.auth_token.is_empty());
// }
// #[tokio::test]
// #[ignore]
// async fn test_user_with_invalid_session() {
// let mut empty_user = User::default();
// empty_user.auth_token = "unauthorized_user_token".to_string();
// let result = User::build()
// .session("invalid_session", "invalid_session_signature")
// .get()
// .await;
// assert!(result.is_err());
// let error = result.unwrap_err();
// assert!(matches!(
// error,
// tradingview::error::Error::LoginError(LoginError::InvalidSession)
// ));
// }
// #[tokio::test]
// #[ignore]
// async fn test_user_with_credentials_and_invalid_mfa() {
// dotenv().ok();
// let mut empty_user = User::default();
// empty_user.auth_token = "unauthorized_user_token".to_string();
// let username = env::var("TV_TOTP_USERNAME").unwrap();
// let password = env::var("TV_TOTP_PASSWORD").unwrap();
// let result = User::build()
// .credentials(&username, &password)
// .totp_secret("ZTIXV4KTRISK4KK7")
// .get()
// .await;
// assert!(result.is_err());
// let error = result.unwrap_err();
// assert!(matches!(
// error,
// tradingview::error::Error::LoginError(LoginError::InvalidOTPSecret)
// ));
// }
// }