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 }