Skip to content

Commit

Permalink
Merge 372c08e into d010392
Browse files Browse the repository at this point in the history
  • Loading branch information
andreloureiro88 committed Jan 13, 2022
2 parents d010392 + 372c08e commit 42d473b
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 3 deletions.
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Changelog

## master
## master/develop

**Features:**

- [#56](https://github.com/castle/castle-dotnet/pull/56) Support for Log action

## 1.6.0 (2022-01-13)

Expand Down
20 changes: 20 additions & 0 deletions src/Castle.Sdk/Actions/Log.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;
using System.Threading.Tasks;
using Castle.Config;
using Castle.Infrastructure;
using Castle.Infrastructure.Exceptions;
using Castle.Messages;
using Castle.Messages.Responses;

namespace Castle.Actions
{
internal static class Log
{
public static async Task<VoidResponse> Execute(
Func<Task<VoidResponse>> send,
CastleConfiguration configuration)
{
return await send();
}
}
}
31 changes: 31 additions & 0 deletions src/Castle.Sdk/CastleClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ public async Task Track(ActionRequest request)
await SendTrackRequest(jsonRequest);
}

#region filter

public JObject BuildFilterRequest(ActionRequest request)
{
var prepared = (request ?? new ActionRequest()).PrepareApiCopy(_configuration.AllowList, _configuration.DenyList);
Expand All @@ -91,7 +93,10 @@ public async Task<RiskResponse> Filter(ActionRequest request)

return await SendFilterRequest(jsonRequest);
}
#endregion


#region risk
public async Task<RiskResponse> Risk(ActionRequest request)
{
var jsonRequest = BuildRiskRequest(request);
Expand All @@ -113,6 +118,32 @@ public async Task<RiskResponse> SendRiskRequest(JObject request)
_configuration, _logger));
}

#endregion

#region log

public JObject BuildLogRequest(ActionRequest request)
{
var prepared = (request ?? new ActionRequest()).PrepareApiCopy(_configuration.AllowList, _configuration.DenyList);
return JsonForCastle.FromObject(prepared);
}

public async Task SendLogRequest(JObject request)
{
await TryRequest(() => Actions.Log.Execute(
() => _messageSender.Post<VoidResponse>("/v1/log", request),
_configuration));
}

public async Task Log(ActionRequest request)
{
var jsonRequest = BuildLogRequest(request);

await SendLogRequest(jsonRequest);
}

#endregion


/// <exception cref="ArgumentException">Thrown when <paramref name="userId"/> is null or empty</exception>>
public async Task<DeviceList> GetDevicesForUser(string userId, string clientId = null)
Expand Down
3 changes: 1 addition & 2 deletions src/Castle.Sdk/Events.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ public static class Events
public const string ChallengeRequested = "$challenge.requested";
public const string ChallengeSucceeded = "$challenge.succeeded";
public const string ChallengeFailed = "$challenge.failed";

public const string Challenge = "$challenge";
public const string ProfileUpdate = "$profile_update";

public const string PasswordResetRequest = "$password_reset_request";
}
}
2 changes: 2 additions & 0 deletions src/Castle.Sdk/Messages/Requests/ActionRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public class ActionRequest

public DateTime? Timestamp { get; set; }

public DateTime? CreatedAt { get; set; }

public string DeviceToken { get; set; }

public string RequestToken { get; set; }
Expand Down
25 changes: 25 additions & 0 deletions src/Tests/Actions/When_sending_log.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Threading.Tasks;
using Castle.Actions;
using Castle.Config;
using Castle.Messages.Responses;
using FluentAssertions;
using Tests.SetUp;
using Xunit;

namespace Tests
{
public class When_sending_log
{
[Theory, AutoFakeData]
public async Task Should_return_response_if_successful(
CastleConfiguration configuration)
{
var response = new VoidResponse();
Task<VoidResponse> Send() => Task.FromResult(response);

var result = await Log.Execute(Send, configuration);

result.Should().Be(response);
}
}
}
14 changes: 14 additions & 0 deletions src/Tests/When_calling_client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,20 @@ public void Should_not_throw_exception_if_calling_track_with_null_request(Castle
act.Should().NotThrow();
}

[Theory, AutoFakeData(typeof(CastleConfigurationNoTrackCustomization))]
public void Should_log(ActionRequest request, CastleClient sut)
{
Func<Task> act = async () => await sut.Log(request);
act.Should().NotThrow();
}

[Theory, AutoFakeData(typeof(CastleConfigurationNoTrackCustomization))]
public void Should_not_throw_exception_if_calling_log_with_null_request(CastleClient sut)
{
Func<Task> act = async () => await sut.Log(null);
act.Should().NotThrow();
}

[Theory, AutoFakeData(typeof(CastleConfigurationNoTrackCustomization))]
public void Should_get_user_devices(string userId, CastleClient sut)
{
Expand Down

0 comments on commit 42d473b

Please sign in to comment.