mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
package registries
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
	"net/http/httptest"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	portainer "github.com/portainer/portainer/api"
 | 
						|
	"github.com/portainer/portainer/api/http/security"
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
)
 | 
						|
 | 
						|
func ps(s string) *string {
 | 
						|
	return &s
 | 
						|
}
 | 
						|
 | 
						|
func pb(b bool) *bool {
 | 
						|
	return &b
 | 
						|
}
 | 
						|
 | 
						|
type TestBouncer struct{}
 | 
						|
 | 
						|
func (t TestBouncer) AdminAccess(h http.Handler) http.Handler {
 | 
						|
	return h
 | 
						|
}
 | 
						|
 | 
						|
func (t TestBouncer) AuthenticatedAccess(h http.Handler) http.Handler {
 | 
						|
	return h
 | 
						|
}
 | 
						|
 | 
						|
func (t TestBouncer) AuthorizedEndpointOperation(r *http.Request, endpoint *portainer.Endpoint) error {
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// TODO, no i don't know what this is actually intended to test either.
 | 
						|
func delete_TestHandler_registryUpdate(t *testing.T) {
 | 
						|
	payload := registryUpdatePayload{
 | 
						|
		Name:           ps("Updated test registry"),
 | 
						|
		URL:            ps("http://example.org/feed"),
 | 
						|
		BaseURL:        ps("http://example.org"),
 | 
						|
		Authentication: pb(true),
 | 
						|
		Username:       ps("username"),
 | 
						|
		Password:       ps("password"),
 | 
						|
	}
 | 
						|
	payloadBytes, err := json.Marshal(payload)
 | 
						|
	assert.NoError(t, err)
 | 
						|
	registry := portainer.Registry{Type: portainer.ProGetRegistry, ID: 5}
 | 
						|
	r := httptest.NewRequest(http.MethodPut, "/registries/5", bytes.NewReader(payloadBytes))
 | 
						|
	w := httptest.NewRecorder()
 | 
						|
 | 
						|
	restrictedContext := &security.RestrictedRequestContext{
 | 
						|
		IsAdmin: true,
 | 
						|
		UserID:  portainer.UserID(1),
 | 
						|
	}
 | 
						|
 | 
						|
	ctx := security.StoreRestrictedRequestContext(r, restrictedContext)
 | 
						|
	r = r.WithContext(ctx)
 | 
						|
 | 
						|
	updatedRegistry := portainer.Registry{}
 | 
						|
	handler := newHandler(nil)
 | 
						|
	handler.initRouter(TestBouncer{})
 | 
						|
	handler.DataStore = testDataStore{
 | 
						|
		registry: &testRegistryService{
 | 
						|
			getRegistry: func(_ portainer.RegistryID) (*portainer.Registry, error) {
 | 
						|
				return ®istry, nil
 | 
						|
			},
 | 
						|
			updateRegistry: func(ID portainer.RegistryID, r *portainer.Registry) error {
 | 
						|
				assert.Equal(t, ID, r.ID)
 | 
						|
				updatedRegistry = *r
 | 
						|
				return nil
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	handler.Router.ServeHTTP(w, r)
 | 
						|
	assert.Equal(t, http.StatusOK, w.Code)
 | 
						|
	// Registry type should remain intact
 | 
						|
	assert.Equal(t, registry.Type, updatedRegistry.Type)
 | 
						|
 | 
						|
	assert.Equal(t, *payload.Name, updatedRegistry.Name)
 | 
						|
	assert.Equal(t, *payload.URL, updatedRegistry.URL)
 | 
						|
	assert.Equal(t, *payload.BaseURL, updatedRegistry.BaseURL)
 | 
						|
	assert.Equal(t, *payload.Authentication, updatedRegistry.Authentication)
 | 
						|
	assert.Equal(t, *payload.Username, updatedRegistry.Username)
 | 
						|
	assert.Equal(t, *payload.Password, updatedRegistry.Password)
 | 
						|
 | 
						|
}
 |