mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 12:46:46 +00:00
118 lines
4.5 KiB
C#
118 lines
4.5 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
|
|
namespace ProtonMailBridge.UI.Tests.TestsHelper
|
|
{
|
|
public class TestUserData
|
|
{
|
|
public string Username { get; set; }
|
|
public string Password { get; set; }
|
|
public string MailboxPassword { get; set; }
|
|
|
|
public TestUserData(string username, string password, string mailboxPassword ="")
|
|
{
|
|
Username = username;
|
|
Password = password;
|
|
MailboxPassword = mailboxPassword;
|
|
}
|
|
|
|
public static TestUserData GetFreeUser()
|
|
{
|
|
(string username, string password) = GetUsernameAndPassword("BRIDGE_FLAUI_FREE_USER");
|
|
return new TestUserData(username, password);
|
|
}
|
|
|
|
public static TestUserData GetPaidUser()
|
|
{
|
|
(string username, string password) = GetUsernameAndPassword("BRIDGE_FLAUI_PAID_USER");
|
|
return new TestUserData(username, password);
|
|
}
|
|
|
|
public static TestUserData GetMailboxUser()
|
|
{
|
|
(string username, string password, string mailboxPassword) = GetUsernameAndPasswordAndMailbox("BRIDGE_FLAUI_MAILBOX_USER");
|
|
return new TestUserData(username, password, mailboxPassword);
|
|
}
|
|
|
|
public static TestUserData GetDisabledUser()
|
|
{
|
|
(string username, string password) = GetUsernameAndPassword("BRIDGE_FLAUI_DISABLED_USER");
|
|
return new TestUserData(username, password);
|
|
}
|
|
|
|
public static TestUserData GetDeliquentUser()
|
|
{
|
|
(string username, string password) = GetUsernameAndPassword("BRIDGE_FLAUI_DELIQUENT_USER");
|
|
return new TestUserData(username, password);
|
|
}
|
|
public static TestUserData GetIncorrectCredentialsUser()
|
|
{
|
|
return new TestUserData("IncorrectUsername", "IncorrectPass");
|
|
}
|
|
|
|
public static TestUserData GetEmptyCredentialsUser()
|
|
{
|
|
return new TestUserData("", "");
|
|
}
|
|
|
|
public static TestUserData GetAliasUser()
|
|
{
|
|
(string username, string password) = GetUsernameAndPassword("BRIDGE_FLAUI_ALIAS_USER");
|
|
return new TestUserData(username, password);
|
|
}
|
|
private static (string, string) GetUsernameAndPassword(string userType)
|
|
{
|
|
// Get the environment variable for the user and check if missing
|
|
// When changing or adding an environment variable, you must restart Visual Studio
|
|
// if you have it open while doing this
|
|
string? str = Environment.GetEnvironmentVariable(userType);
|
|
if (string.IsNullOrEmpty(str))
|
|
{
|
|
throw new Exception($"Environment variable {userType} must contain one ':' and it must be between username and password!");
|
|
}
|
|
|
|
// Check if the environment variable contains only one ':'
|
|
// The ':' character must be between the username/email and password
|
|
string ch = ":";
|
|
if ((str.IndexOf(ch) != str.LastIndexOf(ch)) | (str.IndexOf(ch) == -1))
|
|
{
|
|
throw new Exception(
|
|
$"Environment variable {str} must contain one ':' and it must be between username and password!"
|
|
);
|
|
}
|
|
|
|
string[] split = str.Split(':');
|
|
return (split[0], split[1]);
|
|
}
|
|
private static (string, string, string) GetUsernameAndPasswordAndMailbox(string userType)
|
|
{
|
|
// Get the environment variable for the user type and check if missing
|
|
string? str = Environment.GetEnvironmentVariable(userType);
|
|
if (string.IsNullOrEmpty(str))
|
|
{
|
|
throw new Exception($"Missing environment variable: {userType}");
|
|
}
|
|
|
|
// Check if the environment variable contains exactly two ':'
|
|
// The first part is the username, second part is the password, third is the mailbox
|
|
string separator = ":";
|
|
string[] parts = str.Split(separator);
|
|
|
|
if (parts.Length != 3)
|
|
{
|
|
throw new Exception(
|
|
$"Environment variable {userType} must contain exactly two ':' characters, separating username, password, and mailbox!"
|
|
);
|
|
}
|
|
|
|
string username = parts[0];
|
|
string password = parts[1];
|
|
string mailbox = parts[2];
|
|
|
|
// Return the username, password, and mailbox as a tuple
|
|
return (username, password, mailbox);
|
|
|
|
}
|
|
}
|
|
}
|