Skip to content

Commit

Permalink
Merge pull request #45 from MYOB-Technology/candidate
Browse files Browse the repository at this point in the history
Build Release
  • Loading branch information
sawilde committed Feb 29, 2016
2 parents 7a6efb7 + 6030814 commit 35bd22a
Show file tree
Hide file tree
Showing 52 changed files with 794 additions and 244 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ MYOB.API.SDK/**/obj/**/*
/MYOB.API.SDK/SDK/MYOB.API.SDK.snk
/*.nupkg
/MYOB-Setup.txt
/.sonarqube
4 changes: 2 additions & 2 deletions .nuget/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<package id="Microsoft.Bcl.Async" version="1.0.168" />
<package id="Microsoft.Bcl.Build" version="1.0.21" />
<package id="NUnit.Runners" version="2.6.4" />
<package id="OpenCover" version="4.6.166" />
<package id="ReportGenerator" version="2.1.8.0" />
<package id="OpenCover" version="4.6.519" />
<package id="ReportGenerator" version="2.4.2.0" />
<package id="xunit.runners" version="1.9.2" />
</packages>
2 changes: 1 addition & 1 deletion MYOB.API.SDK.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30723.0
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{54C69256-9C55-41DC-A383-6C00EA66DB39}"
ProjectSection(SolutionItems) = preProject
Expand Down
6 changes: 6 additions & 0 deletions MYOB.API.SDK/SDK.NET35/SDK.NET35.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@
<ItemGroup>
<Compile Include="..\SDK\ApiCommunicationException.cs" />
<Compile Include="..\SDK\ApiConfiguration.cs" />
<Compile Include="..\SDK\Contracts\Version2\Report\GST\NZGSTReport.cs">
<Link>Contracts\Version2\Report\GST\NZGSTReport.cs</Link>
</Compile>
<Compile Include="..\SDK\Properties\AssemblyInfoEx.cs">
<Link>Properties\AssemblyInfoEx.cs</Link>
</Compile>
Expand Down Expand Up @@ -1000,6 +1003,9 @@
<Compile Include="..\SDK\Services\Version2\ReadableService.cs">
<Link>Services\Version2\ReadableService.cs</Link>
</Compile>
<Compile Include="..\SDK\Services\Version2\Report\GST\NzgstReportService.cs">
<Link>Services\Version2\Report\GST\NzgstReportService.cs</Link>
</Compile>
<Compile Include="..\SDK\Services\Version2\Report\Payroll\EmployeePayrollAdviceService.cs">
<Link>Services\Version2\Report\Payroll\EmployeePayrollAdviceService.cs</Link>
</Compile>
Expand Down
9 changes: 8 additions & 1 deletion MYOB.API.SDK/SDK.NET40/SDK.NET40.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@
<ItemGroup>
<Compile Include="..\SDK\ApiCommunicationException.cs" />
<Compile Include="..\SDK\ApiConfiguration.cs" />
<Compile Include="..\SDK\Contracts\Version2\Report\GST\NZGSTReport.cs">
<Link>Contracts\Version2\Report\GST\NZGSTReport.cs</Link>
</Compile>
<Compile Include="..\SDK\Properties\AssemblyInfoEx.cs">
<Link>Properties\AssemblyInfoEx.cs</Link>
</Compile>
Expand Down Expand Up @@ -1023,6 +1026,9 @@
<Compile Include="..\SDK\Services\Version2\ReadableService.cs">
<Link>Services\Version2\ReadableService.cs</Link>
</Compile>
<Compile Include="..\SDK\Services\Version2\Report\GST\NzgstReportService.cs">
<Link>Services\Version2\Report\GST\NzgstReportService.cs</Link>
</Compile>
<Compile Include="..\SDK\Services\Version2\Report\Payroll\EmployeePayrollAdviceService.cs">
<Link>Services\Version2\Report\Payroll\EmployeePayrollAdviceService.cs</Link>
</Compile>
Expand Down Expand Up @@ -1102,6 +1108,7 @@
<None Include="..\SDK\MYOB.API.SDK.snk" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Import Project="$(SolutionDir)\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
Expand All @@ -1118,4 +1125,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>
6 changes: 6 additions & 0 deletions MYOB.API.SDK/SDK.NET45/SDK.NET45.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@
<ItemGroup>
<Compile Include="..\SDK\ApiCommunicationException.cs" />
<Compile Include="..\SDK\ApiConfiguration.cs" />
<Compile Include="..\SDK\Contracts\Version2\Report\GST\NZGSTReport.cs">
<Link>Contracts\Version2\Report\GST\NZGSTReport.cs</Link>
</Compile>
<Compile Include="..\SDK\Properties\AssemblyInfoEx.cs">
<Link>Properties\AssemblyInfoEx.cs</Link>
</Compile>
Expand Down Expand Up @@ -1005,6 +1008,9 @@
<Compile Include="..\SDK\Services\Version2\ReadableService.cs">
<Link>Services\Version2\ReadableService.cs</Link>
</Compile>
<Compile Include="..\SDK\Services\Version2\Report\GST\NzgstReportService.cs">
<Link>Services\Version2\Report\GST\NzgstReportService.cs</Link>
</Compile>
<Compile Include="..\SDK\Services\Version2\Report\Payroll\EmployeePayrollAdviceService.cs">
<Link>Services\Version2\Report\Payroll\EmployeePayrollAdviceService.cs</Link>
</Compile>
Expand Down
24 changes: 24 additions & 0 deletions MYOB.API.SDK/SDK.Test/COMSupportedTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using MYOB.AccountRight.SDK.Contracts.Version2.GeneralLedger;
using NUnit.Framework;

namespace SDK.Test
{
[TestFixture]
public class COMSupportedTests
{
[Test]
public void AssemblySupportsCOM()
{
var attribute = (ComVisibleAttribute)typeof(Account).Assembly.GetCustomAttributes(typeof(ComVisibleAttribute), true).FirstOrDefault();

Assert.NotNull(attribute);
Assert.IsTrue(attribute.Value);
}
}
}
38 changes: 38 additions & 0 deletions MYOB.API.SDK/SDK.Test/Communication/ApiRequestHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,44 @@ private static void AssertStandardHeaders(bool supplyCredentials, bool supplyOAu
Assert.IsNull(request.Headers["x-myobapi-cftoken"]);
}

[Test]
[TestCase(true, true)]
public void TestEmptyCredentials(bool supplyCredentials, bool supplyOAuth)
{
// arrange
var factory = new TestWebRequestFactory();
factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson());
var request = factory.Create(new Uri("http://localhost"));

var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"),
supplyCredentials ? new CompanyFileCredentials("", "") : null, supplyOAuth ? new OAuthTokens() : null);

// act
handler.Get<UserContract>(request, (code, response) => { }, (uri, exception) => Assert.Fail(exception.Message), null);

// assert
AssertEmptyCredentialsHeaders(supplyOAuth, request);

var version = typeof(ApiRequestHandler).Assembly.GetName().Version.ToString(3);
var userAgent = request.Headers[HttpRequestHeader.UserAgent];
Assert.IsTrue(userAgent.Contains(string.Format("MYOB-ARL-SDK/{0}", version)));
Assert.IsNull(request.Headers[HttpRequestHeader.IfNoneMatch]);
}

private static void AssertEmptyCredentialsHeaders(bool supplyOAuth, WebRequest request)
{
if (supplyOAuth)
Assert.IsTrue(request.Headers[HttpRequestHeader.Authorization].StartsWith("Bearer"));
else
Assert.IsNull(request.Headers[HttpRequestHeader.Authorization]);

Assert.IsTrue(request.Headers[HttpRequestHeader.AcceptEncoding].Split(new[] { ',' }).Contains("gzip"));

Assert.AreEqual("<<clientid>>", request.Headers["x-myobapi-key"]);
Assert.AreEqual("v2", request.Headers["x-myobapi-version"]);
Assert.IsNull(request.Headers["x-myobapi-cftoken"]);
}

[Test]
[TestCase(true, true)]
[TestCase(false, false)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization;
using System.Threading.Tasks;
using MYOB.AccountRight.SDK;
using MYOB.AccountRight.SDK.Communication;
Expand All @@ -24,7 +21,7 @@ public void MakeRequest(string uri, Action<HttpStatusCode, string, UserContract>
{
var request = _webRequestFactory.Create(new Uri(uri));

request.BeginGetResponse(HandleResponseCallback<RequestContext<string, UserContract>, string, UserContract>, new RequestContext<string, UserContract>() { Request = request, OnComplete = onSuccess, OnError = onError });
request.BeginGetResponse(HandleResponseCallback<RequestContext<UserContract>, UserContract>, new RequestContext<UserContract> { Request = request, OnComplete = onSuccess, OnError = onError });
}

async public Task<Tuple<HttpStatusCode, UserContract>> MakeRequestAsync(string uri)
Expand Down
6 changes: 3 additions & 3 deletions MYOB.API.SDK/SDK.Test/Helper/TestWebRequestFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

namespace SDK.Test.Helper
{
public class DefaultResponseTestWebRequestFactory : TestWebRequestFactory, IWebRequestFactory
public class DefaultResponseTestWebRequestFactory : TestWebRequestFactory
{
public readonly List<Uri> UnhandledUris = new List<Uri>();

public new WebRequest Create(Uri requestUri, string acceptEncoding = null)
public override WebRequest Create(Uri requestUri, string acceptEncoding = null)
{
var request = base.Create(requestUri, acceptEncoding);

Expand Down Expand Up @@ -99,7 +99,7 @@ private static WebResponse ReturnCompressedBody(Stream resultBody, HttpStatusCod
return response;
}

public WebRequest Create(Uri requestUri, string acceptEncoding = null)
public virtual WebRequest Create(Uri requestUri, string acceptEncoding = null)
{
var uri = requestUri.ToString().TrimEnd('/').ToLowerInvariant();

Expand Down
4 changes: 3 additions & 1 deletion MYOB.API.SDK/SDK.Test/SDK.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@
<ItemGroup>
<Compile Include="ApiCommunicationExceptionTests.cs" />
<Compile Include="ApiConfigurationTests.cs" />
<Compile Include="COMSupportedTests.cs" />
<Compile Include="Contracts\Version2\UserTests.cs" />
<Compile Include="MyobArlApiPact.cs" />
<Compile Include="Communication\ApiRequestHandlerTests.cs" />
Expand Down Expand Up @@ -128,6 +129,7 @@
<Compile Include="Services\AccountBudgetServiceTests.cs" />
<Compile Include="Services\EmployeeStandardPayServiceTests.cs" />
<Compile Include="Services\JobBudgetServiceTests.cs" />
<Compile Include="Services\NZGSTReportServiceTests.cs" />
<Compile Include="Services\ProfitLossDistributionServiceTests.cs" />
<Compile Include="Services\RoleServiceTests.cs" />
<Compile Include="Services\TimeBillingOrderServiceTests.cs" />
Expand Down Expand Up @@ -229,4 +231,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>
31 changes: 28 additions & 3 deletions MYOB.API.SDK/SDK.Test/Services/GetOnlyServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
using MYOB.AccountRight.SDK;
using MYOB.AccountRight.SDK.Communication;
using MYOB.AccountRight.SDK.Contracts;
using MYOB.AccountRight.SDK.Contracts.Version2;
using MYOB.AccountRight.SDK.Extensions;
using MYOB.AccountRight.SDK.Services;
using NSubstitute;
Expand Down Expand Up @@ -53,10 +52,21 @@ public void SetUp()
service.Get(cf, null, (code, files) => { received = files; }, (uri, exception) => Assert.Fail(exception.Message));
return received;
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Delegate",
(service, cf) =>
{
UserContract received = null;
service.Get(cf,"", null, (code, files) => { received = files; }, (uri, exception) => Assert.Fail(exception.Message));
return received;
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Sync",
(service, cf) => service.Get(cf, null)),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Sync",
(service, cf) => service.Get(cf, "", null)),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Async",
(service, cf) => service.GetAsync(cf, null).Result),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Async",
(service, cf) => service.GetAsync(cf, null).Result)
(service, cf) => service.GetAsync(cf,"", null).Result)
};

[Test]
Expand Down Expand Up @@ -88,16 +98,31 @@ public void GetCompanyUsingCompanyFileBaseUrl([ValueSource("_testGetOnlyActions"
{
return service.Get(cf, null, "987654321");
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Sync with params",
(service, cf) =>
{
return service.Get(cf, "", null, "987654321");
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Async",
(service, cf) =>
{
return service.GetAsync(cf, null, "987654321").Result;
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("Async with params",
(service, cf) =>
{
return service.GetAsync(cf,"", null, "987654321").Result;
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("AsyncCancel",
(service, cf) =>
{
return service.GetAsync(cf, null, CancellationToken.None, "987654321").Result;
}),
new Tuple<string, Func<TestGetOnlyService, CompanyFile, UserContract>>("AsyncWithQueryParametersCancel",
(service, cf) =>
{
return service.GetAsync(cf,"", null, CancellationToken.None, "987654321").Result;
}),
};

[Test]
Expand All @@ -116,6 +141,6 @@ public void Get_IfRequestIsMadeWithETag_IfNoneMatchHeaderIsAttachedToRequest([Va
// assert
Assert.AreEqual("987654321", request.Headers[HttpRequestHeader.IfNoneMatch]);
}

}
}
15 changes: 15 additions & 0 deletions MYOB.API.SDK/SDK.Test/Services/NZGSTReportServiceTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using MYOB.AccountRight.SDK.Services.Report.GST;
using NUnit.Framework;

namespace SDK.Test.Services
{
[TestFixture]
public class NZGSTReportServiceTests
{
[Test]
public void ServiceHasTheExpectedRoute()
{
Assert.AreEqual("Report/GST/NZGSTReport", new NZGSTReportService(null, null).Route);
}
}
}
3 changes: 1 addition & 2 deletions MYOB.API.SDK/SDK.Test/Services/PersonalServiceTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using MYOB.AccountRight.SDK.Services;
using MYOB.AccountRight.SDK.Services.Contact;
using MYOB.AccountRight.SDK.Services.Contact;
using NUnit.Framework;

namespace SDK.Test.Services
Expand Down
32 changes: 31 additions & 1 deletion MYOB.API.SDK/SDK.Test/Services/ServiceBaseTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public TestServiceBase(IApiConfiguration configuration, IWebRequestFactory webRe

public UserContract Get(Uri uri, string eTag=null)
{
return MakeApiGetRequestSync<UserContract>(uri, null, null, eTag);
return MakeApiGetRequestSync<UserContract>(uri, null, eTag);
}

public void Delete(Uri uri)
Expand Down Expand Up @@ -205,5 +205,35 @@ public void OperationCorrectlyHandlesWebExceptionErrors([ValueSource("_operation
// assert
Assert.AreEqual(apiUri, ex.URI);
}

public class TestWebRequestFactoryEx : TestWebRequestFactory
{
public override WebRequest Create(Uri requestUri, string acceptEncoding = null)
{
var request = base.Create(requestUri, acceptEncoding);
return request;
}
}

[Test]
public void ServiceBaseGenerates_WebRequestEntities_From_SharedWebRequestFactory()
{
// arrange
var uri = new Uri("http://www.google.com");
var factory = new TestWebRequestFactoryEx();
var user = new UserContract {Name = "Freddie"};
factory.RegisterResultForUri(uri.ToString(), user.ToJson()); // if our hook is working then we should get contracts from google and not a search page

WebRequestFactory.SetSharedWebRequestFactory(factory);

// act
var service = new TestServiceBase(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null, null);

// assert
var contract = service.Get(uri);
Assert.AreNotSame(user, contract);
Assert.AreEqual(user.Name, contract.Name);

}
}
}
4 changes: 2 additions & 2 deletions MYOB.API.SDK/SDK.Test/Services/TimesheetServicePacTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public void GetAsync_WhenIdAndCancellationTokenIsPassedIn_ReturnsEntity()
{"User-Agent", ApiRequestHelper.UserAgent},
{"x-myobapi-key", ""},
{"x-myobapi-version", "v2"},
{"x-myobapi-cftoken", Convert.ToBase64String(Encoding.UTF8.GetBytes(":"))},
{"x-myobapi-cftoken", Convert.ToBase64String(Encoding.UTF8.GetBytes("Administrator:"))},
},
Query = string.Format("StartDate={0}&EndDate={1}",
startDate.Value.Date.ToString("s"),
Expand All @@ -89,7 +89,7 @@ public void GetAsync_WhenIdAndCancellationTokenIsPassedIn_ReturnsEntity()


// act
var result = _service.GetAsync(_cf, _uid, startDate.Value, endDate.Value, new CompanyFileCredentials("", ""), new CancellationToken()).Result;
var result = _service.GetAsync(_cf, _uid, startDate.Value, endDate.Value, new CompanyFileCredentials("Administrator", ""), new CancellationToken()).Result;

// assert
Assert.NotNull(result);
Expand Down
Loading

0 comments on commit 35bd22a

Please sign in to comment.