Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/createrelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,4 +127,8 @@ jobs:
dotnet pack "MessagingService.Client\MessagingService.Client.csproj" /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.Client.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet pack "MessagingService.EmailMessage.DomainEvents\MessagingService.EmailMessage.DomainEvents.csproj" /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.EmailMessage.DomainEvents.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet nuget push Nugets/MessagingService.EmailMessage.DomainEvents.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet pack "MessagingService.EmailMessage.DomainEvents\MessagingService.EmailMessage.DomainEvents.csproj" /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.EmailMessage.DomainEvents.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet pack "MessagingService.IntegrationTesting.Helpers\MessagingService.IntegrationTesting.Helpers.csproj" /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.IntegrationTesting.Helpers.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
4 changes: 4 additions & 0 deletions .github/workflows/pushtomaster.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ jobs:
dotnet nuget push Nugets/MessagingService.Client.${{ steps.next_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet pack "MessagingService.EmailMessage.DomainEvents\MessagingService.EmailMessage.DomainEvents.csproj" /p:PackageVersion=${{ steps.next_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.EmailMessage.DomainEvents.${{ steps.next_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet pack "MessagingService.SMSMessage.DomainEvents\MessagingService.SMSMessage.DomainEvents.csproj" /p:PackageVersion=${{ steps.next_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.SMSMessage.DomainEvents.${{ steps.next_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet pack "MessagingService.IntegrationTesting.Helpers\MessagingService.IntegrationTesting.Helpers.csproj" /p:PackageVersion=${{ steps.next_version.outputs.VERSION }} --output Nugets -c Release
dotnet nuget push Nugets/MessagingService.IntegrationTesting.Helpers.${{ steps.next_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}

- name: Publish Images to Docker Hub
run: |
Expand Down
2 changes: 1 addition & 1 deletion MessagingService.Client/MessagingService.Client.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="ClientProxyBase" Version="2023.6.1" />
<PackageReference Include="ClientProxyBase" Version="2023.11.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />
<PackageReference Include="Shared.EventStore" Version="2023.6.1" />
<PackageReference Include="Shared.EventStore" Version="2023.11.3" />
<PackageReference Include="Shouldly" Version="4.2.1" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Shared" Version="2023.6.1" />
<PackageReference Include="Shared.DomainDrivenDesign" Version="2023.6.1" />
<PackageReference Include="Shared" Version="2023.11.3" />
<PackageReference Include="Shared.DomainDrivenDesign" Version="2023.11.3" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

<ItemGroup>
<PackageReference Include="Grpc.Net.Client" Version="2.53.0" />
<PackageReference Include="Shared" Version="2023.6.1" />
<PackageReference Include="Shared.EventStore" Version="2023.6.1" />
<PackageReference Include="Shared" Version="2023.11.3" />
<PackageReference Include="Shared.EventStore" Version="2023.11.3" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Shared.IntegrationTesting" Version="2023.11.3" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MessagingService.Client\MessagingService.Client.csproj" PrivateAssets="All"/>
<ProjectReference Include="..\MessagingService.DataTransferObjects\MessagingService.DataTransferObjects.csproj" PrivateAssets="All"/>
</ItemGroup>

<Target Name="IncludeP2PAssets">
<ItemGroup>
<BuildOutputInPackage Include="$(OutputPath)MessagingService.DataTransferObjects.dll" />
<BuildOutputInPackage Include="$(OutputPath)MessagingService.Client.dll" />
</ItemGroup>
</Target>

</Project>
53 changes: 53 additions & 0 deletions MessagingService.IntegrationTesting.Helpers/MessagingSteps.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
namespace MessagingService.IntegrationTesting.Helpers
{
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MessagingService.Client;
using MessagingService.DataTransferObjects;
using Shared.IntegrationTesting;
using Shouldly;

public class MessagingSteps{
private readonly IMessagingServiceClient MessagingServiceClient;

public MessagingSteps(IMessagingServiceClient messagingServiceClient){
this.MessagingServiceClient = messagingServiceClient;
}

public async Task<List<(String, SendEmailResponse)>> GivenISendTheFollowingEmailMessages(String accessToken, List<SendEmailRequest> requests){
List<(String, SendEmailResponse)> results = new List<(String, SendEmailResponse)>();
foreach (SendEmailRequest sendEmailRequest in requests){
SendEmailResponse sendEmailResponse = await this.MessagingServiceClient.SendEmail(accessToken, sendEmailRequest, CancellationToken.None).ConfigureAwait(false);

sendEmailResponse.MessageId.ShouldNotBe(Guid.Empty);
results.Add((String.Join(",", sendEmailRequest.ToAddresses), sendEmailResponse));
}
return results;
}

public async Task GivenISendTheFollowingSMSMessages(String accessToken, List<SendSMSRequest> requests)
{
foreach (SendSMSRequest sendSmsRequest in requests)
{
SendSMSResponse sendEmailResponse = await this.MessagingServiceClient.SendSMS(accessToken, sendSmsRequest, CancellationToken.None).ConfigureAwait(false);

sendEmailResponse.MessageId.ShouldNotBe(Guid.Empty);
}
}

public async Task WhenIResendTheFollowingMessages(String accessToken, List<ResendEmailRequest> requests){
foreach (ResendEmailRequest resendEmailRequest in requests){
await Retry.For(async () => {
Should.NotThrow(async () => {
await this.MessagingServiceClient.ResendEmail(accessToken,
resendEmailRequest,
CancellationToken.None);
});
});
}
}

}
}
69 changes: 69 additions & 0 deletions MessagingService.IntegrationTesting.Helpers/SpecflowExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
namespace MessagingService.IntegrationTesting.Helpers;

using MessagingService.DataTransferObjects;
using Shared.IntegrationTesting;
using TechTalk.SpecFlow;

public static class SpecflowExtensions{
public static List<SendEmailRequest> ToSendEmailRequests(this TableRows tableRows){
List<SendEmailRequest> requests = new List<SendEmailRequest>();
foreach (TableRow tableRow in tableRows){
String fromAddress = SpecflowTableHelper.GetStringRowValue(tableRow, "FromAddress");
String toAddresses = SpecflowTableHelper.GetStringRowValue(tableRow, "ToAddresses");
String subject = SpecflowTableHelper.GetStringRowValue(tableRow, "Subject");
String body = SpecflowTableHelper.GetStringRowValue(tableRow, "Body");
Boolean isHtml = SpecflowTableHelper.GetBooleanValue(tableRow, "IsHtml");

SendEmailRequest request = new SendEmailRequest
{
Body = body,
ConnectionIdentifier = Guid.NewGuid(),
FromAddress = fromAddress,
IsHtml = isHtml,
Subject = subject,
ToAddresses = toAddresses.Split(",").ToList()
};
requests.Add(request);
}

return requests;
}

public static List<ResendEmailRequest> ToResendEmailRequests(this TableRows tableRows, Dictionary<String, SendEmailResponse> sendResponses)
{
List<ResendEmailRequest> requests = new List<ResendEmailRequest>();

foreach (TableRow tableRow in tableRows){
String toAddresses = SpecflowTableHelper.GetStringRowValue(tableRow, "ToAddresses");
SendEmailResponse sendEmailResponse = sendResponses[toAddresses];

ResendEmailRequest request = new ResendEmailRequest()
{
ConnectionIdentifier = Guid.NewGuid(),
MessageId = sendEmailResponse.MessageId
};
requests.Add(request);
}
return requests;
}

public static List<SendSMSRequest> ToSendSMSRequests(this TableRows tableRows){
List<SendSMSRequest> requests = new List<SendSMSRequest>();

foreach (TableRow tableRow in tableRows){
String sender = SpecflowTableHelper.GetStringRowValue(tableRow, "Sender");
String destination = SpecflowTableHelper.GetStringRowValue(tableRow, "Destination");
String message = SpecflowTableHelper.GetStringRowValue(tableRow, "Message");

SendSMSRequest request = new SendSMSRequest
{
ConnectionIdentifier = Guid.NewGuid(),
Sender = sender,
Destination = destination,
Message = message
};
requests.Add(request);
}
return requests;
}
}
6 changes: 3 additions & 3 deletions MessagingService.IntegrationTests/Common/DockerHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using Ductus.FluentDocker.Model.Builders;
using Ductus.FluentDocker.Services;
using Ductus.FluentDocker.Services.Extensions;
using global::Shared.IntegrationTesting;
using global::Shared.Logger;
using SecurityService.Client;

Expand Down Expand Up @@ -59,9 +60,8 @@ public DockerHelper()
/// Starts the containers for scenario run.
/// </summary>
/// <param name="scenarioName">Name of the scenario.</param>
public override async Task StartContainersForScenarioRun(String scenarioName)
{
await base.StartContainersForScenarioRun(scenarioName);
public override async Task StartContainersForScenarioRun(String scenarioName, DockerServices dockerServices){
await base.StartContainersForScenarioRun(scenarioName, dockerServices);

// Setup the base address resolvers
String SecurityServiceBaseAddressResolver(String api) => $"https://127.0.0.1:{this.SecurityServicePort}";
Expand Down
3 changes: 2 additions & 1 deletion MessagingService.IntegrationTests/Common/GenericSteps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ public async Task StartSystem()

this.TestingContext.Logger = logger;
this.TestingContext.Logger.LogInformation("About to Start Containers for Scenario Run");
await this.TestingContext.DockerHelper.StartContainersForScenarioRun(scenarioName).ConfigureAwait(false);
DockerServices dockerServices = DockerServices.MessagingService | DockerServices.EventStore | DockerServices.SecurityService;
await this.TestingContext.DockerHelper.StartContainersForScenarioRun(scenarioName, dockerServices).ConfigureAwait(false);
this.TestingContext.Logger.LogInformation("Containers for Scenario Run Started");
}

Expand Down
136 changes: 68 additions & 68 deletions MessagingService.IntegrationTests/Common/SpecflowTableHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,83 +5,83 @@

namespace MessagingService.IntegrationTests.Common
{
public static class SpecflowTableHelper
{
#region Methods
//public static class SpecflowTableHelper
//{
// #region Methods

public static Decimal GetDecimalValue(TableRow row,
String key)
{
String field = SpecflowTableHelper.GetStringRowValue(row, key);
// public static Decimal GetDecimalValue(TableRow row,
// String key)
// {
// String field = SpecflowTableHelper.GetStringRowValue(row, key);

return Decimal.TryParse(field, out Decimal value) ? value : -1;
}
// return Decimal.TryParse(field, out Decimal value) ? value : -1;
// }

public static Boolean GetBooleanValue(TableRow row,
String key)
{
String field = SpecflowTableHelper.GetStringRowValue(row, key);
// public static Boolean GetBooleanValue(TableRow row,
// String key)
// {
// String field = SpecflowTableHelper.GetStringRowValue(row, key);

return Boolean.TryParse(field, out Boolean value) && value;
}
// return Boolean.TryParse(field, out Boolean value) && value;
// }

public static Int32 GetIntValue(TableRow row,
String key)
{
String field = SpecflowTableHelper.GetStringRowValue(row, key);
// public static Int32 GetIntValue(TableRow row,
// String key)
// {
// String field = SpecflowTableHelper.GetStringRowValue(row, key);

return Int32.TryParse(field, out Int32 value) ? value : -1;
}
// return Int32.TryParse(field, out Int32 value) ? value : -1;
// }

public static Int16 GetShortValue(TableRow row,
String key)
{
String field = SpecflowTableHelper.GetStringRowValue(row, key);
// public static Int16 GetShortValue(TableRow row,
// String key)
// {
// String field = SpecflowTableHelper.GetStringRowValue(row, key);

if (Int16.TryParse(field, out Int16 value))
{
return value;
}
else
{
return -1;
}
}
// if (Int16.TryParse(field, out Int16 value))
// {
// return value;
// }
// else
// {
// return -1;
// }
// }

public static String GetStringRowValue(TableRow row,
String key)
{
return row.TryGetValue(key, out String value) ? value : "";
}
// public static String GetStringRowValue(TableRow row,
// String key)
// {
// return row.TryGetValue(key, out String value) ? value : "";
// }

/// <summary>
/// Gets the date for date string.
/// </summary>
/// <param name="dateString">The date string.</param>
/// <param name="today">The today.</param>
/// <returns></returns>
public static DateTime GetDateForDateString(String dateString,
DateTime today)
{
switch (dateString.ToUpper())
{
case "TODAY":
return today.Date;
case "YESTERDAY":
return today.AddDays(-1).Date;
case "LASTWEEK":
return today.AddDays(-7).Date;
case "LASTMONTH":
return today.AddMonths(-1).Date;
case "LASTYEAR":
return today.AddYears(-1).Date;
case "TOMORROW":
return today.AddDays(1).Date;
default:
return DateTime.Parse(dateString);
}
}
// /// <summary>
// /// Gets the date for date string.
// /// </summary>
// /// <param name="dateString">The date string.</param>
// /// <param name="today">The today.</param>
// /// <returns></returns>
// public static DateTime GetDateForDateString(String dateString,
// DateTime today)
// {
// switch (dateString.ToUpper())
// {
// case "TODAY":
// return today.Date;
// case "YESTERDAY":
// return today.AddDays(-1).Date;
// case "LASTWEEK":
// return today.AddDays(-7).Date;
// case "LASTMONTH":
// return today.AddMonths(-1).Date;
// case "LASTYEAR":
// return today.AddYears(-1).Date;
// case "TOMORROW":
// return today.AddDays(1).Date;
// default:
// return DateTime.Parse(dateString);
// }
// }

#endregion
}
// #endregion
//}
}
Loading