refactor: rename namespace to FiscalFlow and upgrade to .NET 10

- Rename InvoiceMaster.* to FiscalFlow.* namespace
- Upgrade from .NET 8 to .NET 10
- Update all NuGet packages to latest versions
- Update C# language version to 14.0
This commit is contained in:
Invoice Master
2026-02-04 23:18:59 +01:00
parent 05ea67144f
commit ad6ce08e3e
214 changed files with 29692 additions and 1820 deletions

View File

@@ -1,97 +0,0 @@
using InvoiceMaster.Core.Entities;
using Xunit;
using FluentAssertions;
namespace InvoiceMaster.UnitTests.Domain;
public class InvoiceTests
{
[Fact]
public void Create_ShouldInitializeInvoiceWithCorrectValues()
{
var connectionId = Guid.NewGuid();
var invoice = Invoice.Create(
connectionId,
"fortnox",
"test.pdf",
"/path/to/file",
1024,
"hash123");
invoice.ConnectionId.Should().Be(connectionId);
invoice.Provider.Should().Be("fortnox");
invoice.OriginalFilename.Should().Be("test.pdf");
invoice.StoragePath.Should().Be("/path/to/file");
invoice.FileSize.Should().Be(1024);
invoice.FileHash.Should().Be("hash123");
invoice.Status.Should().Be(InvoiceStatus.Uploading);
}
[Fact]
public void SetExtractionData_ShouldUpdateExtractionFields()
{
var invoice = CreateTestInvoice();
var extractionData = "{\"test\": \"data\"}";
invoice.SetExtractionData(
extractionData,
0.95m,
"Test Supplier",
"556677-8899",
"INV-001",
new DateTime(2024, 1, 15),
new DateTime(2024, 2, 15),
1250.00m,
250.00m,
25,
"123456789",
"123-4567",
null,
"SEK");
invoice.ExtractionData.Should().Be(extractionData);
invoice.ExtractionConfidence.Should().Be(0.95m);
invoice.ExtractedSupplierName.Should().Be("Test Supplier");
invoice.ExtractedSupplierOrgNumber.Should().Be("556677-8899");
invoice.ExtractedInvoiceNumber.Should().Be("INV-001");
invoice.ExtractedAmountTotal.Should().Be(1250.00m);
invoice.ExtractedAmountVat.Should().Be(250.00m);
invoice.ExtractedVatRate.Should().Be(25);
invoice.ExtractedOcrNumber.Should().Be("123456789");
invoice.ExtractedBankgiro.Should().Be("123-4567");
invoice.ExtractedCurrency.Should().Be("SEK");
invoice.Status.Should().Be(InvoiceStatus.Preview);
}
[Fact]
public void SetStatus_Imported_ShouldSetProcessedAt()
{
var invoice = CreateTestInvoice();
invoice.SetStatus(InvoiceStatus.Imported);
invoice.Status.Should().Be(InvoiceStatus.Imported);
invoice.ProcessedAt.Should().NotBeNull();
}
[Fact]
public void SetError_ShouldSetErrorFieldsAndStatus()
{
var invoice = CreateTestInvoice();
invoice.SetError("INVALID_FILE", "File format not supported");
invoice.ErrorCode.Should().Be("INVALID_FILE");
invoice.ErrorMessage.Should().Be("File format not supported");
invoice.Status.Should().Be(InvoiceStatus.Failed);
}
private static Invoice CreateTestInvoice()
{
return Invoice.Create(
Guid.NewGuid(),
"fortnox",
"test.pdf",
"/path/to/file");
}
}

View File

@@ -1,30 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="xunit" Version="2.6.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.4">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Moq" Version="4.20.69" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\InvoiceMaster.Application\InvoiceMaster.Application.csproj" />
<ProjectReference Include="..\..\src\InvoiceMaster.Core\InvoiceMaster.Core.csproj" />
</ItemGroup>
</Project>

View File

@@ -1,138 +0,0 @@
using InvoiceMaster.Application.Services;
using InvoiceMaster.Core.Entities;
using InvoiceMaster.Core.Interfaces;
using Moq;
using Xunit;
using FluentAssertions;
namespace InvoiceMaster.UnitTests.Services;
public class AuthServiceTests
{
private readonly Mock<IRepository<User>> _userRepositoryMock;
private readonly Mock<IUnitOfWork> _unitOfWorkMock;
private readonly AuthService _authService;
public AuthServiceTests()
{
_userRepositoryMock = new Mock<IRepository<User>>();
_unitOfWorkMock = new Mock<IUnitOfWork>();
var configuration = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
.AddInMemoryCollection(new Dictionary<string, string>
{
["Jwt:SecretKey"] = "this-is-a-test-secret-key-that-is-32-chars-long",
["Jwt:Issuer"] = "TestIssuer",
["Jwt:Audience"] = "TestAudience",
["Jwt:AccessTokenExpirationMinutes"] = "15",
["Jwt:RefreshTokenExpirationDays"] = "7"
})
.Build();
_authService = new AuthService(
_userRepositoryMock.Object,
_unitOfWorkMock.Object,
configuration);
}
[Fact]
public async Task RegisterAsync_WithNewEmail_ShouldCreateUser()
{
var users = new List<User>();
_userRepositoryMock.Setup(x => x.GetAllAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(users);
_userRepositoryMock.Setup(x => x.AddAsync(It.IsAny<User>(), It.IsAny<CancellationToken>()))
.Callback<User, CancellationToken>((u, _) => users.Add(u))
.ReturnsAsync((User u, CancellationToken _) => u);
_unitOfWorkMock.Setup(x => x.SaveChangesAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(1);
var result = await _authService.RegisterAsync(
new Application.Commands.Auth.RegisterCommand(
"test@example.com",
"Password123!",
"Test User"));
result.Success.Should().BeTrue();
result.User.Should().NotBeNull();
result.User!.Email.Should().Be("test@example.com");
result.Tokens.Should().NotBeNull();
result.Tokens!.AccessToken.Should().NotBeNullOrEmpty();
result.Tokens.RefreshToken.Should().NotBeNullOrEmpty();
}
[Fact]
public async Task RegisterAsync_WithExistingEmail_ShouldReturnError()
{
var existingUser = new User
{
Email = "test@example.com",
HashedPassword = "hashed"
};
_userRepositoryMock.Setup(x => x.GetAllAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(new List<User> { existingUser });
var result = await _authService.RegisterAsync(
new Application.Commands.Auth.RegisterCommand(
"test@example.com",
"Password123!",
"Test User"));
result.Success.Should().BeFalse();
result.ErrorMessage.Should().Be("Email already registered");
}
[Fact]
public async Task LoginAsync_WithValidCredentials_ShouldReturnTokens()
{
var hashedPassword = ComputeHash("Password123!");
var user = new User
{
Id = Guid.NewGuid(),
Email = "test@example.com",
HashedPassword = hashedPassword,
IsActive = true
};
_userRepositoryMock.Setup(x => x.GetAllAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(new List<User> { user });
_unitOfWorkMock.Setup(x => x.SaveChangesAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(1);
var result = await _authService.LoginAsync(
new Application.Commands.Auth.LoginCommand(
"test@example.com",
"Password123!"));
result.Success.Should().BeTrue();
result.User.Should().NotBeNull();
result.Tokens.Should().NotBeNull();
}
[Fact]
public async Task LoginAsync_WithInvalidPassword_ShouldReturnError()
{
var user = new User
{
Email = "test@example.com",
HashedPassword = ComputeHash("CorrectPassword"),
IsActive = true
};
_userRepositoryMock.Setup(x => x.GetAllAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(new List<User> { user });
var result = await _authService.LoginAsync(
new Application.Commands.Auth.LoginCommand(
"test@example.com",
"WrongPassword"));
result.Success.Should().BeFalse();
result.ErrorMessage.Should().Be("Invalid email or password");
}
private static string ComputeHash(string password)
{
using var sha256 = System.Security.Cryptography.SHA256.Create();
var hashedBytes = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password));
return Convert.ToBase64String(hashedBytes);
}
}

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("InvoiceMaster.UnitTests")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+05ea67144f6a97e372ca4293ce2393e15a3f6bb7")]
[assembly: System.Reflection.AssemblyProductAttribute("InvoiceMaster.UnitTests")]
[assembly: System.Reflection.AssemblyTitleAttribute("InvoiceMaster.UnitTests")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@@ -1 +1 @@
1223dddf7216ddab048329fa70034587d349b759b5b033e38e6cd2d4edbd4866
c077d4836482878dfcee69c0e412646849a04e73aee8bbed7559e6bb4a662308

View File

@@ -8,7 +8,7 @@
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Application\\InvoiceMaster.Application.csproj",
"projectName": "InvoiceMaster.Application",
"projectName": "FiscalFlow.Application",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Application\\InvoiceMaster.Application.csproj",
"packagesPath": "C:\\Users\\yaoji\\.nuget\\packages\\",
"outputPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Application\\obj\\",
@@ -32,11 +32,7 @@
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Core\\InvoiceMaster.Core.csproj": {
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Core\\InvoiceMaster.Core.csproj"
}
}
"projectReferences": {}
}
},
"warningProperties": {
@@ -103,7 +99,7 @@
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Core\\InvoiceMaster.Core.csproj",
"projectName": "InvoiceMaster.Core",
"projectName": "FiscalFlow.Core",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Core\\InvoiceMaster.Core.csproj",
"packagesPath": "C:\\Users\\yaoji\\.nuget\\packages\\",
"outputPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\src\\InvoiceMaster.Core\\obj\\",

View File

@@ -1904,31 +1904,30 @@
"build/net6.0/xunit.runner.visualstudio.props": {}
}
},
"InvoiceMaster.Application/1.0.0": {
"FiscalFlow.Application/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"AutoMapper": "12.0.1",
"FluentValidation": "11.8.1",
"InvoiceMaster.Core": "1.0.0",
"MediatR": "12.2.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"compile": {
"bin/placeholder/InvoiceMaster.Application.dll": {}
"bin/placeholder/FiscalFlow.Application.dll": {}
},
"runtime": {
"bin/placeholder/InvoiceMaster.Application.dll": {}
"bin/placeholder/FiscalFlow.Application.dll": {}
}
},
"InvoiceMaster.Core/1.0.0": {
"FiscalFlow.Core/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"compile": {
"bin/placeholder/InvoiceMaster.Core.dll": {}
"bin/placeholder/FiscalFlow.Core.dll": {}
},
"runtime": {
"bin/placeholder/InvoiceMaster.Core.dll": {}
"bin/placeholder/FiscalFlow.Core.dll": {}
}
}
}
@@ -6098,12 +6097,12 @@
"xunit.runner.visualstudio.nuspec"
]
},
"InvoiceMaster.Application/1.0.0": {
"FiscalFlow.Application/1.0.0": {
"type": "project",
"path": "../../src/InvoiceMaster.Application/InvoiceMaster.Application.csproj",
"msbuildProject": "../../src/InvoiceMaster.Application/InvoiceMaster.Application.csproj"
},
"InvoiceMaster.Core/1.0.0": {
"FiscalFlow.Core/1.0.0": {
"type": "project",
"path": "../../src/InvoiceMaster.Core/InvoiceMaster.Core.csproj",
"msbuildProject": "../../src/InvoiceMaster.Core/InvoiceMaster.Core.csproj"
@@ -6111,9 +6110,9 @@
},
"projectFileDependencyGroups": {
"net8.0": [
"FiscalFlow.Application >= 1.0.0",
"FiscalFlow.Core >= 1.0.0",
"FluentAssertions >= 6.12.0",
"InvoiceMaster.Application >= 1.0.0",
"InvoiceMaster.Core >= 1.0.0",
"Microsoft.NET.Test.Sdk >= 17.8.0",
"Moq >= 4.20.69",
"StyleCop.Analyzers >= 1.2.0-beta.556",
@@ -6237,81 +6236,6 @@
}
},
"logs": [
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized)."
},
{
"code": "NU1900",
"level": "Error",

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "p0VrC0YuEQc=",
"dgSpecHash": "VYb4pZlXFp8=",
"success": false,
"projectFilePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"expectedPackageFiles": [
@@ -109,126 +109,6 @@
"C:\\Users\\yaoji\\.nuget\\packages\\xunit.runner.visualstudio\\2.5.4\\xunit.runner.visualstudio.2.5.4.nupkg.sha512"
],
"logs": [
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1301",
"level": "Error",
"message": "Unable to load the service index for source https://pkgs.dev.azure.com/billodev/2c2b8bbf-61f2-43f4-b4bb-2017cef20a2c/_packaging/BilloFeed/nuget/v3/index.json.\r\n Response status code does not indicate success: 401 (Unauthorized).",
"projectPath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"filePath": "C:\\Users\\yaoji\\git\\ColaCoder\\accounting-system\\backend\\tests\\InvoiceMaster.UnitTests\\InvoiceMaster.UnitTests.csproj",
"targetGraphs": []
},
{
"code": "NU1900",
"level": "Error",