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
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -355,4 +355,7 @@ App_Data/

# Modules
*/Stott.Optimizely.RobotsHandler/modules/**
*/OptimizelyTwelveTest/modules/**
*/OptimizelyTwelveTest/modules/**

# Settings
appsettings.Development.json
12 changes: 0 additions & 12 deletions Sample/OptimizelyTwelveTest/appsettings.Development.json

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public void Details_RetrievesDefaultModelWhenPresentedWithAnEmptyId()
public void Save_ReturnsConflictResultWhenConflictExists()
{
// Arrange
var formSubmitModel = new SaveLlmsModel();
var formSubmitModel = new SaveLlmsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveLlmsModel>())).Returns(true);

Expand All @@ -95,7 +95,7 @@ public void Save_ReturnsConflictResultWhenConflictExists()
public void Save_DoesNotSaveModelWhenConflictExists()
{
// Arrange
var formSubmitModel = new SaveLlmsModel();
var formSubmitModel = new SaveLlmsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveLlmsModel>())).Returns(true);

Expand All @@ -110,7 +110,7 @@ public void Save_DoesNotSaveModelWhenConflictExists()
public void Save_SavesModelWhenNoConflictExists()
{
// Arrange
var formSubmitModel = new SaveLlmsModel();
var formSubmitModel = new SaveLlmsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveLlmsModel>())).Returns(false);

Expand All @@ -125,7 +125,7 @@ public void Save_SavesModelWhenNoConflictExists()
public void Save_WhenDoesConflictExistsThrowsAnException_ThenAnInternalServerErrorIsReturned()
{
// Arrange
var formSubmitModel = new SaveLlmsModel();
var formSubmitModel = new SaveLlmsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveLlmsModel>())).Throws<Exception>();

Expand All @@ -141,7 +141,7 @@ public void Save_WhenDoesConflictExistsThrowsAnException_ThenAnInternalServerErr
public void Save_WhenSaveOnTheServiceThrowsAnException_ThenAnInternalServerErrorIsReturned()
{
// Arrange
var formSubmitModel = new SaveLlmsModel();
var formSubmitModel = new SaveLlmsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveLlmsModel>())).Returns(false);
_mockService.Setup(x => x.Save(It.IsAny<SaveLlmsModel>())).Throws<Exception>();
Expand All @@ -154,6 +154,36 @@ public void Save_WhenSaveOnTheServiceThrowsAnException_ThenAnInternalServerError
Assert.That(((ContentResult)result).StatusCode, Is.EqualTo(500));
}

[Test]
[TestCaseSource(typeof(CommonTestCases), nameof(CommonTestCases.EmptyStrings))]
public void Save_WhenAppIdIsMissing_ReturnsABadRequest(string appId)
{
// Arrange
var formSubmitModel = new SaveLlmsModel { AppId = appId };

// Act
var result = _controller.Save(formSubmitModel);

// Assert
Assert.That(result, Is.AssignableFrom<ContentResult>());
Assert.That(((ContentResult)result).StatusCode, Is.EqualTo(400));
}

[Test]
[TestCaseSource(typeof(CommonTestCases), nameof(CommonTestCases.EmptyStrings))]
public void Save_WhenAppIdIsMissing_DoesNotCheckForConflictsOrSave(string appId)
{
// Arrange
var formSubmitModel = new SaveLlmsModel { AppId = appId };

// Act
_controller.Save(formSubmitModel);

// Assert
_mockService.Verify(x => x.DoesConflictExists(It.IsAny<SaveLlmsModel>()), Times.Never);
_mockService.Verify(x => x.Save(It.IsAny<SaveLlmsModel>()), Times.Never);
}

[Test]
public void Delete_WhenGivenAnEmptyId_ReturnsABadRequest()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public void Details_RetrievesDefaultModelWhenPresentedWithAnEmptyId()
public void Save_ReturnsConflictResultWhenConflictExists()
{
// Arrange
var formSubmitModel = new SaveRobotsModel();
var formSubmitModel = new SaveRobotsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveRobotsModel>())).Returns(true);

Expand All @@ -95,7 +95,7 @@ public void Save_ReturnsConflictResultWhenConflictExists()
public void Save_DoesNotSaveModelWhenConflictExists()
{
// Arrange
var formSubmitModel = new SaveRobotsModel();
var formSubmitModel = new SaveRobotsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveRobotsModel>())).Returns(true);

Expand All @@ -110,7 +110,7 @@ public void Save_DoesNotSaveModelWhenConflictExists()
public void Save_SavesModelWhenNoConflictExists()
{
// Arrange
var formSubmitModel = new SaveRobotsModel();
var formSubmitModel = new SaveRobotsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveRobotsModel>())).Returns(false);

Expand All @@ -125,7 +125,7 @@ public void Save_SavesModelWhenNoConflictExists()
public void Save_WhenDoesConflictExistsThrowsAnException_ThenAnInternalServerErrorIsReturned()
{
// Arrange
var formSubmitModel = new SaveRobotsModel();
var formSubmitModel = new SaveRobotsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveRobotsModel>())).Throws<Exception>();

Expand All @@ -141,7 +141,7 @@ public void Save_WhenDoesConflictExistsThrowsAnException_ThenAnInternalServerErr
public void Save_WhenSaveOnTheServiceThrowsAnException_ThenAnInternalServerErrorIsReturned()
{
// Arrange
var formSubmitModel = new SaveRobotsModel();
var formSubmitModel = new SaveRobotsModel { AppId = "MyApp" };

_mockService.Setup(x => x.DoesConflictExists(It.IsAny<SaveRobotsModel>())).Returns(false);
_mockService.Setup(x => x.Save(It.IsAny<SaveRobotsModel>())).Throws<Exception>();
Expand All @@ -154,6 +154,36 @@ public void Save_WhenSaveOnTheServiceThrowsAnException_ThenAnInternalServerError
Assert.That(((ContentResult)result).StatusCode, Is.EqualTo(500));
}

[Test]
[TestCaseSource(typeof(CommonTestCases), nameof(CommonTestCases.EmptyStrings))]
public void Save_WhenAppIdIsMissing_ReturnsABadRequest(string appId)
{
// Arrange
var formSubmitModel = new SaveRobotsModel { AppId = appId };

// Act
var result = _controller.Save(formSubmitModel);

// Assert
Assert.That(result, Is.AssignableFrom<ContentResult>());
Assert.That(((ContentResult)result).StatusCode, Is.EqualTo(400));
}

[Test]
[TestCaseSource(typeof(CommonTestCases), nameof(CommonTestCases.EmptyStrings))]
public void Save_WhenAppIdIsMissing_DoesNotCheckForConflictsOrSave(string appId)
{
// Arrange
var formSubmitModel = new SaveRobotsModel { AppId = appId };

// Act
_controller.Save(formSubmitModel);

// Assert
_mockService.Verify(x => x.DoesConflictExists(It.IsAny<SaveRobotsModel>()), Times.Never);
_mockService.Verify(x => x.Save(It.IsAny<SaveRobotsModel>()), Times.Never);
}

[Test]
public void Delete_WhenGivenAnEmptyId_ReturnsABadRequest()
{
Expand Down
2 changes: 1 addition & 1 deletion src/Stott.Optimizely.RobotsHandler.Ui/src/AddSiteLlms.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ Optional details go here
<Modal.Title>Create LLMS Configuration</Modal.Title>
</Modal.Header>
<Modal.Body>
<div className='mb-3'>
<div className='mb-3'>
<label>Application</label>
<select className='form-control form-select' name='SpecificHost' onChange={handleAppSelection}>{renderAvailableApps()}</select>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Linq;
using System.Threading.Tasks;
using System.Threading.Tasks;

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
Expand All @@ -17,14 +16,7 @@ public sealed class ApplicationDefinitionController(IApplicationDefinitionServic
public async Task<IActionResult> Applications()
{
var apps = await appService.GetAllApplicationsAsync();
var allApps = apps.ToList();

allApps.Insert(0, new ApplicationViewModel
{
AppName = "All Applications",
AvailableHosts = ApplicationMapper.CreateHostSummaries("All Hosts")
});

return CreateSafeJsonResult(allApps);
return CreateSafeJsonResult(apps);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public ApplicationLlmsViewModel GetDefault(string? appId)

public void Save(SaveLlmsModel model)
{
if (Guid.Empty.Equals(model.AppId))
if (string.IsNullOrWhiteSpace(model.AppId))
{
throw new ArgumentException($"{nameof(model)}.{nameof(model.AppId)} must not be null or empty.", nameof(model));
}
Expand Down
10 changes: 10 additions & 0 deletions src/Stott.Optimizely.RobotsHandler/Llms/LlmsApiController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@ public IActionResult Save(SaveLlmsModel formSubmitModel)
{
try
{
if (string.IsNullOrWhiteSpace(formSubmitModel.AppId))
{
return new ContentResult
{
StatusCode = (int)HttpStatusCode.BadRequest,
Content = $"{nameof(formSubmitModel.AppId)} does not have a value.",
ContentType = "text/plain"
};
}

if (service.DoesConflictExists(formSubmitModel))
{
return new ContentResult
Expand Down
10 changes: 10 additions & 0 deletions src/Stott.Optimizely.RobotsHandler/Robots/RobotsApiController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@ public IActionResult Save(SaveRobotsModel formSubmitModel)
{
try
{
if (string.IsNullOrWhiteSpace(formSubmitModel.AppId))
{
return new ContentResult
{
StatusCode = (int)HttpStatusCode.BadRequest,
Content = $"{nameof(formSubmitModel.AppId)} does not have a value.",
ContentType = "text/plain"
};
}

if (service.DoesConflictExists(formSubmitModel))
{
return new ContentResult
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public SiteRobotsViewModel GetDefault(string? appId)

public void Save(SaveRobotsModel model)
{
if (Guid.Empty.Equals(model.AppId))
if (string.IsNullOrWhiteSpace(model.AppId))
{
throw new ArgumentException($"{nameof(model)}.{nameof(model.AppId)} must not be null or empty.", nameof(model));
}
Expand Down
Loading