gh

package
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidVisibility = errors.New("invalid visibility")
)

Functions

This section is empty.

Types

type Account

type Account struct {
	// Account id
	ID int
	// Account handle (some_user).
	Login string
	// Account name (Some User).
	Name string
	// Account type (Organization or User).
	Type AccountType
}

Account is a GitHub account.

type AccountType

type AccountType string
const (
	AccountTypeOrg  AccountType = "Organization"
	AccountTypeUser AccountType = "User"
)

type Client

type Client interface {
	CurrentUser() (*User, error)
	CurrentRemote() (*Repository, error)
	CreateRepo(owner string, name string, access Visibility) (*Repository, error)
	GetAccount(name string) (*Account, error)
	GetRepo(name string) (*Repository, error)
}

type ClientMock

type ClientMock struct {
	// CreateRepoFunc mocks the CreateRepo method.
	CreateRepoFunc func(owner string, name string, access Visibility) (*Repository, error)

	// CurrentRemoteFunc mocks the CurrentRemote method.
	CurrentRemoteFunc func() (*Repository, error)

	// CurrentUserFunc mocks the CurrentUser method.
	CurrentUserFunc func() (*User, error)

	// GetAccountFunc mocks the GetAccount method.
	GetAccountFunc func(name string) (*Account, error)

	// GetRepoFunc mocks the GetRepo method.
	GetRepoFunc func(name string) (*Repository, error)
	// contains filtered or unexported fields
}

ClientMock is a mock implementation of Client.

func TestSomethingThatUsesClient(t *testing.T) {

	// make and configure a mocked Client
	mockedClient := &ClientMock{
		CreateRepoFunc: func(owner string, name string, access Visibility) (*Repository, error) {
			panic("mock out the CreateRepo method")
		},
		CurrentRemoteFunc: func() (*Repository, error) {
			panic("mock out the CurrentRemote method")
		},
		CurrentUserFunc: func() (*User, error) {
			panic("mock out the CurrentUser method")
		},
		GetAccountFunc: func(name string) (*Account, error) {
			panic("mock out the GetAccount method")
		},
		GetRepoFunc: func(name string) (*Repository, error) {
			panic("mock out the GetRepo method")
		},
	}

	// use mockedClient in code that requires Client
	// and then make assertions.

}

func (*ClientMock) CreateRepo

func (mock *ClientMock) CreateRepo(owner string, name string, access Visibility) (*Repository, error)

CreateRepo calls CreateRepoFunc.

func (*ClientMock) CreateRepoCalls

func (mock *ClientMock) CreateRepoCalls() []struct {
	Owner  string
	Name   string
	Access Visibility
}

CreateRepoCalls gets all the calls that were made to CreateRepo. Check the length with:

len(mockedClient.CreateRepoCalls())

func (*ClientMock) CurrentRemote

func (mock *ClientMock) CurrentRemote() (*Repository, error)

CurrentRemote calls CurrentRemoteFunc.

func (*ClientMock) CurrentRemoteCalls

func (mock *ClientMock) CurrentRemoteCalls() []struct {
}

CurrentRemoteCalls gets all the calls that were made to CurrentRemote. Check the length with:

len(mockedClient.CurrentRemoteCalls())

func (*ClientMock) CurrentUser

func (mock *ClientMock) CurrentUser() (*User, error)

CurrentUser calls CurrentUserFunc.

func (*ClientMock) CurrentUserCalls

func (mock *ClientMock) CurrentUserCalls() []struct {
}

CurrentUserCalls gets all the calls that were made to CurrentUser. Check the length with:

len(mockedClient.CurrentUserCalls())

func (*ClientMock) GetAccount

func (mock *ClientMock) GetAccount(name string) (*Account, error)

GetAccount calls GetAccountFunc.

func (*ClientMock) GetAccountCalls

func (mock *ClientMock) GetAccountCalls() []struct {
	Name string
}

GetAccountCalls gets all the calls that were made to GetAccount. Check the length with:

len(mockedClient.GetAccountCalls())

func (*ClientMock) GetRepo

func (mock *ClientMock) GetRepo(name string) (*Repository, error)

GetRepo calls GetRepoFunc.

func (*ClientMock) GetRepoCalls

func (mock *ClientMock) GetRepoCalls() []struct {
	Name string
}

GetRepoCalls gets all the calls that were made to GetRepo. Check the length with:

len(mockedClient.GetRepoCalls())

type ExecFunc

type ExecFunc func(args ...string) (bytes.Buffer, bytes.Buffer, error)

type Protocol

type Protocol string

Protocol is an enum representing the git URL protocol.

const (
	ProtocolHTTPS   Protocol = "https"
	ProtocolSSH     Protocol = "ssh"
	ProtocolGit     Protocol = "git"
	ProtocolUnknown Protocol = ""
)

type RESTClient

type RESTClient interface {
	Delete(path string, response interface{}) error
	Get(path string, response interface{}) error
	Patch(path string, body io.Reader, response interface{}) error
	Post(path string, body io.Reader, response interface{}) error
	Put(path string, body io.Reader, response interface{}) error
}

func NewRESTClient

func NewRESTClient() (RESTClient, error)

type RESTClientMock

type RESTClientMock struct {
	// DeleteFunc mocks the Delete method.
	DeleteFunc func(path string, response interface{}) error

	// GetFunc mocks the Get method.
	GetFunc func(path string, response interface{}) error

	// PatchFunc mocks the Patch method.
	PatchFunc func(path string, body io.Reader, response interface{}) error

	// PostFunc mocks the Post method.
	PostFunc func(path string, body io.Reader, response interface{}) error

	// PutFunc mocks the Put method.
	PutFunc func(path string, body io.Reader, response interface{}) error
	// contains filtered or unexported fields
}

RESTClientMock is a mock implementation of RESTClient.

func TestSomethingThatUsesRESTClient(t *testing.T) {

	// make and configure a mocked RESTClient
	mockedRESTClient := &RESTClientMock{
		DeleteFunc: func(path string, response interface{}) error {
			panic("mock out the Delete method")
		},
		GetFunc: func(path string, response interface{}) error {
			panic("mock out the Get method")
		},
		PatchFunc: func(path string, body io.Reader, response interface{}) error {
			panic("mock out the Patch method")
		},
		PostFunc: func(path string, body io.Reader, response interface{}) error {
			panic("mock out the Post method")
		},
		PutFunc: func(path string, body io.Reader, response interface{}) error {
			panic("mock out the Put method")
		},
	}

	// use mockedRESTClient in code that requires RESTClient
	// and then make assertions.

}

func (*RESTClientMock) Delete

func (mock *RESTClientMock) Delete(path string, response interface{}) error

Delete calls DeleteFunc.

func (*RESTClientMock) DeleteCalls

func (mock *RESTClientMock) DeleteCalls() []struct {
	Path     string
	Response interface{}
}

DeleteCalls gets all the calls that were made to Delete. Check the length with:

len(mockedRESTClient.DeleteCalls())

func (*RESTClientMock) Get

func (mock *RESTClientMock) Get(path string, response interface{}) error

Get calls GetFunc.

func (*RESTClientMock) GetCalls

func (mock *RESTClientMock) GetCalls() []struct {
	Path     string
	Response interface{}
}

GetCalls gets all the calls that were made to Get. Check the length with:

len(mockedRESTClient.GetCalls())

func (*RESTClientMock) Patch

func (mock *RESTClientMock) Patch(path string, body io.Reader, response interface{}) error

Patch calls PatchFunc.

func (*RESTClientMock) PatchCalls

func (mock *RESTClientMock) PatchCalls() []struct {
	Path     string
	Body     io.Reader
	Response interface{}
}

PatchCalls gets all the calls that were made to Patch. Check the length with:

len(mockedRESTClient.PatchCalls())

func (*RESTClientMock) Post

func (mock *RESTClientMock) Post(path string, body io.Reader, response interface{}) error

Post calls PostFunc.

func (*RESTClientMock) PostCalls

func (mock *RESTClientMock) PostCalls() []struct {
	Path     string
	Body     io.Reader
	Response interface{}
}

PostCalls gets all the calls that were made to Post. Check the length with:

len(mockedRESTClient.PostCalls())

func (*RESTClientMock) Put

func (mock *RESTClientMock) Put(path string, body io.Reader, response interface{}) error

Put calls PutFunc.

func (*RESTClientMock) PutCalls

func (mock *RESTClientMock) PutCalls() []struct {
	Path     string
	Body     io.Reader
	Response interface{}
}

PutCalls gets all the calls that were made to Put. Check the length with:

len(mockedRESTClient.PutCalls())

type Repository

type Repository struct {
	Name       string     `json:"name"`
	FullName   string     `json:"full_name"`
	Owner      *Account   `json:"owner"`
	Visibility Visibility `json:"visibility"`
	URL        string     `json:"html_url"`
	CloneURL   string     `json:"clone_url"`
	SSHURL     string     `json:"ssh_url"`
	GitURL     string     `json:"git_url"`
}

Repository is a GitHub repo.

func (*Repository) RemoteURL

func (r *Repository) RemoteURL(protocol Protocol) string

RemoteURL returns the URL for the given protocol.

type RepositoryRequest

type RepositoryRequest struct {
	Name       string     `json:"name"`
	Private    bool       `json:"private"`
	Visibility Visibility `json:"visibility"`
}

type SystemClient

type SystemClient struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(restClient RESTClient, exec ExecFunc) *SystemClient

func (*SystemClient) CreateRepo

func (c *SystemClient) CreateRepo(owner string, name string, vis Visibility) (*Repository, error)

func (*SystemClient) CurrentRemote

func (c *SystemClient) CurrentRemote() (*Repository, error)

func (*SystemClient) CurrentUser

func (c *SystemClient) CurrentUser() (*User, error)

func (*SystemClient) GetAccount

func (c *SystemClient) GetAccount(name string) (*Account, error)

func (*SystemClient) GetRepo

func (c *SystemClient) GetRepo(name string) (*Repository, error)

type User

type User struct {
	// User id
	ID int
	// User login (some_user).
	Login string
	// User name (Some User).
	Name string
	// The orgs the user is a member of.
	Orgs []*Account
	// The users' preferred git protocol.
	GitProtocol Protocol
}

User is a GitHub user.

type Visibility

type Visibility string

Visibility is an enum representing a repo' visibility.

const (
	VisibilityPublic   Visibility = "PUBLIC"
	VisibilityPrivate  Visibility = "PRIVATE"
	VisibilityInternal Visibility = "INTERNAL"
)

func (Visibility) Validate

func (v Visibility) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳