github.com/hyperledger/aries-framework-go@v0.3.2/pkg/client/ld/client_test.go (about) 1 /* 2 Copyright SecureKey Technologies Inc. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package ld_test 8 9 import ( 10 "bytes" 11 "io/ioutil" 12 "net/http" 13 "testing" 14 15 "github.com/stretchr/testify/require" 16 17 "github.com/hyperledger/aries-framework-go/pkg/client/ld" 18 "github.com/hyperledger/aries-framework-go/pkg/doc/ldcontext/remote" 19 "github.com/hyperledger/aries-framework-go/pkg/internal/ldtestutil" 20 mockld "github.com/hyperledger/aries-framework-go/pkg/mock/ld" 21 mockprovider "github.com/hyperledger/aries-framework-go/pkg/mock/provider" 22 ) 23 24 const sampleContextsResponse = `{ 25 "documents": [ 26 { 27 "url": "https://example.com/context.jsonld", 28 "content": { 29 "@context": "remote" 30 } 31 } 32 ] 33 }` 34 35 func TestClient_AddContexts(t *testing.T) { 36 c := createLDClient(t) 37 38 err := c.AddContexts(ldtestutil.Contexts()) 39 require.NoError(t, err) 40 } 41 42 func TestClient_AddRemoteProvider(t *testing.T) { 43 httpClient := &mockHTTPClient{ 44 DoFunc: func(req *http.Request) (*http.Response, error) { 45 return &http.Response{ 46 StatusCode: http.StatusOK, 47 Body: ioutil.NopCloser(bytes.NewReader([]byte(sampleContextsResponse))), 48 }, nil 49 }, 50 } 51 c := createLDClient(t) 52 53 _, err := c.AddRemoteProvider("endpoint", remote.WithHTTPClient(httpClient)) 54 require.NoError(t, err) 55 } 56 57 func TestClient_RefreshRemoteProvider(t *testing.T) { 58 httpClient := &mockHTTPClient{ 59 DoFunc: func(req *http.Request) (*http.Response, error) { 60 return &http.Response{ 61 StatusCode: http.StatusOK, 62 Body: ioutil.NopCloser(bytes.NewReader([]byte(sampleContextsResponse))), 63 }, nil 64 }, 65 } 66 c := createLDClient(t) 67 68 err := c.RefreshRemoteProvider("id", remote.WithHTTPClient(httpClient)) 69 require.NoError(t, err) 70 } 71 72 func TestClient_DeleteRemoteProvider(t *testing.T) { 73 httpClient := &mockHTTPClient{ 74 DoFunc: func(req *http.Request) (*http.Response, error) { 75 return &http.Response{ 76 StatusCode: http.StatusOK, 77 Body: ioutil.NopCloser(bytes.NewReader([]byte(sampleContextsResponse))), 78 }, nil 79 }, 80 } 81 c := createLDClient(t) 82 83 err := c.DeleteRemoteProvider("id", remote.WithHTTPClient(httpClient)) 84 require.NoError(t, err) 85 } 86 87 func TestClient_GetAllRemoteProviders(t *testing.T) { 88 c := createLDClient(t) 89 90 _, err := c.GetAllRemoteProviders() 91 require.NoError(t, err) 92 } 93 94 func TestClient_RefreshAllRemoteProviders(t *testing.T) { 95 httpClient := createHTTPClient() 96 c := createLDClient(t) 97 98 err := c.RefreshAllRemoteProviders(remote.WithHTTPClient(httpClient)) 99 require.NoError(t, err) 100 } 101 102 func createLDClient(t *testing.T) *ld.Client { 103 t.Helper() 104 105 c := ld.NewClient(createMockProvider(), ld.WithLDService(&mockld.MockService{})) 106 require.NotNil(t, c) 107 108 return c 109 } 110 111 func createMockProvider() *mockprovider.Provider { 112 return &mockprovider.Provider{ 113 ContextStoreValue: mockld.NewMockContextStore(), 114 RemoteProviderStoreValue: mockld.NewMockRemoteProviderStore(), 115 } 116 } 117 118 func createHTTPClient() *mockHTTPClient { 119 return &mockHTTPClient{ 120 DoFunc: func(req *http.Request) (*http.Response, error) { 121 return &http.Response{ 122 StatusCode: http.StatusOK, 123 Body: ioutil.NopCloser(bytes.NewReader([]byte(sampleContextsResponse))), 124 }, nil 125 }, 126 } 127 } 128 129 type mockHTTPClient struct { 130 DoFunc func(req *http.Request) (*http.Response, error) 131 } 132 133 func (m *mockHTTPClient) Do(req *http.Request) (*http.Response, error) { 134 return m.DoFunc(req) 135 }