github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/api/fakes/fake_domain_repo.go (about)

     1  package fakes
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/errors"
     5  	"github.com/cloudfoundry/cli/cf/models"
     6  )
     7  
     8  type FakeDomainRepository struct {
     9  	ListDomainsForOrgGuid        string
    10  	ListDomainsForOrgDomains     []models.DomainFields
    11  	ListDomainsForOrgApiResponse error
    12  
    13  	FindByNameInOrgName        string
    14  	FindByNameInOrgGuid        string
    15  	FindByNameInOrgDomain      []models.DomainFields
    16  	FindByNameInOrgApiResponse error
    17  
    18  	FindSharedByNameName     string
    19  	FindSharedByNameDomain   models.DomainFields
    20  	FindSharedByNameNotFound bool
    21  	FindSharedByNameErr      bool
    22  
    23  	FindPrivateByNameName     string
    24  	FindPrivateByNameDomain   models.DomainFields
    25  	FindPrivateByNameNotFound bool
    26  	FindPrivateByNameErr      bool
    27  
    28  	CreateDomainName          string
    29  	CreateDomainOwningOrgGuid string
    30  
    31  	CreateSharedDomainName string
    32  
    33  	DeleteDomainGuid  string
    34  	DeleteApiResponse error
    35  
    36  	DeleteSharedDomainGuid  string
    37  	DeleteSharedApiResponse error
    38  
    39  	domainCursor int
    40  }
    41  
    42  func (repo *FakeDomainRepository) ListDomainsForOrg(orgGuid string, cb func(models.DomainFields) bool) error {
    43  	repo.ListDomainsForOrgGuid = orgGuid
    44  	for _, d := range repo.ListDomainsForOrgDomains {
    45  		cb(d)
    46  	}
    47  	return repo.ListDomainsForOrgApiResponse
    48  }
    49  
    50  func (repo *FakeDomainRepository) FindSharedByName(name string) (domain models.DomainFields, apiErr error) {
    51  	repo.FindSharedByNameName = name
    52  	domain = repo.FindSharedByNameDomain
    53  
    54  	if repo.FindSharedByNameNotFound {
    55  		apiErr = errors.NewModelNotFoundError("Domain", name)
    56  	}
    57  	if repo.FindSharedByNameErr {
    58  		apiErr = errors.New("Error finding domain")
    59  	}
    60  
    61  	return
    62  }
    63  
    64  func (repo *FakeDomainRepository) FindPrivateByName(name string) (domain models.DomainFields, apiErr error) {
    65  	repo.FindPrivateByNameName = name
    66  	domain = repo.FindPrivateByNameDomain
    67  
    68  	if repo.FindPrivateByNameNotFound {
    69  		apiErr = errors.NewModelNotFoundError("Domain", name)
    70  	}
    71  	if repo.FindPrivateByNameErr {
    72  		apiErr = errors.New("Error finding domain")
    73  	}
    74  
    75  	return
    76  }
    77  
    78  func (repo *FakeDomainRepository) FindByNameInOrg(name string, owningOrgGuid string) (domain models.DomainFields, apiErr error) {
    79  	repo.FindByNameInOrgName = name
    80  	repo.FindByNameInOrgGuid = owningOrgGuid
    81  	if len(repo.FindByNameInOrgDomain) == 0 {
    82  		domain = models.DomainFields{}
    83  	} else {
    84  		domain = repo.FindByNameInOrgDomain[repo.domainCursor]
    85  		repo.domainCursor++
    86  	}
    87  	apiErr = repo.FindByNameInOrgApiResponse
    88  	return
    89  }
    90  
    91  func (repo *FakeDomainRepository) Create(domainName string, owningOrgGuid string) (createdDomain models.DomainFields, apiErr error) {
    92  	repo.CreateDomainName = domainName
    93  	repo.CreateDomainOwningOrgGuid = owningOrgGuid
    94  	return
    95  }
    96  
    97  func (repo *FakeDomainRepository) CreateSharedDomain(domainName string) (apiErr error) {
    98  	repo.CreateSharedDomainName = domainName
    99  	return
   100  }
   101  
   102  func (repo *FakeDomainRepository) Delete(domainGuid string) (apiErr error) {
   103  	repo.DeleteDomainGuid = domainGuid
   104  	apiErr = repo.DeleteApiResponse
   105  	return
   106  }
   107  
   108  func (repo *FakeDomainRepository) DeleteSharedDomain(domainGuid string) (apiErr error) {
   109  	repo.DeleteSharedDomainGuid = domainGuid
   110  	apiErr = repo.DeleteSharedApiResponse
   111  	return
   112  }
   113  
   114  func (repo *FakeDomainRepository) FirstOrDefault(orgGuid string, name *string) (domain models.DomainFields, error error) {
   115  	if name == nil {
   116  		domain, error = repo.defaultDomain(orgGuid)
   117  	} else {
   118  		domain, error = repo.FindByNameInOrg(*name, orgGuid)
   119  	}
   120  	return
   121  }
   122  
   123  func (repo *FakeDomainRepository) defaultDomain(orgGuid string) (models.DomainFields, error) {
   124  	var foundDomain *models.DomainFields
   125  	repo.ListDomainsForOrg(orgGuid, func(domain models.DomainFields) bool {
   126  		foundDomain = &domain
   127  		return !domain.Shared
   128  	})
   129  
   130  	if foundDomain == nil {
   131  		return models.DomainFields{}, errors.New("Could not find a default domain")
   132  	}
   133  
   134  	return *foundDomain, nil
   135  }