TLSharp/TLSharp.Tests/TLSharpTests.cs

198 lines
5 KiB
C#
Raw Normal View History

2015-09-28 04:01:17 +02:00
using System;
using System.Configuration;
using System.IO;
2015-09-28 04:01:17 +02:00
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TLSharp.Core;
using TLSharp.Core.Auth;
using TLSharp.Core.MTProto;
2015-09-28 04:01:17 +02:00
using TLSharp.Core.Network;
namespace TLSharp.Tests
{
[TestClass]
public class TLSharpTests
2015-09-28 04:01:17 +02:00
{
2016-01-27 12:02:18 +01:00
private string NumberToSendMessage { get; set; }
private string NumberToAuthenticate { get; set; }
2015-09-28 04:01:17 +02:00
2016-02-01 21:58:51 +01:00
private string UserNameToSendMessage { get; set; }
2015-09-28 04:01:17 +02:00
[TestInitialize]
public void Init()
{
// Setup your phone numbers in app.config
NumberToAuthenticate = ConfigurationManager.AppSettings["numberToAuthenticate"];
2015-10-01 14:55:02 +02:00
if (string.IsNullOrEmpty(NumberToAuthenticate))
2016-02-01 21:06:15 +01:00
throw new InvalidOperationException("NumberToAuthenticate is null. Specify number in app.config");
2015-10-01 14:55:02 +02:00
2016-01-27 12:02:18 +01:00
NumberToSendMessage = ConfigurationManager.AppSettings["numberToSendMessage"];
if (string.IsNullOrEmpty(NumberToSendMessage))
2016-02-01 21:06:15 +01:00
throw new InvalidOperationException("NumberToSendMessage is null. Specify number in app.config");
2016-02-01 21:58:51 +01:00
UserNameToSendMessage = ConfigurationManager.AppSettings["userNameToSendMessage"];
if (string.IsNullOrEmpty(UserNameToSendMessage))
throw new InvalidOperationException("UserNameToSendMessage is null. Specify userName in app.config");
2015-10-01 14:55:02 +02:00
}
2015-09-28 04:01:17 +02:00
[TestMethod]
public async Task AuthUser()
{
var store = new FileSessionStore();
var client = new TelegramClient(store, "session");
2015-10-01 14:55:02 +02:00
2015-09-28 04:01:17 +02:00
await client.Connect();
var hash = await client.SendCodeRequest(NumberToAuthenticate);
2016-02-04 14:04:31 +01:00
var code = "93463"; // you can change code in debugger
2015-09-28 04:01:17 +02:00
var user = await client.MakeAuth(NumberToAuthenticate, hash, code);
Assert.IsNotNull(user);
}
[TestMethod]
public async Task CheckPhones()
{
var store = new FileSessionStore();
2016-02-01 21:06:15 +01:00
var client = new TelegramClient(store, "session");
2015-09-28 04:01:17 +02:00
await client.Connect();
2016-01-27 12:02:18 +01:00
var result = await client.IsPhoneRegistered(NumberToAuthenticate);
Assert.IsTrue(result);
2015-09-28 04:01:17 +02:00
}
[TestMethod]
2016-02-07 11:28:41 +01:00
public async Task ImportContactByPhoneNumber()
2015-09-28 04:01:17 +02:00
{
// User should be already authenticated!
var store = new FileSessionStore();
2016-01-27 12:02:18 +01:00
var client = new TelegramClient(store, "session");
2015-10-01 14:55:02 +02:00
2015-09-28 04:01:17 +02:00
await client.Connect();
Assert.IsTrue(client.IsUserAuthorized());
2016-02-07 11:28:41 +01:00
var res = await client.ImportContactByPhoneNumber(NumberToSendMessage);
2015-09-28 04:01:17 +02:00
Assert.IsNotNull(res);
}
[TestMethod]
public async Task ImportByUserName()
{
var store = new FileSessionStore();
var client = new TelegramClient(store, "session");
await client.Connect();
Assert.IsTrue(client.IsUserAuthorized());
2016-02-01 21:58:51 +01:00
var res = await client.ImportByUserName(UserNameToSendMessage);
Assert.IsNotNull(res);
}
[TestMethod]
public async Task ImportByUserNameAndSendMessage()
{
var store = new FileSessionStore();
var client = new TelegramClient(store, "session");
await client.Connect();
Assert.IsTrue(client.IsUserAuthorized());
var res = await client.ImportByUserName(UserNameToSendMessage);
Assert.IsNotNull(res);
2016-02-01 21:58:51 +01:00
await client.SendMessage(res.Value, "Test message from TelegramClient");
}
2015-09-28 04:01:17 +02:00
[TestMethod]
2016-02-07 11:28:41 +01:00
public async Task ImportContactByPhoneNumberAndSendMessage()
2015-09-28 04:01:17 +02:00
{
// User should be already authenticated!
var store = new FileSessionStore();
2016-01-27 12:02:18 +01:00
var client = new TelegramClient(store, "session");
2015-09-28 04:01:17 +02:00
await client.Connect();
Assert.IsTrue(client.IsUserAuthorized());
2016-02-07 11:28:41 +01:00
var res = await client.ImportContactByPhoneNumber(NumberToSendMessage);
2015-09-28 04:01:17 +02:00
Assert.IsNotNull(res);
await client.SendMessage(res.Value, "Test message from TelegramClient");
}
[TestMethod]
public async Task GetHistory()
{
var store = new FileSessionStore();
var client = new TelegramClient(store, "session");
await client.Connect();
Assert.IsTrue(client.IsUserAuthorized());
2016-02-07 11:28:41 +01:00
var res = await client.ImportContactByPhoneNumber(NumberToSendMessage);
Assert.IsNotNull(res);
2016-02-04 14:04:31 +01:00
var hist = await client.GetMessagesHistoryForContact(res.Value, 0, 5);
Assert.IsNotNull(hist);
}
[TestMethod]
public async Task UploadAndSendMedia()
{
var store = new FileSessionStore();
var client = new TelegramClient(store, "session");
await client.Connect();
Assert.IsTrue(client.IsUserAuthorized());
2016-02-07 11:28:41 +01:00
var res = await client.ImportContactByPhoneNumber(NumberToSendMessage);
Assert.IsNotNull(res);
const string testFile = "TEST";
var file = File.ReadAllBytes("../../data/cat.jpg");
var mediaFile = await client.UploadFile("test_file.jpg", file);
Assert.IsNotNull(mediaFile);
2016-02-04 15:05:48 +01:00
var state = await client.SendMediaMessage(res.Value, mediaFile);
Assert.IsTrue(state);
}
2015-09-28 04:01:17 +02:00
[TestMethod]
public async Task TestConnection()
{
var store = new FakeSessionStore();
2016-01-27 12:02:18 +01:00
var client = new TelegramClient(store, "");
2015-09-28 04:01:17 +02:00
Assert.IsTrue(await client.Connect());
}
[TestMethod]
public async Task AuthenticationWorks()
{
2016-01-27 12:02:18 +01:00
using (var transport = new TcpTransport("91.108.56.165", 443))
2015-09-28 04:01:17 +02:00
{
var authKey = await Authenticator.DoAuthentication(transport);
Assert.IsNotNull(authKey.AuthKey.Data);
}
}
}
}