@@ -3,10 +3,14 @@ using System.Collections.Generic;
using System.IO;
using System.IO;
using System.Linq;
using System.Linq;
using System.Threading.Tasks;
using System.Threading.Tasks;
using System.Net;
using System.Text;
using System.Text;
using UserRoutes = Discord.Tests.Framework.Routes.Users;
using UserRoutes = Discord.Tests.Framework.Routes.Users;
using GuildRoutes = Discord.Tests.Framework.Routes.Guilds;
using Contracts = Discord.Tests.Framework.Routes.Contracts;
using Newtonsoft.Json;
using Newtonsoft.Json;
using Discord.Net.Converters;
using Discord.Net.Converters;
using Discord.Net;
namespace Discord.Tests.Framework
namespace Discord.Tests.Framework
{
{
@@ -18,16 +22,23 @@ namespace Discord.Tests.Framework
internal Dictionary<string, Response> Routes = new Dictionary<string, Response>()
internal Dictionary<string, Response> Routes = new Dictionary<string, Response>()
{
{
// --- USERS
// Get Current User
["GET users/@me"] = new Response(UserRoutes.Me),
["GET users/@me"] = new Response(UserRoutes.Me),
// Get User by ID
["GET users/66078337084162048"] = new Response(UserRoutes.Public),
["GET users/66078337084162048"] = new Response(UserRoutes.Public),
["GET users/1"] = new Response(UserRoutes.InvalidPublic)
// Get User by Tag
["GET users?q=foxbot%230282&limit=1"] = new Response(UserRoutes.Query),
// --- GUILDS
["GET guilds/81384788765712384"] = new Response(GuildRoutes.DiscordApi)
};
};
internal Stream GetMock(string method, string endpoint, string json, IReadOnlyDictionary<string, string> requestHeaders)
internal Stream GetMock(string method, string endpoint, string json, IReadOnlyDictionary<string, string> requestHeaders)
{
{
var key = string.Format("{0} {1}", method.ToUpperInvariant(), endpoint.ToLowerInvariant());
var key = string.Format("{0} {1}", method.ToUpperInvariant(), endpoint.ToLowerInvariant());
if (!Routes.ContainsKey(key))
if (!Routes.ContainsKey(key))
throw new NotImplementedException($"{key}: {json}");
throw new HttpException(HttpStatusCode.NotFound, $"{key}: {json}");
Contracts.EnsureAuthorization(requestHeaders);
var model = Routes[key].Invoke(json, requestHeaders);
var model = Routes[key].Invoke(json, requestHeaders);
var textResponse = JsonConvert.SerializeObject(model, SerializerSettings);
var textResponse = JsonConvert.SerializeObject(model, SerializerSettings);
return new MemoryStream(Encoding.UTF8.GetBytes(textResponse));
return new MemoryStream(Encoding.UTF8.GetBytes(textResponse));