Home / File/ config_test.go — fiber Source File

config_test.go — fiber Source File

Architecture documentation for config_test.go, a go file in the fiber codebase. 1 imports, 0 dependents.

File go FiberCore Adapters 1 imports 4 functions

Entity Profile

Dependency Diagram

graph LR
  8aae4338_4e3e_efb4_a059_7f764e2fe50b["config_test.go"]
  642586d1_6654_1529_49fd_39746ef95a13["reflect"]
  8aae4338_4e3e_efb4_a059_7f764e2fe50b --> 642586d1_6654_1529_49fd_39746ef95a13
  style 8aae4338_4e3e_efb4_a059_7f764e2fe50b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

package keyauth

import (
	"reflect"
	"testing"

	"github.com/gofiber/fiber/v3"
	"github.com/gofiber/fiber/v3/extractors"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

// Test_KeyAuth_ConfigDefault_NoConfig tests the case where no config is provided.
func Test_KeyAuth_ConfigDefault_NoConfig(t *testing.T) {
	t.Parallel()
	// The New function will call configDefault with no arguments
	// which will panic because ConfigDefault.Validator is nil.
	assert.PanicsWithValue(t, "fiber: keyauth middleware requires a validator function", func() {
		New()
	}, "Calling New() without a validator should panic")
}

// Test_KeyAuth_ConfigDefault_PanicWithoutValidator tests that configDefault panics when Validator is nil.
func Test_KeyAuth_ConfigDefault_PanicWithoutValidator(t *testing.T) {
	t.Parallel()
	assert.PanicsWithValue(t, "fiber: keyauth middleware requires a validator function", func() {
		configDefault(Config{})
	}, "configDefault should panic if validator is not provided")
}

// Test_KeyAuth_ConfigDefault_WithValidator tests that default values are set when only a validator is provided.
func Test_KeyAuth_ConfigDefault_WithValidator(t *testing.T) {
	t.Parallel()
	validator := func(fiber.Ctx, string) (bool, error) { return true, nil }
	cfg := configDefault(Config{
		Validator: validator,
	})

	require.NotNil(t, cfg.Validator)
	assert.Equal(t, ConfigDefault.Realm, cfg.Realm)
	require.NotNil(t, cfg.SuccessHandler)
	require.NotNil(t, cfg.ErrorHandler)
	require.NotNil(t, cfg.Extractor.Extract)
}

// Test_KeyAuth_ConfigDefault_CustomConfig tests that custom values are preserved.
func Test_KeyAuth_ConfigDefault_CustomConfig(t *testing.T) {
	t.Parallel()
	nextFunc := func(_ fiber.Ctx) bool { return true }
	successHandler := func(c fiber.Ctx) error { return c.SendStatus(fiber.StatusOK) }
	errorHandler := func(c fiber.Ctx, _ error) error { return c.SendStatus(fiber.StatusForbidden) }
	validator := func(_ fiber.Ctx, _ string) (bool, error) { return true, nil }
	extractor := extractors.FromHeader("X-API-Key")

	cfg := configDefault(Config{
		Next:           nextFunc,
		SuccessHandler: successHandler,
		ErrorHandler:   errorHandler,
		Validator:      validator,
		Realm:          "API",
		Extractor:      extractor,
	})

	// Using reflect.ValueOf to compare function pointers
	assert.Equal(t, reflect.ValueOf(nextFunc).Pointer(), reflect.ValueOf(cfg.Next).Pointer())
	assert.Equal(t, reflect.ValueOf(successHandler).Pointer(), reflect.ValueOf(cfg.SuccessHandler).Pointer())
	assert.Equal(t, reflect.ValueOf(errorHandler).Pointer(), reflect.ValueOf(cfg.ErrorHandler).Pointer())
	assert.Equal(t, reflect.ValueOf(validator).Pointer(), reflect.ValueOf(cfg.Validator).Pointer())
	assert.Equal(t, reflect.ValueOf(extractor.Extract).Pointer(), reflect.ValueOf(cfg.Extractor.Extract).Pointer())

	assert.Equal(t, "API", cfg.Realm)
}

Domain

Subdomains

Dependencies

  • reflect

Frequently Asked Questions

What does config_test.go do?
config_test.go is a source file in the fiber codebase, written in go. It belongs to the FiberCore domain, Adapters subdomain.
What functions are defined in config_test.go?
config_test.go defines 4 function(s): Test_KeyAuth_ConfigDefault_CustomConfig, Test_KeyAuth_ConfigDefault_NoConfig, Test_KeyAuth_ConfigDefault_PanicWithoutValidator, Test_KeyAuth_ConfigDefault_WithValidator.
What does config_test.go depend on?
config_test.go imports 1 module(s): reflect.
Where is config_test.go in the architecture?
config_test.go is located at middleware/keyauth/config_test.go (domain: FiberCore, subdomain: Adapters, directory: middleware/keyauth).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free