Skip to content

Commit

Permalink
workers: modernise all method signatures and conventions
Browse files Browse the repository at this point in the history
Updates all the available Workers endpoints to follow the new method signatures
and conventions for calling the API.
  • Loading branch information
jacobbednarz committed Nov 30, 2022
1 parent b22e823 commit 8b05a9d
Showing 1 changed file with 97 additions and 0 deletions.
97 changes: 97 additions & 0 deletions workers_bindings_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package cloudflare

import (
"context"
"fmt"
"io"
"net/http"
"testing"

"github.com/stretchr/testify/assert"
)

func TestListWorkerBindings(t *testing.T) {
setup()
defer teardown()

mux.HandleFunc("/accounts/"+testAccountID+"/workers/scripts/my-script/bindings", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
w.Header().Set("content-type", "application/json")
fmt.Fprintf(w, listBindingsResponseData)
})

mux.HandleFunc("/accounts/"+testAccountID+"/workers/scripts/my-script/bindings/MY_WASM/content", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
w.Header().Set("content-type", "application/wasm")
_, _ = w.Write([]byte("mock multi-script wasm"))
})

res, err := client.ListWorkerBindings(context.Background(), AccountIdentifier(testAccountID), ListWorkerBindingsParams{
ScriptName: "my-script",
})
assert.NoError(t, err)

assert.Equal(t, successResponse, res.Response)
assert.Equal(t, 8, len(res.BindingList))

assert.Equal(t, res.BindingList[0], WorkerBindingListItem{
Name: "MY_KV",
Binding: WorkerKvNamespaceBinding{
NamespaceID: "89f5f8fd93f94cb98473f6f421aa3b65",
},
})
assert.Equal(t, WorkerKvNamespaceBindingType, res.BindingList[0].Binding.Type())

assert.Equal(t, "MY_WASM", res.BindingList[1].Name)
wasmBinding := res.BindingList[1].Binding.(WorkerWebAssemblyBinding)
wasmModuleContent, err := io.ReadAll(wasmBinding.Module)
assert.NoError(t, err)
assert.Equal(t, []byte("mock multi-script wasm"), wasmModuleContent)
assert.Equal(t, WorkerWebAssemblyBindingType, res.BindingList[1].Binding.Type())

assert.Equal(t, res.BindingList[2], WorkerBindingListItem{
Name: "MY_PLAIN_TEXT",
Binding: WorkerPlainTextBinding{
Text: "text",
},
})
assert.Equal(t, WorkerPlainTextBindingType, res.BindingList[2].Binding.Type())

assert.Equal(t, res.BindingList[3], WorkerBindingListItem{
Name: "MY_SECRET_TEXT",
Binding: WorkerSecretTextBinding{},
})
assert.Equal(t, WorkerSecretTextBindingType, res.BindingList[3].Binding.Type())

environment := "MY_ENVIRONMENT"
assert.Equal(t, res.BindingList[4], WorkerBindingListItem{
Name: "MY_SERVICE_BINDING",
Binding: WorkerServiceBinding{
Service: "MY_SERVICE",
Environment: &environment,
},
})
assert.Equal(t, WorkerServiceBindingType, res.BindingList[4].Binding.Type())

assert.Equal(t, res.BindingList[5], WorkerBindingListItem{
Name: "MY_NEW_BINDING",
Binding: WorkerInheritBinding{},
})
assert.Equal(t, WorkerInheritBindingType, res.BindingList[5].Binding.Type())

assert.Equal(t, res.BindingList[6], WorkerBindingListItem{
Name: "MY_BUCKET",
Binding: WorkerR2BucketBinding{
BucketName: "bucket",
},
})
assert.Equal(t, WorkerR2BucketBindingType, res.BindingList[6].Binding.Type())

assert.Equal(t, res.BindingList[7], WorkerBindingListItem{
Name: "MY_DATASET",
Binding: WorkerAnalyticsEngineBinding{
Dataset: "my_dataset",
},
})
assert.Equal(t, WorkerAnalyticsEngineBindingType, res.BindingList[7].Binding.Type())
}

0 comments on commit 8b05a9d

Please sign in to comment.