mirror of
https://github.com/lukaszraczylo/graphql-monitoring-proxy.git
synced 2026-10-12 05:32:36 +00:00
improvements mid may 2025 (#24)
* General improvements and bug fixes. * Improve tests coverage. * fixup! Improve tests coverage. * Update README.md with latest changes. * Fix the uint32 * Resolve issue with race condition for logging. * fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * Fix the test of the rate limiter * Add default ratelimit.json file * Update dependencies. * Significant refactor. * fixup! Significant refactor. * fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025 * fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Merge remote-tracking branch 'origin/main' into improvements-mid-apr-2025
This commit is contained in:
+34
-33
@@ -7,6 +7,7 @@ import (
|
||||
"path/filepath"
|
||||
|
||||
libpack_logger "github.com/lukaszraczylo/graphql-monitoring-proxy/logging"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
@@ -32,8 +33,8 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
// Run the test with initial empty banned users file
|
||||
suite.Run("reload with empty file", func() {
|
||||
// Clear existing file if any
|
||||
os.Remove(cfg.Api.BannedUsersFile)
|
||||
os.Remove(fmt.Sprintf("%s.lock", cfg.Api.BannedUsersFile))
|
||||
_ = os.Remove(cfg.Api.BannedUsersFile)
|
||||
_ = os.Remove(fmt.Sprintf("%s.lock", cfg.Api.BannedUsersFile))
|
||||
|
||||
// Ensure banned users map is empty
|
||||
bannedUsersIDsMutex.Lock()
|
||||
@@ -46,7 +47,7 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
|
||||
// Verify file was created
|
||||
_, err := os.Stat(cfg.Api.BannedUsersFile)
|
||||
assert.NoError(err)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// Safely check the map
|
||||
bannedUsersIDsMutex.RLock()
|
||||
@@ -54,7 +55,7 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
bannedUsersIDsMutex.RUnlock()
|
||||
|
||||
// Verify map is still empty
|
||||
assert.Equal(0, mapSize)
|
||||
assert.Equal(suite.T(), 0, mapSize)
|
||||
})
|
||||
|
||||
// Run the test with a populated banned users file
|
||||
@@ -65,8 +66,8 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
"test-user-reload-2": "reason reload 2",
|
||||
}
|
||||
data, _ := json.Marshal(testData)
|
||||
err := os.WriteFile(cfg.Api.BannedUsersFile, data, 0644)
|
||||
assert.NoError(err)
|
||||
err := os.WriteFile(cfg.Api.BannedUsersFile, data, 0o644)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// Clear the banned users map
|
||||
bannedUsersIDsMutex.Lock()
|
||||
@@ -85,9 +86,9 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
bannedUsersIDsMutex.RUnlock()
|
||||
|
||||
// Verify banned users map was loaded
|
||||
assert.Equal(2, mapSize)
|
||||
assert.Equal("reason reload 1", value1)
|
||||
assert.Equal("reason reload 2", value2)
|
||||
assert.Equal(suite.T(), 2, mapSize)
|
||||
assert.Equal(suite.T(), "reason reload 1", value1)
|
||||
assert.Equal(suite.T(), "reason reload 2", value2)
|
||||
})
|
||||
|
||||
// Test updating banned users file while reloader is running
|
||||
@@ -97,8 +98,8 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
"test-user-initial": "initial reason",
|
||||
}
|
||||
data, _ := json.Marshal(initialData)
|
||||
err := os.WriteFile(cfg.Api.BannedUsersFile, data, 0644)
|
||||
assert.NoError(err)
|
||||
err := os.WriteFile(cfg.Api.BannedUsersFile, data, 0o644)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// Clear the banned users map
|
||||
bannedUsersIDsMutex.Lock()
|
||||
@@ -116,8 +117,8 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
bannedUsersIDsMutex.RUnlock()
|
||||
|
||||
// Verify initial data was loaded
|
||||
assert.Equal(1, mapSize)
|
||||
assert.Equal("initial reason", initialValue)
|
||||
assert.Equal(suite.T(), 1, mapSize)
|
||||
assert.Equal(suite.T(), "initial reason", initialValue)
|
||||
|
||||
// Update the file with new data
|
||||
updatedData := map[string]string{
|
||||
@@ -125,8 +126,8 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
"test-user-updated-2": "updated reason 2",
|
||||
}
|
||||
data, _ = json.Marshal(updatedData)
|
||||
err = os.WriteFile(cfg.Api.BannedUsersFile, data, 0644)
|
||||
assert.NoError(err)
|
||||
err = os.WriteFile(cfg.Api.BannedUsersFile, data, 0o644)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// Execute reloader again to load updated data
|
||||
go testPeriodicallyReloadBannedUsers()
|
||||
@@ -141,15 +142,15 @@ func (suite *Tests) Test_PeriodicallyReloadBannedUsers() {
|
||||
bannedUsersIDsMutex.RUnlock()
|
||||
|
||||
// Verify updated data was loaded
|
||||
assert.Equal(2, mapSize)
|
||||
assert.Equal("updated reason 1", value1)
|
||||
assert.Equal("updated reason 2", value2)
|
||||
assert.False(exists)
|
||||
assert.Equal(suite.T(), 2, mapSize)
|
||||
assert.Equal(suite.T(), "updated reason 1", value1)
|
||||
assert.Equal(suite.T(), "updated reason 2", value2)
|
||||
assert.False(suite.T(), exists)
|
||||
})
|
||||
|
||||
// Cleanup
|
||||
os.Remove(cfg.Api.BannedUsersFile)
|
||||
os.Remove(fmt.Sprintf("%s.lock", cfg.Api.BannedUsersFile))
|
||||
_ = os.Remove(cfg.Api.BannedUsersFile)
|
||||
_ = os.Remove(fmt.Sprintf("%s.lock", cfg.Api.BannedUsersFile))
|
||||
}
|
||||
|
||||
// This is a better approach instead of the ticker-based test
|
||||
@@ -166,10 +167,10 @@ func (suite *Tests) Test_LoadUnloadBannedUsers() {
|
||||
"user2": "reason2",
|
||||
}
|
||||
data, _ := json.Marshal(initialData)
|
||||
err := os.WriteFile(cfg.Api.BannedUsersFile, data, 0644)
|
||||
assert.NoError(err)
|
||||
defer os.Remove(cfg.Api.BannedUsersFile)
|
||||
defer os.Remove(fmt.Sprintf("%s.lock", cfg.Api.BannedUsersFile))
|
||||
err := os.WriteFile(cfg.Api.BannedUsersFile, data, 0o644)
|
||||
assert.NoError(suite.T(), err)
|
||||
defer func() { _ = os.Remove(cfg.Api.BannedUsersFile) }()
|
||||
defer func() { _ = os.Remove(fmt.Sprintf("%s.lock", cfg.Api.BannedUsersFile)) }()
|
||||
|
||||
// Test loading banned users
|
||||
suite.Run("load banned users", func() {
|
||||
@@ -188,9 +189,9 @@ func (suite *Tests) Test_LoadUnloadBannedUsers() {
|
||||
reason2 := bannedUsersIDs["user2"]
|
||||
bannedUsersIDsMutex.RUnlock()
|
||||
|
||||
assert.Equal(2, count)
|
||||
assert.Equal("reason1", reason1)
|
||||
assert.Equal("reason2", reason2)
|
||||
assert.Equal(suite.T(), 2, count)
|
||||
assert.Equal(suite.T(), "reason1", reason1)
|
||||
assert.Equal(suite.T(), "reason2", reason2)
|
||||
})
|
||||
|
||||
// Test updating banned users
|
||||
@@ -205,7 +206,7 @@ func (suite *Tests) Test_LoadUnloadBannedUsers() {
|
||||
|
||||
// Store the updated banned users
|
||||
err := storeBannedUsers()
|
||||
assert.NoError(err)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// Clear the banned users map
|
||||
bannedUsersIDsMutex.Lock()
|
||||
@@ -223,9 +224,9 @@ func (suite *Tests) Test_LoadUnloadBannedUsers() {
|
||||
_, user1Exists := bannedUsersIDs["user1"]
|
||||
bannedUsersIDsMutex.RUnlock()
|
||||
|
||||
assert.Equal(2, count)
|
||||
assert.Equal("reason3", reason3)
|
||||
assert.Equal("reason4", reason4)
|
||||
assert.False(user1Exists)
|
||||
assert.Equal(suite.T(), 2, count)
|
||||
assert.Equal(suite.T(), "reason3", reason3)
|
||||
assert.Equal(suite.T(), "reason4", reason4)
|
||||
assert.False(suite.T(), user1Exists)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user