TLSharp/TLSharp.Tests/TLSharpTests.cs

243 lines
8.9 KiB
C#
Raw Normal View History

2016-10-23 11:00:52 +02:00

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-09-24 15:38:26 +02:00
using Microsoft.VisualStudio.TestTools.UnitTesting;
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;
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
{
[TestClass]
public class TLSharpTests
{
private string NumberToSendMessage { get; set; }
private string NumberToAuthenticate { get; set; }
private string NotRegisteredNumberToSignUp { get; set; }
private string UserNameToSendMessage { get; set; }
private string NumberToGetUserFull { get; set; }
private string NumberToAddToChat { get; set; }
private string ApiHash { get; set; }
2016-09-24 15:38:26 +02:00
private int ApiId { get; set; }
2016-09-24 15:38:26 +02:00
[TestInitialize]
public void Init()
{
// Setup your API settings and phone numbers in app.config
ApiHash = ConfigurationManager.AppSettings[nameof(ApiHash)];
if (string.IsNullOrEmpty(ApiHash))
Debug.WriteLine("ApiHash not configured in app.config! Some tests may fail.");
var apiId = ConfigurationManager.AppSettings[nameof(ApiId)];
if (string.IsNullOrEmpty(apiId))
Debug.WriteLine("ApiId not configured in app.config! Some tests may fail.");
ApiId = int.Parse(apiId);
2016-09-24 15:38:26 +02:00
NumberToAuthenticate = ConfigurationManager.AppSettings[nameof(NumberToAuthenticate)];
if (string.IsNullOrEmpty(NumberToAuthenticate))
Debug.WriteLine("NumberToAuthenticate not configured in app.config! Some tests may fail.");
NotRegisteredNumberToSignUp = ConfigurationManager.AppSettings[nameof(NotRegisteredNumberToSignUp)];
if (string.IsNullOrEmpty(NotRegisteredNumberToSignUp))
Debug.WriteLine("NotRegisteredNumberToSignUp not configured in app.config! Some tests may fail.");
NumberToSendMessage = ConfigurationManager.AppSettings[nameof(NumberToSendMessage)];
if (string.IsNullOrEmpty(NumberToSendMessage))
Debug.WriteLine("NumberToSendMessage not configured in app.config! Some tests may fail.");
UserNameToSendMessage = ConfigurationManager.AppSettings[nameof(UserNameToSendMessage)];
if (string.IsNullOrEmpty(UserNameToSendMessage))
Debug.WriteLine("UserNameToSendMessage not configured in app.config! Some tests may fail.");
NumberToGetUserFull = ConfigurationManager.AppSettings[nameof(NumberToGetUserFull)];
if (string.IsNullOrEmpty(NumberToGetUserFull))
Debug.WriteLine("NumberToGetUserFull not configured in app.config! Some tests may fail.");
NumberToAddToChat = ConfigurationManager.AppSettings[nameof(NumberToAddToChat)];
if (string.IsNullOrEmpty(NumberToAddToChat))
Debug.WriteLine("NumberToAddToChat not configured in app.config! Some tests may fail.");
}
[TestMethod]
public async Task AuthUser()
{
var client = new TelegramClient(ApiId, ApiHash);
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-09-24 15:38:26 +02:00
var code = "93463"; // you can change code in debugger
2016-10-11 15:32:38 +02:00
var user = await client.MakeAuthAsync(NumberToAuthenticate, hash, code);
2016-09-24 15:38:26 +02:00
Assert.IsNotNull(user);
Assert.IsTrue(client.IsUserAuthorized());
}
2016-10-23 12:29:18 +02:00
[TestMethod]
public async Task SendMessageTest()
{
var client = new TelegramClient(ApiId, ApiHash);
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
2016-10-23 12:29:18 +02:00
var user = result.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.Cast<TLUser>()
.FirstOrDefault(x => x.phone == NumberToSendMessage);
if (user == null)
{
throw new System.Exception("Number was not found in Contacts List of user: " + NumberToSendMessage);
}
2016-10-23 12:29:18 +02:00
await client.SendTypingAsync(new TLInputPeerUser() { user_id = user.id });
Thread.Sleep(3000);
await client.SendMessageAsync(new TLInputPeerUser() { user_id = user.id }, "TEST");
2016-10-11 15:32:38 +02:00
2016-10-23 12:29:18 +02:00
}
2016-10-11 15:32:38 +02:00
2016-10-23 12:29:18 +02:00
[TestMethod]
public async Task SendMessageToChannelTest()
{
var client = new TelegramClient(ApiId, ApiHash);
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 dialogs = await client.GetUserDialogsAsync();
var chat = dialogs.chats.lists
.Where(c => c.GetType() == typeof(TLChannel))
.Cast<TLChannel>()
.FirstOrDefault(c => c.title == "TestGroup");
2016-10-11 15:32:38 +02:00
2016-10-23 12:29:18 +02:00
await client.SendMessageAsync(new TLInputPeerChannel() { channel_id = chat.id, access_hash = chat.access_hash.Value }, "TEST MSG");
}
2016-10-11 15:32:38 +02:00
[TestMethod]
public async Task SendPhotoToContactTest()
{
2016-10-23 13:10:54 +02:00
var client = new TelegramClient(ApiId, ApiHash);
await client.ConnectAsync();
var result = await client.GetContactsAsync();
var user = result.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.Cast<TLUser>()
.FirstOrDefault(x => x.phone == NumberToSendMessage);
var fileResult = (TLInputFile)await client.UploadFile("cat.jpg", new StreamReader("data/cat.jpg"));
2016-10-23 12:29:18 +02:00
await client.SendUploadedPhoto(new TLInputPeerUser() { user_id = user.id }, fileResult, "kitty");
}
[TestMethod]
public async Task SendBigFileToContactTest()
{
2016-10-23 13:10:54 +02:00
var client = new TelegramClient(ApiId, ApiHash);
await client.ConnectAsync();
var result = await client.GetContactsAsync();
var user = result.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.Cast<TLUser>()
.FirstOrDefault(x => x.phone == NumberToSendMessage);
2016-10-23 12:29:18 +02:00
var fileResult = (TLInputFileBig)await client.UploadFile("some.zip", new StreamReader("<some big file path>"));
await client.SendUploadedDocument(
2016-10-23 12:29:18 +02:00
new TLInputPeerUser() { user_id = user.id },
fileResult,
"some zips",
"application/zip",
2016-10-23 12:29:18 +02:00
new TLVector<TLAbsDocumentAttribute>());
}
[TestMethod]
public async Task DownloadFileFromContactTest()
{
2016-10-23 13:10:54 +02:00
var client = new TelegramClient(ApiId, ApiHash);
2016-10-23 12:29:18 +02:00
await client.ConnectAsync();
var result = await client.GetContactsAsync();
var user = result.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.Cast<TLUser>()
.FirstOrDefault(x => x.phone == NumberToSendMessage);
var inputPeer = new TLInputPeerUser() { user_id = user.id };
var res = await client.SendRequestAsync<TLMessagesSlice>(new TLRequestGetHistory() { peer = inputPeer });
var document = res.messages.lists
.Where(m => m.GetType() == typeof(TLMessage))
.Cast<TLMessage>()
.Where(m => m.media != null && m.media.GetType() == typeof(TLMessageMediaDocument))
.Select(m => m.media)
.Cast<TLMessageMediaDocument>()
.Where(md => md.document.GetType() == typeof(TLDocument))
.Select(md => md.document)
.Cast<TLDocument>()
.First();
var resFile = await client.GetFile(
new TLInputDocumentFileLocation()
{
access_hash = document.access_hash,
id = document.id,
version = document.version
},
document.size);
Assert.IsTrue(resFile.bytes.Length > 0);
}
[TestMethod]
2016-09-24 15:38:26 +02:00
public async Task SignUpNewUser()
{
var client = new TelegramClient(ApiId, ApiHash);
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);
}
[TestMethod]
public async Task CheckPhones()
{
var client = new TelegramClient(ApiId, ApiHash);
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);
}
}
}