2016-10-23 11:00:52 +02:00
|
|
|
|
|
2016-10-23 17:23:10 +02:00
|
|
|
|
using System;
|
2016-09-24 15:38:26 +02:00
|
|
|
|
using System.Configuration;
|
|
|
|
|
|
using System.Diagnostics;
|
2016-10-23 13:10:54 +02:00
|
|
|
|
using System.IO;
|
2016-09-24 15:38:26 +02:00
|
|
|
|
using System.Linq;
|
2016-10-11 15:32:38 +02:00
|
|
|
|
using System.Threading;
|
2016-09-24 15:38:26 +02:00
|
|
|
|
using System.Threading.Tasks;
|
2016-10-23 11:00:52 +02:00
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
using TeleSharp.TL;
|
2016-10-23 13:10:54 +02:00
|
|
|
|
using TeleSharp.TL.Messages;
|
2016-09-24 15:38:26 +02:00
|
|
|
|
using TLSharp.Core;
|
2016-11-29 18:28:22 +01:00
|
|
|
|
using TLSharp.Core.Network;
|
2016-10-23 12:02:44 +02:00
|
|
|
|
using TLSharp.Core.Requests;
|
2016-10-23 13:12:34 +02:00
|
|
|
|
using TLSharp.Core.Utils;
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
|
|
|
|
|
namespace TLSharp.Tests
|
|
|
|
|
|
{
|
|
|
|
|
|
public class TLSharpTests
|
|
|
|
|
|
{
|
|
|
|
|
|
private string NumberToSendMessage { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
private string NumberToAuthenticate { get; set; }
|
|
|
|
|
|
|
2016-10-30 17:15:10 +01:00
|
|
|
|
private string CodeToAuthenticate { get; set; }
|
|
|
|
|
|
|
2016-11-16 14:31:00 +01:00
|
|
|
|
private string PasswordToAuthenticate { get; set; }
|
|
|
|
|
|
|
2016-09-24 15:38:26 +02:00
|
|
|
|
private string NotRegisteredNumberToSignUp { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
private string UserNameToSendMessage { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
private string NumberToGetUserFull { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
private string NumberToAddToChat { get; set; }
|
|
|
|
|
|
|
2016-10-23 12:11:26 +02:00
|
|
|
|
private string ApiHash { get; set; }
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-23 12:11:26 +02:00
|
|
|
|
private int ApiId { get; set; }
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
class Assert
|
|
|
|
|
|
{
|
|
|
|
|
|
static internal void IsNotNull(object obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
IsNotNullHanlder(obj);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static internal void IsTrue(bool cond)
|
|
|
|
|
|
{
|
|
|
|
|
|
IsTrueHandler(cond);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
internal static Action<object> IsNotNullHanlder;
|
|
|
|
|
|
internal static Action<bool> IsTrueHandler;
|
|
|
|
|
|
|
|
|
|
|
|
protected void Init(Action<object> notNullHandler, Action<bool> trueHandler)
|
2016-09-24 15:38:26 +02:00
|
|
|
|
{
|
2016-11-03 17:10:14 +01:00
|
|
|
|
IsNotNullHanlder = notNullHandler;
|
|
|
|
|
|
IsTrueHandler = trueHandler;
|
|
|
|
|
|
|
2016-10-23 12:11:26 +02:00
|
|
|
|
// Setup your API settings and phone numbers in app.config
|
2016-10-23 17:23:10 +02:00
|
|
|
|
GatherTestConfiguration();
|
|
|
|
|
|
}
|
2016-10-23 12:11:26 +02:00
|
|
|
|
|
2016-10-23 17:23:10 +02:00
|
|
|
|
private TelegramClient NewClient()
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
return new TelegramClient(ApiId, ApiHash);
|
|
|
|
|
|
}
|
2016-10-24 08:58:04 +02:00
|
|
|
|
catch (MissingApiConfigurationException ex)
|
2016-10-23 17:23:10 +02:00
|
|
|
|
{
|
2016-10-24 08:58:04 +02:00
|
|
|
|
throw new Exception($"Please add your API settings to the `app.config` file. (More info: {MissingApiConfigurationException.InfoUrl})",
|
|
|
|
|
|
ex);
|
2016-10-23 17:23:10 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void GatherTestConfiguration()
|
|
|
|
|
|
{
|
2016-10-31 18:33:26 +01:00
|
|
|
|
string appConfigMsgWarning = "{0} not configured in app.config! Some tests may fail.";
|
|
|
|
|
|
|
2016-10-23 12:11:26 +02:00
|
|
|
|
ApiHash = ConfigurationManager.AppSettings[nameof(ApiHash)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(ApiHash))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(ApiHash));
|
2016-10-23 12:11:26 +02:00
|
|
|
|
|
|
|
|
|
|
var apiId = ConfigurationManager.AppSettings[nameof(ApiId)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(apiId))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(ApiId));
|
2016-10-23 17:23:10 +02:00
|
|
|
|
else
|
|
|
|
|
|
ApiId = int.Parse(apiId);
|
2016-10-23 12:11:26 +02:00
|
|
|
|
|
2016-09-24 15:38:26 +02:00
|
|
|
|
NumberToAuthenticate = ConfigurationManager.AppSettings[nameof(NumberToAuthenticate)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(NumberToAuthenticate))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(NumberToAuthenticate));
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-30 17:15:10 +01:00
|
|
|
|
CodeToAuthenticate = ConfigurationManager.AppSettings[nameof(CodeToAuthenticate)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(CodeToAuthenticate))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(CodeToAuthenticate));
|
2016-10-30 17:15:10 +01:00
|
|
|
|
|
2016-11-16 14:31:00 +01:00
|
|
|
|
PasswordToAuthenticate = ConfigurationManager.AppSettings[nameof(PasswordToAuthenticate)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(PasswordToAuthenticate))
|
|
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(PasswordToAuthenticate));
|
|
|
|
|
|
|
2016-09-24 15:38:26 +02:00
|
|
|
|
NotRegisteredNumberToSignUp = ConfigurationManager.AppSettings[nameof(NotRegisteredNumberToSignUp)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(NotRegisteredNumberToSignUp))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(NotRegisteredNumberToSignUp));
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
|
|
|
|
|
UserNameToSendMessage = ConfigurationManager.AppSettings[nameof(UserNameToSendMessage)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(UserNameToSendMessage))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(UserNameToSendMessage));
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
|
|
|
|
|
NumberToGetUserFull = ConfigurationManager.AppSettings[nameof(NumberToGetUserFull)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(NumberToGetUserFull))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(NumberToGetUserFull));
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
|
|
|
|
|
NumberToAddToChat = ConfigurationManager.AppSettings[nameof(NumberToAddToChat)];
|
|
|
|
|
|
if (string.IsNullOrEmpty(NumberToAddToChat))
|
2016-10-31 18:33:26 +01:00
|
|
|
|
Debug.WriteLine(appConfigMsgWarning, nameof(NumberToAddToChat));
|
2016-09-24 15:38:26 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task AuthUser()
|
2016-09-24 15:38:26 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
await client.ConnectAsync();
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
var hash = await client.SendCodeRequestAsync(NumberToAuthenticate);
|
2016-10-30 17:15:10 +01:00
|
|
|
|
var code = CodeToAuthenticate; // you can change code in debugger too
|
|
|
|
|
|
|
|
|
|
|
|
if (String.IsNullOrWhiteSpace(code))
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new Exception("CodeToAuthenticate is empty in the app.config file, fill it with the code you just got now by SMS/Telegram");
|
|
|
|
|
|
}
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-30 17:15:10 +01:00
|
|
|
|
TLUser user = null;
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
user = await client.MakeAuthAsync(NumberToAuthenticate, hash, code);
|
|
|
|
|
|
}
|
2016-11-16 14:31:00 +01:00
|
|
|
|
catch (CloudPasswordNeededException ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
var password = await client.GetPasswordSetting();
|
|
|
|
|
|
var password_str = PasswordToAuthenticate;
|
|
|
|
|
|
|
|
|
|
|
|
user = await client.MakeAuthWithPasswordAsync(password,password_str);
|
|
|
|
|
|
}
|
2016-10-30 17:15:10 +01:00
|
|
|
|
catch (InvalidPhoneCodeException ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new Exception("CodeToAuthenticate is wrong in the app.config file, fill it with the code you just got now by SMS/Telegram",
|
|
|
|
|
|
ex);
|
|
|
|
|
|
}
|
2016-09-24 15:38:26 +02:00
|
|
|
|
Assert.IsNotNull(user);
|
|
|
|
|
|
Assert.IsTrue(client.IsUserAuthorized());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task SendMessageTest()
|
2016-10-23 12:29:18 +02:00
|
|
|
|
{
|
2016-11-02 18:31:47 +01:00
|
|
|
|
NumberToSendMessage = ConfigurationManager.AppSettings[nameof(NumberToSendMessage)];
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(NumberToSendMessage))
|
|
|
|
|
|
throw new Exception($"Please fill the '{nameof(NumberToSendMessage)}' setting in app.config file first");
|
|
|
|
|
|
|
2016-11-02 18:33:56 +01:00
|
|
|
|
// this is because the contacts in the address come without the "+" prefix
|
|
|
|
|
|
var normalizedNumber = NumberToSendMessage.StartsWith("+") ?
|
|
|
|
|
|
NumberToSendMessage.Substring(1, NumberToSendMessage.Length - 1) :
|
|
|
|
|
|
NumberToSendMessage;
|
|
|
|
|
|
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2016-10-23 12:29:18 +02:00
|
|
|
|
await client.ConnectAsync();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2016-10-23 12:29:18 +02:00
|
|
|
|
var result = await client.GetContactsAsync();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var user = result.Users
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Phone == normalizedNumber);
|
2016-10-23 12:44:37 +02:00
|
|
|
|
|
|
|
|
|
|
if (user == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new System.Exception("Number was not found in Contacts List of user: " + NumberToSendMessage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
await client.SendTypingAsync(new TLInputPeerUser() { UserId = user.Id });
|
2016-10-23 12:29:18 +02:00
|
|
|
|
Thread.Sleep(3000);
|
2017-11-09 11:35:15 +01:00
|
|
|
|
await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id }, "TEST");
|
2016-10-23 12:29:18 +02:00
|
|
|
|
}
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task SendMessageToChannelTest()
|
2016-10-23 12:29:18 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2016-10-23 12:29:18 +02:00
|
|
|
|
await client.ConnectAsync();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2016-10-26 18:45:33 +02:00
|
|
|
|
var dialogs = (TLDialogs) await client.GetUserDialogsAsync();
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var chat = dialogs.Chats
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLChannel>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(c => c.Title == "TestGroup");
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
await client.SendMessageAsync(new TLInputPeerChannel() { ChannelId = chat.Id, AccessHash = chat.AccessHash.Value }, "TEST MSG");
|
2016-10-23 12:29:18 +02:00
|
|
|
|
}
|
2016-10-11 15:32:38 +02:00
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task SendPhotoToContactTest()
|
2016-10-23 12:02:44 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-23 12:02:44 +02:00
|
|
|
|
|
|
|
|
|
|
await client.ConnectAsync();
|
|
|
|
|
|
|
|
|
|
|
|
var result = await client.GetContactsAsync();
|
|
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var user = result.Users
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Phone == NumberToSendMessage);
|
2016-10-23 12:02:44 +02:00
|
|
|
|
|
|
|
|
|
|
var fileResult = (TLInputFile)await client.UploadFile("cat.jpg", new StreamReader("data/cat.jpg"));
|
2017-11-09 11:35:15 +01:00
|
|
|
|
await client.SendUploadedPhoto(new TLInputPeerUser() { UserId = user.Id }, fileResult, "kitty");
|
2016-10-23 12:02:44 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task SendBigFileToContactTest()
|
2016-10-23 12:02:44 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-23 12:02:44 +02:00
|
|
|
|
|
|
|
|
|
|
await client.ConnectAsync();
|
|
|
|
|
|
|
|
|
|
|
|
var result = await client.GetContactsAsync();
|
|
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var user = result.Users
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Phone == NumberToSendMessage);
|
2016-10-23 12:02:44 +02:00
|
|
|
|
|
2016-10-23 12:29:18 +02:00
|
|
|
|
var fileResult = (TLInputFileBig)await client.UploadFile("some.zip", new StreamReader("<some big file path>"));
|
2016-10-23 12:02:44 +02:00
|
|
|
|
|
|
|
|
|
|
await client.SendUploadedDocument(
|
2017-11-09 11:35:15 +01:00
|
|
|
|
new TLInputPeerUser() { UserId = user.Id },
|
2016-10-23 12:02:44 +02:00
|
|
|
|
fileResult,
|
|
|
|
|
|
"some zips",
|
|
|
|
|
|
"application/zip",
|
2016-10-23 12:29:18 +02:00
|
|
|
|
new TLVector<TLAbsDocumentAttribute>());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task DownloadFileFromContactTest()
|
2016-10-23 12:29:18 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-23 12:29:18 +02:00
|
|
|
|
|
|
|
|
|
|
await client.ConnectAsync();
|
|
|
|
|
|
|
|
|
|
|
|
var result = await client.GetContactsAsync();
|
|
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var user = result.Users
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Phone == NumberToSendMessage);
|
2016-10-23 12:29:18 +02:00
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
var inputPeer = new TLInputPeerUser() { UserId = user.Id };
|
|
|
|
|
|
var res = await client.SendRequestAsync<TLMessagesSlice>(new TLRequestGetHistory() { Peer = inputPeer });
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var document = res.Messages
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLMessage>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.Where(m => m.Media != null)
|
|
|
|
|
|
.Select(m => m.Media)
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLMessageMediaDocument>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.Select(md => md.Document)
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLDocument>()
|
2016-10-23 12:29:18 +02:00
|
|
|
|
.First();
|
|
|
|
|
|
|
|
|
|
|
|
var resFile = await client.GetFile(
|
|
|
|
|
|
new TLInputDocumentFileLocation()
|
|
|
|
|
|
{
|
2017-11-09 11:35:15 +01:00
|
|
|
|
AccessHash = document.AccessHash,
|
|
|
|
|
|
Id = document.Id,
|
|
|
|
|
|
Version = document.Version
|
2016-10-23 12:29:18 +02:00
|
|
|
|
},
|
2017-11-09 11:35:15 +01:00
|
|
|
|
document.Size);
|
2016-10-23 12:29:18 +02:00
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
Assert.IsTrue(resFile.Bytes.Length > 0);
|
2016-10-23 12:02:44 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task DownloadFileFromWrongLocationTest()
|
2016-10-29 10:47:18 +02:00
|
|
|
|
{
|
|
|
|
|
|
var client = NewClient();
|
|
|
|
|
|
|
|
|
|
|
|
await client.ConnectAsync();
|
|
|
|
|
|
|
|
|
|
|
|
var result = await client.GetContactsAsync();
|
|
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var user = result.Users
|
2016-12-19 16:00:30 +01:00
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Id == 5880094);
|
2016-10-29 10:47:18 +02:00
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
var photo = ((TLUserProfilePhoto)user.Photo);
|
|
|
|
|
|
var photoLocation = (TLFileLocation) photo.PhotoBig;
|
2016-10-29 10:47:18 +02:00
|
|
|
|
|
|
|
|
|
|
var resFile = await client.GetFile(new TLInputFileLocation()
|
|
|
|
|
|
{
|
2017-11-09 11:35:15 +01:00
|
|
|
|
LocalId = photoLocation.LocalId,
|
|
|
|
|
|
Secret = photoLocation.Secret,
|
|
|
|
|
|
VolumeId = photoLocation.VolumeId
|
2016-10-29 10:47:18 +02:00
|
|
|
|
}, 1024);
|
|
|
|
|
|
|
|
|
|
|
|
var res = await client.GetUserDialogsAsync();
|
|
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
Assert.IsTrue(resFile.Bytes.Length > 0);
|
2016-10-29 10:47:18 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task SignUpNewUser()
|
2016-09-24 15:38:26 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
await client.ConnectAsync();
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
var hash = await client.SendCodeRequestAsync(NotRegisteredNumberToSignUp);
|
2016-09-24 15:38:26 +02:00
|
|
|
|
var code = "";
|
|
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
var registeredUser = await client.SignUpAsync(NotRegisteredNumberToSignUp, hash, code, "TLSharp", "User");
|
2016-09-24 15:38:26 +02:00
|
|
|
|
Assert.IsNotNull(registeredUser);
|
|
|
|
|
|
Assert.IsTrue(client.IsUserAuthorized());
|
|
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
var loggedInUser = await client.MakeAuthAsync(NotRegisteredNumberToSignUp, hash, code);
|
2016-09-24 15:38:26 +02:00
|
|
|
|
Assert.IsNotNull(loggedInUser);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-11-03 17:10:14 +01:00
|
|
|
|
public virtual async Task CheckPhones()
|
2016-09-24 15:38:26 +02:00
|
|
|
|
{
|
2016-10-23 17:23:10 +02:00
|
|
|
|
var client = NewClient();
|
2016-10-11 15:32:38 +02:00
|
|
|
|
await client.ConnectAsync();
|
2016-09-24 15:38:26 +02:00
|
|
|
|
|
2016-10-11 15:32:38 +02:00
|
|
|
|
var result = await client.IsPhoneRegisteredAsync(NumberToAuthenticate);
|
2016-09-24 15:38:26 +02:00
|
|
|
|
Assert.IsTrue(result);
|
|
|
|
|
|
}
|
2016-12-28 15:37:34 +01:00
|
|
|
|
|
2016-11-29 18:28:22 +01:00
|
|
|
|
public virtual async Task FloodExceptionShouldNotCauseCannotReadPackageLengthError()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < 50; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
await CheckPhones();
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (FloodException floodException)
|
|
|
|
|
|
{
|
|
|
|
|
|
Console.WriteLine($"FLOODEXCEPTION: {floodException}");
|
|
|
|
|
|
Thread.Sleep(floodException.TimeToWait);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2016-12-28 15:37:34 +01:00
|
|
|
|
|
|
|
|
|
|
public virtual async Task SendMessageByUserNameTest()
|
|
|
|
|
|
{
|
|
|
|
|
|
UserNameToSendMessage = ConfigurationManager.AppSettings[nameof(UserNameToSendMessage)];
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(UserNameToSendMessage))
|
|
|
|
|
|
throw new Exception($"Please fill the '{nameof(UserNameToSendMessage)}' setting in app.config file first");
|
|
|
|
|
|
|
|
|
|
|
|
var client = NewClient();
|
|
|
|
|
|
|
|
|
|
|
|
await client.ConnectAsync();
|
|
|
|
|
|
|
|
|
|
|
|
var result = await client.SearchUserAsync(UserNameToSendMessage);
|
|
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
var user = result.Users
|
2016-12-28 15:37:34 +01:00
|
|
|
|
.Where(x => x.GetType() == typeof(TLUser))
|
|
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Username == UserNameToSendMessage.TrimStart('@'));
|
2016-12-28 15:37:34 +01:00
|
|
|
|
|
|
|
|
|
|
if (user == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var contacts = await client.GetContactsAsync();
|
|
|
|
|
|
|
2017-11-09 10:52:29 +01:00
|
|
|
|
user = contacts.Users
|
2016-12-28 15:37:34 +01:00
|
|
|
|
.Where(x => x.GetType() == typeof(TLUser))
|
|
|
|
|
|
.OfType<TLUser>()
|
2017-11-09 11:35:15 +01:00
|
|
|
|
.FirstOrDefault(x => x.Username == UserNameToSendMessage.TrimStart('@'));
|
2016-12-28 15:37:34 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (user == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new System.Exception("Username was not found: " + UserNameToSendMessage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-11-09 11:35:15 +01:00
|
|
|
|
await client.SendTypingAsync(new TLInputPeerUser() { UserId = user.Id });
|
2016-12-28 15:37:34 +01:00
|
|
|
|
Thread.Sleep(3000);
|
2017-11-09 11:35:15 +01:00
|
|
|
|
await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id }, "TEST");
|
2016-12-28 15:37:34 +01:00
|
|
|
|
}
|
2016-09-24 15:38:26 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|