-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpersisted_query_test.go
68 lines (58 loc) · 1.51 KB
/
persisted_query_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package apifu
import (
"context"
"crypto/sha256"
"encoding/hex"
"testing"
"github.com/ccbrown/api-fu/graphql"
"github.com/stretchr/testify/assert"
)
type persistedQueryMap map[string]string
func (m persistedQueryMap) GetPersistedQuery(ctx context.Context, hash []byte) string {
return m[string(hash)]
}
func (m persistedQueryMap) PersistQuery(ctx context.Context, query string, hash []byte) {
m[string(hash)] = query
}
func TestPersistedQueryExtension(t *testing.T) {
storage := persistedQueryMap{}
success := &graphql.Response{}
query := `{ __typename }`
queryHash := sha256.Sum256([]byte(query))
queryHashHex := hex.EncodeToString(queryHash[:])
execute := PersistedQueryExtension(storage, func(r *graphql.Request) *graphql.Response {
assert.Equal(t, query, r.Query)
return success
})
assert.Equal(t, &graphql.Response{
Errors: []*graphql.Error{
{
Message: "PersistedQueryNotFound",
},
},
}, execute(&graphql.Request{
Extensions: map[string]interface{}{
"persistedQuery": map[string]interface{}{
"version": 1,
"sha256Hash": queryHashHex,
},
},
}))
assert.Equal(t, success, execute(&graphql.Request{
Query: query,
Extensions: map[string]interface{}{
"persistedQuery": map[string]interface{}{
"version": 1,
"sha256Hash": queryHashHex,
},
},
}))
assert.Equal(t, success, execute(&graphql.Request{
Extensions: map[string]interface{}{
"persistedQuery": map[string]interface{}{
"version": 1,
"sha256Hash": queryHashHex,
},
},
}))
}