public async Task InviteUser_ValidResponse_ValidUser()
{
/*** Arrange ***/
string responseString = "{ \"type\":\"invite\",\"id\":\"238632\",\"invited_to\":{ \"type\":\"enterprise\",\"id\":\"42500\",\"name\":\"Blosser Account\"},\"actionable_by\":{ \"type\":\"user\",\"id\":\"229667663\",\"name\":\"Lleyton Hewitt\",\"login\":\"[email protected]\"},\"invited_by\":{ \"type\":\"user\",\"id\":\"10523870\",\"name\":\"Ted Blosser\",\"login\":\"[email protected]\"},\"status\":\"pending\",\"created_at\":\"2014-12-23T12:55:53-08:00\",\"modified_at\":\"2014-12-23T12:55:53-08:00\"}";
IBoxRequest boxRequest = null;
_handler.Setup(h => h.ExecuteAsync<BoxUserInvite>(It.IsAny<IBoxRequest>()))
.Returns(Task.FromResult<IBoxResponse<BoxUserInvite>>(new BoxResponse<BoxUserInvite>()
{
Status = ResponseStatus.Success,
ContentString = responseString
}))
.Callback<IBoxRequest>(r => boxRequest = r);
/*** Act ***/
BoxUserInviteRequest userInviteRequest = new BoxUserInviteRequest()
{
Enterprise = new BoxRequestEntity()
{
Id = "42500"
},
ActionableBy = new BoxActionableByRequest()
{
Login = "[email protected]"
}
};
BoxUserInvite userInvite = await _usersManager.InviteUserToEnterpriseAsync(userInviteRequest);
/*** Assert ***/
// Request check
Assert.IsNotNull(boxRequest);
Assert.AreEqual(RequestMethod.Post, boxRequest.Method);
Assert.AreEqual(_InviteUri, boxRequest.AbsoluteUri.AbsoluteUri);
BoxUserInviteRequest payload = JsonConvert.DeserializeObject<BoxUserInviteRequest>(boxRequest.Payload);
Assert.AreEqual(userInviteRequest.Enterprise.Id, payload.Enterprise.Id);
Assert.AreEqual(userInviteRequest.ActionableBy.Login, payload.ActionableBy.Login);
//Response check
Assert.AreEqual("238632", userInvite.Id);
Assert.AreEqual("[email protected]", userInvite.ActionableBy.Login);
}