Skip to content
Open
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
113 changes: 107 additions & 6 deletions backend/TestHub.Api.Tests/ApiKeyValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,120 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using TestHub.Api.Authentication;
using FluentAssertions;

namespace TestHub.Api.Tests
{
[TestFixture]
public class ApiKeyValidatorTest
{
[Test]
public void IsKeyValidTest()
public void GenerateApiKey_ShouldReturnNonEmptyString()
{
Assert.IsTrue(ApiKeyValidator.IsKeyValid("2b8e743efdefa277d6563e06f92c1574d8da3f82", "some_org"));
var apiKey = ApiKeyValidator.GenerateApiKey("TestOrg");

apiKey.Should().NotBeNullOrEmpty();
}

[Test]
public void GenerateApiKey_ShouldReturnConsistentKeyForSameOrg()
{
var apiKey1 = ApiKeyValidator.GenerateApiKey("TestOrg");
var apiKey2 = ApiKeyValidator.GenerateApiKey("TestOrg");

apiKey1.Should().Be(apiKey2);
}

[Test]
public void GenerateApiKey_ShouldReturnDifferentKeysForDifferentOrgs()
{
var apiKey1 = ApiKeyValidator.GenerateApiKey("OrgA");
var apiKey2 = ApiKeyValidator.GenerateApiKey("OrgB");

apiKey1.Should().NotBe(apiKey2);
}

[Test]
public void GenerateApiKey_ShouldBeCaseInsensitive()
{
var apiKey1 = ApiKeyValidator.GenerateApiKey("TestOrg");
var apiKey2 = ApiKeyValidator.GenerateApiKey("TESTORG");
var apiKey3 = ApiKeyValidator.GenerateApiKey("testorg");

apiKey1.Should().Be(apiKey2);
apiKey1.Should().Be(apiKey3);
}

[Test]
public void GenerateApiKey_ShouldReturnHexString()
{
var apiKey = ApiKeyValidator.GenerateApiKey("TestOrg");

apiKey.Should().MatchRegex("^[a-f0-9]+$");
}

[Test]
public void GenerateApiKey_ShouldReturnExpectedLength()
{
var apiKey = ApiKeyValidator.GenerateApiKey("TestOrg");

// SHA1 produces 20 bytes, which is 40 hex characters
apiKey.Should().HaveLength(40);
}

[Test]
public void IsKeyValid_ShouldReturnTrueForValidKey()
{
var org = "TestOrg";
var apiKey = ApiKeyValidator.GenerateApiKey(org);

var result = ApiKeyValidator.IsKeyValid(apiKey, org);

result.Should().BeTrue();
}

[Test]
public void IsKeyValid_ShouldReturnFalseForInvalidKey()
{
var org = "TestOrg";
var invalidKey = "invalidkey123";

var result = ApiKeyValidator.IsKeyValid(invalidKey, org);

result.Should().BeFalse();
}

[Test]
public void IsKeyValid_ShouldReturnFalseForMismatchedOrg()
{
var org1 = "OrgA";
var org2 = "OrgB";
var apiKey = ApiKeyValidator.GenerateApiKey(org1);

var result = ApiKeyValidator.IsKeyValid(apiKey, org2);

result.Should().BeFalse();
}

[Test]
public void IsKeyValid_ShouldBeCaseInsensitiveForOrg()
{
var apiKey = ApiKeyValidator.GenerateApiKey("TestOrg");

var result1 = ApiKeyValidator.IsKeyValid(apiKey, "TestOrg");
var result2 = ApiKeyValidator.IsKeyValid(apiKey, "TESTORG");
var result3 = ApiKeyValidator.IsKeyValid(apiKey, "testorg");

result1.Should().BeTrue();
result2.Should().BeTrue();
result3.Should().BeTrue();
}

[Test]
public void IsKeyValid_ShouldReturnFalseForEmptyKey()
{
var result = ApiKeyValidator.IsKeyValid("", "TestOrg");

result.Should().BeFalse();
}
}
}
128 changes: 0 additions & 128 deletions backend/TestsHubUploadEndpoint.Tests/JUnitReaderTests.cs

This file was deleted.

Loading
Loading