From 5565474ff036830f7e55cf23fcf87bd17ee74fe9 Mon Sep 17 00:00:00 2001 From: Tommy Parnell Date: Mon, 20 Apr 2015 18:12:32 -0400 Subject: [PATCH] unit test things --- src/Untappd.Net.UnitTests/Class1.cs | 7 +-- .../TestAuthenticatedUntappdCredentials.cs | 31 +++++++++++ .../TestUnAuthenticatedUntappdCredentials.cs | 27 ++++++++++ .../Exception/TestBaseUntappdException.cs | 33 ++++++++++++ .../TestEndpointConfigurationException.cs | 22 ++++++++ .../Request/TestRepository.cs | 53 +++++++++++++++++++ .../Untappd.Net.UnitTests.csproj | 16 ++++++ src/Untappd.Net.UnitTests/packages.config | 3 ++ .../Client/AuthenticatedUntappdCredentials.cs | 6 ++- .../UnAuthenticatedUntappdCredentials.cs | 7 +-- .../Exception/BaseUntappdException.cs | 31 +++++++++++ .../EndpointConfigurationException.cs | 21 ++++++++ src/Untappd.Net/Properties/AssemblyInfo.cs | 1 + .../Request/AuthenticatedRequest.cs | 9 +++- src/Untappd.Net/Request/Repository.cs | 28 +++++++--- src/Untappd.Net/Untappd.Net.csproj | 2 + 16 files changed, 276 insertions(+), 21 deletions(-) create mode 100644 src/Untappd.Net.UnitTests/Client/TestAuthenticatedUntappdCredentials.cs create mode 100644 src/Untappd.Net.UnitTests/Client/TestUnAuthenticatedUntappdCredentials.cs create mode 100644 src/Untappd.Net.UnitTests/Exception/TestBaseUntappdException.cs create mode 100644 src/Untappd.Net.UnitTests/Exception/TestEndpointConfigurationException.cs create mode 100644 src/Untappd.Net.UnitTests/Request/TestRepository.cs create mode 100644 src/Untappd.Net/Exception/BaseUntappdException.cs create mode 100644 src/Untappd.Net/Exception/EndpointConfigurationException.cs diff --git a/src/Untappd.Net.UnitTests/Class1.cs b/src/Untappd.Net.UnitTests/Class1.cs index 322cd6e..48eff6d 100644 --- a/src/Untappd.Net.UnitTests/Class1.cs +++ b/src/Untappd.Net.UnitTests/Class1.cs @@ -1,8 +1,9 @@ using System; using NUnit.Framework; -using Untappd.Client.Net; +using Untappd.Net.Client; using Untappd.Net.Request; using Untappd.Net.Responses.UserDistinctBeer; +using Untappd.Net.Responses.UserInfo; namespace Untappd.Net.UnitTests { @@ -13,8 +14,8 @@ namespace Untappd.Net.UnitTests [Ignore] public void Test() { - var ts = new UnAuthenticatedUntappdCredentials("clientid", "clientkey"); - var t = new Repository().Get(ts, "tparnell"); + var ts = new UnAuthenticatedUntappdCredentials("id", "se"); + var t = new Repository().Get(ts, "tparnell"); Console.WriteLine(t); } } diff --git a/src/Untappd.Net.UnitTests/Client/TestAuthenticatedUntappdCredentials.cs b/src/Untappd.Net.UnitTests/Client/TestAuthenticatedUntappdCredentials.cs new file mode 100644 index 0000000..9a38ab1 --- /dev/null +++ b/src/Untappd.Net.UnitTests/Client/TestAuthenticatedUntappdCredentials.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using Untappd.Net.Client; + +namespace Untappd.Net.UnitTests.Client +{ + [TestFixture] + public class TestAuthenticatedUntappdCredentials + { + [Test] + [ExpectedException(typeof(ArgumentNullException))] + public void ExpectException() + { + var t = new AuthenticatedUntappdCredentials(null, "d", "d"); + } + [Test] + public void ExpectValid() + { + var token = "awesome"; + var t = new AuthenticatedUntappdCredentials(token, "d", "d"); + Assert.AreEqual(token, "awesome"); + token = "newString"; + //Make sure the reference is not copied over + Assert.AreEqual("awesome", t.AccessToken); + } + } +} diff --git a/src/Untappd.Net.UnitTests/Client/TestUnAuthenticatedUntappdCredentials.cs b/src/Untappd.Net.UnitTests/Client/TestUnAuthenticatedUntappdCredentials.cs new file mode 100644 index 0000000..1ea1460 --- /dev/null +++ b/src/Untappd.Net.UnitTests/Client/TestUnAuthenticatedUntappdCredentials.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using Untappd.Net.Client; + +namespace Untappd.Net.UnitTests.Client +{ + [TestFixture] + public class TestUnAuthenticatedUntappdCredentials + { + [Test] + [ExpectedException(typeof(ArgumentNullException))] + public void ExpectClientIdException() + { + var t = new UnAuthenticatedUntappdCredentials(string.Empty, "t"); + } + [Test] + [ExpectedException(typeof(ArgumentNullException))] + public void ExpectClientSecretException() + { + var t = new UnAuthenticatedUntappdCredentials("t", string.Empty); + } + } +} diff --git a/src/Untappd.Net.UnitTests/Exception/TestBaseUntappdException.cs b/src/Untappd.Net.UnitTests/Exception/TestBaseUntappdException.cs new file mode 100644 index 0000000..c685739 --- /dev/null +++ b/src/Untappd.Net.UnitTests/Exception/TestBaseUntappdException.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using Untappd.Net.Exception; + +namespace Untappd.Net.UnitTests.Exception +{ + [TestFixture] + public class TestBaseUntappdException + { + [ExpectedException(typeof (BaseUntappdException))] + [Test] + public void TestStandardException() + { + throw new BaseUntappdException(); + } + [ExpectedException(typeof(BaseUntappdException), ExpectedMessage = "messageHere")] + [Test] + public void TestStandardExceptionWithMessage() + { + throw new BaseUntappdException("messageHere"); + } + [ExpectedException(typeof(BaseUntappdException), ExpectedMessage = "messageHere")] + [Test] + public void TestStandardExceptionWithInner() + { + throw new BaseUntappdException("messageHere", new System.Exception("innerException!")); + } + } +} diff --git a/src/Untappd.Net.UnitTests/Exception/TestEndpointConfigurationException.cs b/src/Untappd.Net.UnitTests/Exception/TestEndpointConfigurationException.cs new file mode 100644 index 0000000..b6deddc --- /dev/null +++ b/src/Untappd.Net.UnitTests/Exception/TestEndpointConfigurationException.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using Untappd.Net.Exception; + +namespace Untappd.Net.UnitTests.Exception +{ + [TestFixture] + public class TestEndpointConfigurationException + { + [Test] + [ExpectedException(typeof(EndpointConfigurationException), ExpectedMessage = "Invalid endpoint configured")] + public void TestThrownExeption() + { + throw new EndpointConfigurationException(); + } + + } +} diff --git a/src/Untappd.Net.UnitTests/Request/TestRepository.cs b/src/Untappd.Net.UnitTests/Request/TestRepository.cs new file mode 100644 index 0000000..8221a74 --- /dev/null +++ b/src/Untappd.Net.UnitTests/Request/TestRepository.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Moq; +using Newtonsoft.Json; +using NUnit.Framework; +using RestSharp; +using Untappd.Net.Client; +using Untappd.Net.Request; +using Untappd.Net.Responses.BeerInfo; + +namespace Untappd.Net.UnitTests.Request +{ + [TestFixture] + public class TestRepository + { + [Test] + public void ConfirmRequestWorks() + { + var mockCreds = new Mock(); + mockCreds.Setup(a => a.ClientId).Returns("id"); + mockCreds.Setup(a => a.ClientSecret).Returns("secret"); + var bodyParam = new Dictionary(){{"key", "value"}}; + var client = new Mock(); + var request = new Mock(); + request.Setup(a => a.AddParameter(It.IsAny(), It.IsAny())); + request.Setup(a => a.AddParameter(It.IsAny(), It.IsAny())); + + var response = new Mock(); + var obj = JsonConvert.SerializeObject(new BeerInfo()); + response.Setup(a => a.Content).Returns(obj); + client.Setup((a) => a.Execute(It.IsAny())).Callback(() => + { + }).Returns(response.Object); + var repository = new Repository(client.Object, request.Object); + + repository.Get(mockCreds.Object, "awesome", bodyParam); + request.Verify(a => a.AddParameter("client_id", mockCreds.Object.ClientId)); + request.Verify(a => a.AddParameter("client_secret", mockCreds.Object.ClientSecret)); + request.Verify(a => a.AddParameter("key", "value")); + } + + [Test] + public void ConfirmBasicConstructorWorks() + { + var constructorTest = new Repository(); + Assert.IsTrue(constructorTest.Client != null); + Assert.IsTrue(constructorTest.Request != null); + } + } +} diff --git a/src/Untappd.Net.UnitTests/Untappd.Net.UnitTests.csproj b/src/Untappd.Net.UnitTests/Untappd.Net.UnitTests.csproj index 50d666e..0986b69 100644 --- a/src/Untappd.Net.UnitTests/Untappd.Net.UnitTests.csproj +++ b/src/Untappd.Net.UnitTests/Untappd.Net.UnitTests.csproj @@ -30,6 +30,13 @@ 4 + + ..\..\packages\Moq.4.2.1502.0911\lib\net40\Moq.dll + + + False + ..\..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll + ..\..\packages\NUnitTestAdapter.1.2\lib\nunit.core.dll False @@ -49,6 +56,10 @@ ..\..\packages\NUnitTestAdapter.1.2\lib\NUnit.VisualStudio.TestAdapter.dll False + + False + ..\..\packages\RestSharp.105.0.1\lib\net4\RestSharp.dll + @@ -59,7 +70,12 @@ + + + + + diff --git a/src/Untappd.Net.UnitTests/packages.config b/src/Untappd.Net.UnitTests/packages.config index 1e5dba5..079df90 100644 --- a/src/Untappd.Net.UnitTests/packages.config +++ b/src/Untappd.Net.UnitTests/packages.config @@ -1,5 +1,8 @@  + + + \ No newline at end of file diff --git a/src/Untappd.Net/Client/AuthenticatedUntappdCredentials.cs b/src/Untappd.Net/Client/AuthenticatedUntappdCredentials.cs index 52f6180..9f539aa 100644 --- a/src/Untappd.Net/Client/AuthenticatedUntappdCredentials.cs +++ b/src/Untappd.Net/Client/AuthenticatedUntappdCredentials.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Untappd.Client.Net; namespace Untappd.Net.Client { @@ -19,7 +18,10 @@ namespace Untappd.Net.Client public AuthenticatedUntappdCredentials(string accessToken, string clientId, string clientSecret) :base(clientId, clientSecret) { - if (string.IsNullOrWhiteSpace(accessToken)) throw new ArgumentNullException("accessToken"); + if (string.IsNullOrWhiteSpace(accessToken)) + { + throw new ArgumentNullException("accessToken"); + } AccessToken = string.Copy(accessToken); } } diff --git a/src/Untappd.Net/Client/UnAuthenticatedUntappdCredentials.cs b/src/Untappd.Net/Client/UnAuthenticatedUntappdCredentials.cs index 7d308cb..7375a00 100644 --- a/src/Untappd.Net/Client/UnAuthenticatedUntappdCredentials.cs +++ b/src/Untappd.Net/Client/UnAuthenticatedUntappdCredentials.cs @@ -1,11 +1,6 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Untappd.Net.Client; -namespace Untappd.Client.Net +namespace Untappd.Net.Client { public class UnAuthenticatedUntappdCredentials : IUntappdCredentials { diff --git a/src/Untappd.Net/Exception/BaseUntappdException.cs b/src/Untappd.Net/Exception/BaseUntappdException.cs new file mode 100644 index 0000000..f85182d --- /dev/null +++ b/src/Untappd.Net/Exception/BaseUntappdException.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace Untappd.Net.Exception +{ + [Serializable] + public class BaseUntappdException : System.Exception + { + public BaseUntappdException() + { + } + + public BaseUntappdException(string message) : base(message) + { + } + + public BaseUntappdException(string message, System.Exception inner) : base(message, inner) + { + } + + protected BaseUntappdException( + SerializationInfo info, + StreamingContext context) : base(info, context) + { + } + } +} diff --git a/src/Untappd.Net/Exception/EndpointConfigurationException.cs b/src/Untappd.Net/Exception/EndpointConfigurationException.cs new file mode 100644 index 0000000..d7e880a --- /dev/null +++ b/src/Untappd.Net/Exception/EndpointConfigurationException.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Untappd.Net.Exception +{ + public class EndpointConfigurationException : BaseUntappdException + { + /// + /// Called when a class has an empty endpoint + /// + /// + public EndpointConfigurationException() + :base("Invalid endpoint configured") + { + + } + } +} diff --git a/src/Untappd.Net/Properties/AssemblyInfo.cs b/src/Untappd.Net/Properties/AssemblyInfo.cs index 4334128..8fb909f 100644 --- a/src/Untappd.Net/Properties/AssemblyInfo.cs +++ b/src/Untappd.Net/Properties/AssemblyInfo.cs @@ -34,3 +34,4 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyFileVersion("1.0.*")] +[assembly: InternalsVisibleTo("Untappd.Net.UnitTests")] \ No newline at end of file diff --git a/src/Untappd.Net/Request/AuthenticatedRequest.cs b/src/Untappd.Net/Request/AuthenticatedRequest.cs index 4f012af..5535c7c 100644 --- a/src/Untappd.Net/Request/AuthenticatedRequest.cs +++ b/src/Untappd.Net/Request/AuthenticatedRequest.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Untappd.Net.Exception; namespace Untappd.Net.Request { @@ -10,12 +11,16 @@ namespace Untappd.Net.Request { protected abstract string _EndPoint { get; } /// - /// Pass in the parameter into the request...ie username, brewery, etc. + /// Pass in the url parameter into the request...ie username, brewery, etc. /// - /// + /// this can be null if request has no url params /// internal string EndPoint(string parameter) { + if (string.IsNullOrWhiteSpace(_EndPoint)) + { + throw new EndpointConfigurationException(); + } return string.Format(_EndPoint, parameter); } } diff --git a/src/Untappd.Net/Request/Repository.cs b/src/Untappd.Net/Request/Repository.cs index fcc6f01..1b103b9 100644 --- a/src/Untappd.Net/Request/Repository.cs +++ b/src/Untappd.Net/Request/Repository.cs @@ -5,13 +5,26 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Untappd.Client.Net; using Untappd.Net.Client; namespace Untappd.Net.Request { public class Repository { + internal IRestClient Client; + internal IRestRequest Request; + public Repository() + { + Client = new RestClient(Constants.BaseRequestString); + Request = new RestRequest(); + } + + internal Repository(IRestClient client, IRestRequest request) + { + Client = client; + Request = request; + } + /// /// Get the things! /// @@ -23,18 +36,17 @@ namespace Untappd.Net.Request public TResult Get (IUntappdCredentials credentials, string urlParameter, IDictionary bodyParameters = null) where TResult : UnAuthenticatedRequest,new() { - // throw new NotImplementedException(); var result = new TResult(); - var client = new RestClient(Constants.BaseRequestString); - var request = new RestRequest(result.EndPoint(urlParameter), Method.GET); - request.AddParameter("client_id", credentials.ClientId); - request.AddParameter("client_secret", credentials.ClientSecret); + Request.Resource = result.EndPoint(urlParameter); + Request.Method = Method.GET; + Request.AddParameter("client_id", credentials.ClientId); + Request.AddParameter("client_secret", credentials.ClientSecret); if (bodyParameters != null) foreach (var x in bodyParameters) { - request.AddParameter(x.Key, x.Value); + Request.AddParameter(x.Key, x.Value); } - var resp = client.Execute(request); + var resp = Client.Execute(Request); var jsonresult = JsonConvert.DeserializeObject(resp.Content); return jsonresult; diff --git a/src/Untappd.Net/Untappd.Net.csproj b/src/Untappd.Net/Untappd.Net.csproj index 6a77633..f3c45f8 100644 --- a/src/Untappd.Net/Untappd.Net.csproj +++ b/src/Untappd.Net/Untappd.Net.csproj @@ -51,6 +51,8 @@ + +