Home / Function/ Test_Extractor_Chain_MixedScenarios() — fiber Function Reference

Test_Extractor_Chain_MixedScenarios() — fiber Function Reference

Architecture documentation for the Test_Extractor_Chain_MixedScenarios() function in extractors_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  cc0babdb_183e_faa9_177c_6c2d514349b4["Test_Extractor_Chain_MixedScenarios()"]
  cf5e296e_8db5_6f84_b05a_9c0cac6f83e7["extractors_test.go"]
  cc0babdb_183e_faa9_177c_6c2d514349b4 -->|defined in| cf5e296e_8db5_6f84_b05a_9c0cac6f83e7
  style cc0babdb_183e_faa9_177c_6c2d514349b4 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

extractors/extractors_test.go lines 747–814

func Test_Extractor_Chain_MixedScenarios(t *testing.T) {
	t.Parallel()

	// Define reusable extractors
	failingExtractor := Extractor{
		Extract: func(_ fiber.Ctx) (string, error) {
			return "", ErrNotFound
		},
		Key:    "fail",
		Source: SourceCustom,
	}

	errorExtractor := Extractor{
		Extract: func(_ fiber.Ctx) (string, error) {
			return "", fiber.NewError(fiber.StatusBadRequest, "Bad request")
		},
		Key:    "error",
		Source: SourceCustom,
	}

	successExtractor := Extractor{
		Extract: func(_ fiber.Ctx) (string, error) {
			return "success", nil
		},
		Key:    "success",
		Source: SourceCustom,
	}

	t.Run("error_then_success", func(t *testing.T) {
		t.Parallel()

		app := fiber.New()
		ctx := app.AcquireCtx(&fasthttp.RequestCtx{})
		t.Cleanup(func() { app.ReleaseCtx(ctx) })

		chain := Chain(errorExtractor, successExtractor)
		token, err := chain.Extract(ctx)
		require.NoError(t, err)
		require.Equal(t, "success", token)
	})

	t.Run("fail_then_error_then_success", func(t *testing.T) {
		t.Parallel()

		app := fiber.New()
		ctx := app.AcquireCtx(&fasthttp.RequestCtx{})
		t.Cleanup(func() { app.ReleaseCtx(ctx) })

		chain := Chain(failingExtractor, errorExtractor, successExtractor)
		token, err := chain.Extract(ctx)
		require.NoError(t, err)
		require.Equal(t, "success", token)
	})

	t.Run("fail_then_error", func(t *testing.T) {
		t.Parallel()

		app := fiber.New()
		ctx := app.AcquireCtx(&fasthttp.RequestCtx{})
		t.Cleanup(func() { app.ReleaseCtx(ctx) })

		chain := Chain(failingExtractor, errorExtractor)
		token, err := chain.Extract(ctx)
		require.Empty(t, token)
		require.Error(t, err)
		require.Contains(t, err.Error(), "Bad request")
	})
}

Domain

Subdomains

Frequently Asked Questions

What does Test_Extractor_Chain_MixedScenarios() do?
Test_Extractor_Chain_MixedScenarios() is a function in the fiber codebase, defined in extractors/extractors_test.go.
Where is Test_Extractor_Chain_MixedScenarios() defined?
Test_Extractor_Chain_MixedScenarios() is defined in extractors/extractors_test.go at line 747.

Analyze Your Own Codebase

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

Try Supermodel Free