Home / Function/ Test_App_OptionsAsterisk() — fiber Function Reference

Test_App_OptionsAsterisk() — fiber Function Reference

Architecture documentation for the Test_App_OptionsAsterisk() function in app_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  5c7f3c86_fac0_9ee1_c6a6_14b26ccfc806["Test_App_OptionsAsterisk()"]
  e728fdd2_242f_706b_c1d2_041b3d6badb5["app_test.go"]
  5c7f3c86_fac0_9ee1_c6a6_14b26ccfc806 -->|defined in| e728fdd2_242f_706b_c1d2_041b3d6badb5
  style 5c7f3c86_fac0_9ee1_c6a6_14b26ccfc806 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

app_test.go lines 1542–1612

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

	app := New()
	app.Options("/resource", func(c Ctx) error {
		c.Set(HeaderAllow, "GET")
		c.Status(StatusNoContent)

		return nil
	})
	app.Options("*", func(c Ctx) error {
		c.Set(HeaderAllow, "GET, POST")
		c.Status(StatusOK)

		return nil
	})

	ln := fasthttputil.NewInmemoryListener()
	errCh := make(chan error, 1)
	serverReady := make(chan struct{})

	go func() {
		serverReady <- struct{}{}
		errCh <- app.Listener(ln)
	}()

	<-serverReady

	t.Cleanup(func() {
		require.NoError(t, app.Shutdown())
		require.NoError(t, <-errCh)
	})

	writeRequest := func(conn net.Conn, raw string) {
		t.Helper()
		_, err := conn.Write([]byte(raw))
		require.NoError(t, err)
	}

	conn, err := ln.Dial()
	require.NoError(t, err)

	writeRequest(conn, "OPTIONS * HTTP/1.1\r\nHost: example.com\r\n\r\n")

	resp, err := http.ReadResponse(bufio.NewReader(conn), &http.Request{Method: http.MethodOptions})
	require.NoError(t, err)
	require.Equal(t, StatusOK, resp.StatusCode)
	require.Equal(t, "GET, POST", resp.Header.Get(HeaderAllow))
	require.Zero(t, resp.ContentLength)
	body, err := io.ReadAll(resp.Body)
	require.NoError(t, err)
	require.Empty(t, body)
	require.NoError(t, resp.Body.Close())
	require.NoError(t, conn.Close())

	controlConn, err := ln.Dial()
	require.NoError(t, err)

	writeRequest(controlConn, "OPTIONS /resource HTTP/1.1\r\nHost: example.com\r\n\r\n")

	controlResp, err := http.ReadResponse(bufio.NewReader(controlConn), &http.Request{Method: http.MethodOptions})
	require.NoError(t, err)
	require.Equal(t, StatusNoContent, controlResp.StatusCode)
	require.Equal(t, "GET", controlResp.Header.Get(HeaderAllow))
	require.Zero(t, controlResp.ContentLength)
	controlBody, err := io.ReadAll(controlResp.Body)
	require.NoError(t, err)
	require.Empty(t, controlBody)
	require.NoError(t, controlResp.Body.Close())
	require.NoError(t, controlConn.Close())
}

Domain

Subdomains

Defined In

Frequently Asked Questions

What does Test_App_OptionsAsterisk() do?
Test_App_OptionsAsterisk() is a function in the fiber codebase, defined in app_test.go.
Where is Test_App_OptionsAsterisk() defined?
Test_App_OptionsAsterisk() is defined in app_test.go at line 1542.

Analyze Your Own Codebase

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

Try Supermodel Free