blob: c4fa5295674ecd213359b302d12d32a08df289ac [file]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package admin
import (
"net/http"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/apache/pulsar-client-go/pulsaradmin/pkg/admin/auth"
"github.com/apache/pulsar-client-go/pulsaradmin/pkg/admin/config"
)
func TestPulsarClientEndpointEscapes(t *testing.T) {
client := pulsarClient{Client: nil, APIVersion: config.V2}
actual := client.endpoint("/myendpoint", "abc%? /def", "ghi")
expected := "/admin/v2/myendpoint/abc%25%3F%20%2Fdef/ghi"
assert.Equal(t, expected, actual)
}
func TestNew(t *testing.T) {
config := &config.Config{}
admin, err := New(config)
require.NoError(t, err)
require.NotNil(t, admin)
}
func TestNewWithAuthProvider(t *testing.T) {
config := &config.Config{}
tokenAuth, err := auth.NewAuthenticationToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."+
"eyJzdWIiOiJhZG1pbiIsImlhdCI6MTUxNjIzOTAyMn0.sVt6cyu3HKd89LcQvZVMNbqT0DTl3FvG9oYbj8hBDqU", nil)
require.NoError(t, err)
require.NotNil(t, tokenAuth)
admin, err := NewPulsarClientWithAuthProvider(config, tokenAuth)
require.NoError(t, err)
require.NotNil(t, admin)
}
type customAuthProvider struct {
transport http.RoundTripper
}
var _ auth.Provider = &customAuthProvider{}
func (c *customAuthProvider) RoundTrip(req *http.Request) (*http.Response, error) {
panic("implement me")
}
func (c *customAuthProvider) Transport() http.RoundTripper {
return c.transport
}
func (c *customAuthProvider) WithTransport(transport http.RoundTripper) {
c.transport = transport
}
func TestNewWithCustomAuthProviderWithTransport(t *testing.T) {
config := &config.Config{}
defaultTransport, err := auth.NewDefaultTransport(config)
require.NoError(t, err)
customAuthProvider := &customAuthProvider{
transport: defaultTransport,
}
admin, err := NewPulsarClientWithAuthProvider(config, customAuthProvider)
require.NoError(t, err)
require.NotNil(t, admin)
// Expected the customAuthProvider will not be overwritten.
require.Equal(t, customAuthProvider, admin.(*pulsarClient).Client.HTTPClient.Transport)
}
func TestNewWithTlsAllowInsecure(t *testing.T) {
config := &config.Config{
TLSAllowInsecureConnection: true,
}
admin, err := New(config)
require.NoError(t, err)
require.NotNil(t, admin)
pulsarClientS := admin.(*pulsarClient)
require.NotNil(t, pulsarClientS.Client.HTTPClient.Transport)
ap := pulsarClientS.Client.HTTPClient.Transport.(*auth.DefaultProvider)
tr := ap.Transport().(*http.Transport)
require.NotNil(t, tr)
require.NotNil(t, tr.TLSClientConfig)
require.True(t, tr.TLSClientConfig.InsecureSkipVerify)
}