This repository represents the Assessors API code base. This service comprises the changes to downgrade the Register of End-Point Assessor Organisations to become a consolidated list of End-Point Assessors that are registered/approved/recognised by several External Quality Assurance Providers (EQAP), including OFQUAL.
In order to run this solution locally you will need the following:
-
Install .NET 6.0 SDK
-
Install Visual Studio 2022 with these workloads:
- ASP.NET and web development
- Azure development
-
Install SQL Management Studio
-
Install Azure Storage Emulator (Make sure you are on atleast v5.3)
-
Install Azure Storage Explorer
-
Administrator Access
-
Optionally Install Specflow (used for integration tests)
- Clone this repository and open Visual Studio as an administrator.
- Either use Visual Studio's
Publish Database
tool to publish the database projectSFA.DAS.AssessorService.Database
to the database name{{database name}}
on{{local instance name}}
, or create a database manually named{{database name}}
on{{local instance name}}
and run each of the.sql
scripts in theSFA.DAS.AssessorService.Database
project. - json file - Get the
das-assessor-service
configuration json file from das-employer-config; which is a non-public repository. - Azure Table Storage Config - Add the following data to your Azure Table Storage Config:
RowKey: SFA.DAS.AssessorService_1.0
PartitionKey: LOCAL
Data:
{{The contents of the local config json file}}.
Make sure you update the SqlConnectionString
value to your local instance name, Initial Catalog
value to your database name, and Trusted_Connection
value to True.
- Follow the EPAO Data Setup Guide to populate local database test data.
The default JSON configuration was created to work with dotnet run:
-
Navigate to src/SFA.DAS.AssessorService.Web/
-
run
dotnet restore
-
run
dotnet run
-
Navigate to src/SFA.DAS.AssessorService.Application.Api/
-
run
dotnet restore
-
run
dotnet run
Note: Running the solution from Visual Studio is supported by bypassing the external authentication using the configuration variable "StubAuth" = true.
-
To run a local copy you will also need the following solutions locally:
-
And you may also require:
-
Please follow the Walkthrough which is a non-public wiki to create an account and setup local test data.
This codebase includes unit tests and integration tests. These are all in seperate projects aptly named after the project they cover.
There are several unit test projects in the solution built using C#, NUnit, Moq, FluentAssertions, .NET and AutoFixture.
SFA.DAS.AssessorService.Application.Api.External.UnitTests
SFA.DAS.AssessorService.Application.Api.UnitTests
SFA.DAS.AssessorService.Application.UnitTests
SFA.DAS.AssessorService.Data.UnitTests
SFA.DAS.AssessorService.Domain.UnitTests
SFA.DAS.AssessorService.Web.UnitTests
There are two integration test projects:
SFA.DAS.AssessorService.Application.Api.IntegrationTests
SFA.DAS.AssessorService.Data.IntegrationTests
Specflow is currently used for integration testing the internal API. It is configured to run using the NUnit Test runner. Hence, it requires:
- To be run using the NUnit Test Runner.
- The
SFA.DAS.AssessorService.Application.Api
project to already be running. - The BaseAddress value in the app.config to be set to the base address of the running
SFA.DAS.AssessorService.Application.Api
project.
SonarCloud analysis can be performed using a docker container which can be built from the included dockerfile.
Docker must be running Windows containers in this instance
An example of the docker run
command to analyse the code base can be found below.
For this docker container to be successfully created you will need:
- docker running Windows containers
- a user on
SonarCloud.io
with permission to run analysis - a
SonarQube.Analysis.xml
file in the root of the git repository.
This file takes the format:
<SonarQubeAnalysisProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sonarsource.com/msbuild/integration/2015/1">
<Property Name="sonar.host.url">https://sonarcloud.io</Property>
<Property Name="sonar.login">[Your SonarCloud user token]</Property>
</SonarQubeAnalysisProperties>
docker run [OPTIONS] IMAGE COMMAND
docker run --rm -v c:/projects/das-assessor-service:c:/projects/das-assessor-service -w c:/projects/das-assessor-service 3d9151a444b2 powershell -F c:/projects/das-assessor-service/sonarcloud/analyse.ps1
Option | Description |
---|---|
--rm | Remove any existing containers for this image |
-v | Bind the current directory of the host to the given directory in the container ($PWD may be different on your platform). This should be the folder where the code to be analysed is |
-w | Set the working directory |
Execute the analyse.ps1
PowerShell script
If you get issues with localhost certificate validation when accessing the local login service (e.g. "AuthenticationException: The remote certificate is invalid according to the validation procedure") then run the following command from the login service directory to install the local dev certificates:
dotnet dev-certs https --trust
Confirm the certificate install in the dialog that appears.
If you get issues with the target framework when building (e.g. it is targeting .net core 3 instead of 2.2.) then add a global.json
file in each of the projects being run with the required target framework specified as follows:
{
"sdk": {
"version": "2.2.207"
}
}
To see the installed SDK versions run the following command:
dotnet --info