Home / Function/ TestMultipleKeyLookup() — fiber Function Reference

TestMultipleKeyLookup() — fiber Function Reference

Architecture documentation for the TestMultipleKeyLookup() function in keyauth_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  66afd75a_89d7_da3a_7ffd_084e62230e50["TestMultipleKeyLookup()"]
  71f55784_a001_0646_0ce7_7ad97067c49c["keyauth_test.go"]
  66afd75a_89d7_da3a_7ffd_084e62230e50 -->|defined in| 71f55784_a001_0646_0ce7_7ad97067c49c
  style 66afd75a_89d7_da3a_7ffd_084e62230e50 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

middleware/keyauth/keyauth_test.go lines 192–256

func TestMultipleKeyLookup(t *testing.T) {
	const (
		desc    = "auth with correct key"
		success = "Success!"
		scheme  = "Bearer"
	)

	// set up the fiber endpoint
	app := fiber.New()

	customExtractor := extractors.Chain(
		extractors.FromAuthHeader("Bearer"),
		extractors.FromHeader("key"),
		extractors.FromCookie("key"),
		extractors.FromQuery("key"),
	)

	authMiddleware := New(Config{
		Extractor: customExtractor,
		Validator: func(_ fiber.Ctx, key string) (bool, error) {
			if key == CorrectKey {
				return true, nil
			}
			return false, errors.New("invalid key")
		},
	})
	app.Use(authMiddleware)
	app.Get("/foo", func(c fiber.Ctx) error {
		return c.SendString(success)
	})

	// construct the test HTTP request
	var (
		req *http.Request
		err error
	)
	req, err = http.NewRequestWithContext(context.Background(), fiber.MethodGet, "/foo", http.NoBody)
	require.NoError(t, err)
	q := req.URL.Query()
	q.Add("key", CorrectKey)
	req.URL.RawQuery = q.Encode()

	res, err := app.Test(req, testConfig)

	require.NoError(t, err)

	// test the body of the request
	body, err := io.ReadAll(res.Body)
	require.Equal(t, 200, res.StatusCode, desc)
	// body
	require.NoError(t, err)
	require.Equal(t, success, string(body), desc)

	err = res.Body.Close()
	require.NoError(t, err)

	// construct a second request without proper key
	req, err = http.NewRequestWithContext(context.Background(), fiber.MethodGet, "/foo", http.NoBody)
	require.NoError(t, err)
	res, err = app.Test(req, testConfig)
	require.NoError(t, err)
	errBody, err := io.ReadAll(res.Body)
	require.NoError(t, err)
	require.Equal(t, ErrMissingOrMalformedAPIKey.Error(), string(errBody))
}

Domain

Subdomains

Frequently Asked Questions

What does TestMultipleKeyLookup() do?
TestMultipleKeyLookup() is a function in the fiber codebase, defined in middleware/keyauth/keyauth_test.go.
Where is TestMultipleKeyLookup() defined?
TestMultipleKeyLookup() is defined in middleware/keyauth/keyauth_test.go at line 192.

Analyze Your Own Codebase

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

Try Supermodel Free