...

Source file src/github.com/ory/x/fetcher/fetcher_test.go

Documentation: github.com/ory/x/fetcher

     1  package fetcher
     2  
     3  import (
     4  	"encoding/base64"
     5  	"fmt"
     6  	"io/ioutil"
     7  	"net/http"
     8  	"os"
     9  	"testing"
    10  
    11  	"github.com/gobuffalo/httptest"
    12  	"github.com/julienschmidt/httprouter"
    13  	"github.com/stretchr/testify/assert"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func TestFetcher(t *testing.T) {
    18  	router := httprouter.New()
    19  	router.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
    20  		_, _ = w.Write([]byte(`{"foo":"bar"}`))
    21  	})
    22  	ts := httptest.NewServer(router)
    23  	t.Cleanup(ts.Close)
    24  
    25  	file, err := ioutil.TempFile(os.TempDir(), "source.*.json")
    26  	require.NoError(t, err)
    27  
    28  	_, err = file.WriteString(`{"foo":"baz"}`)
    29  	require.NoError(t, err)
    30  	require.NoError(t, file.Close())
    31  
    32  	for fc, fetcher := range []*Fetcher{
    33  		NewFetcher(WithClient(ts.Client())),
    34  		NewFetcher(),
    35  	} {
    36  		for k, tc := range []struct {
    37  			source string
    38  			expect string
    39  		}{
    40  			{
    41  				source: "base64://" + base64.StdEncoding.EncodeToString([]byte(`{"foo":"zab"}`)),
    42  				expect: `{"foo":"zab"}`,
    43  			},
    44  			{
    45  				source: "file://" + file.Name(),
    46  				expect: `{"foo":"baz"}`,
    47  			},
    48  			{
    49  				source: ts.URL,
    50  				expect: `{"foo":"bar"}`,
    51  			},
    52  		} {
    53  			t.Run(fmt.Sprintf("config=%d/case=%d", fc, k), func(t *testing.T) {
    54  				actual, err := fetcher.Fetch(tc.source)
    55  				require.NoError(t, err)
    56  				assert.JSONEq(t, tc.expect, actual.String())
    57  			})
    58  		}
    59  	}
    60  }
    61  

View as plain text