本文整理汇总了Golang中github.com/go-errors/errors.Is函数的典型用法代码示例。如果您正苦于以下问题:Golang Is函数的具体用法?Golang Is怎么用?Golang Is使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Is函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestAssets
func TestAssets(t *testing.T) {
Convey("Parse", t, func() {
var (
result xdr.AssetType
err error
)
result, err = Parse("native")
So(result, ShouldEqual, xdr.AssetTypeAssetTypeNative)
So(err, ShouldBeNil)
result, err = Parse("credit_alphanum4")
So(result, ShouldEqual, xdr.AssetTypeAssetTypeCreditAlphanum4)
So(err, ShouldBeNil)
result, err = Parse("credit_alphanum12")
So(result, ShouldEqual, xdr.AssetTypeAssetTypeCreditAlphanum12)
So(err, ShouldBeNil)
result, err = Parse("not_real")
So(errors.Is(err, ErrInvalidString), ShouldBeTrue)
result, err = Parse("")
So(errors.Is(err, ErrInvalidString), ShouldBeTrue)
})
Convey("String", t, func() {
var (
result string
err error
)
result, err = String(xdr.AssetTypeAssetTypeNative)
So(result, ShouldEqual, "native")
So(err, ShouldBeNil)
result, err = String(xdr.AssetTypeAssetTypeCreditAlphanum4)
So(result, ShouldEqual, "credit_alphanum4")
So(err, ShouldBeNil)
result, err = String(xdr.AssetTypeAssetTypeCreditAlphanum12)
So(result, ShouldEqual, "credit_alphanum12")
So(err, ShouldBeNil)
result, err = String(xdr.AssetType(15))
So(errors.Is(err, ErrInvalidValue), ShouldBeTrue)
})
}
开发者ID:zenododobird,项目名称:horizon,代码行数:48,代码来源:main_test.go
示例2: loadReleaseID
func loadReleaseID() (string, error) {
releaseID := os.Getenv("WERCKER_DISTELLI_RELEASE")
if releaseID == "" {
if stat, err := os.Stat(releaseFilename); err == nil {
if stat.Size() <= 0 {
return "", errors.New(BadReleaseFile)
}
releaseFile, err := os.Open(releaseFilename)
if err != nil {
return "", errors.WrapPrefix(err, fmt.Sprintf("Error opening file %s", releaseFilename), 0)
}
defer releaseFile.Close()
reader := bufio.NewReader(releaseFile)
releaseID, err = reader.ReadString('\n')
if err != nil && !errors.Is(err, io.EOF) {
return "", errors.WrapPrefix(err, fmt.Sprintf("Error reading file %s", releaseFilename), 0)
}
}
}
return strings.TrimSpace(releaseID), nil
}
开发者ID:Distelli,项目名称:wercker-step-distelli,代码行数:25,代码来源:main.go
示例3: shouldRetry
func shouldRetry(err error) bool {
if errors.Is(err, io.ErrUnexpectedEOF) {
return true
} else if opError, ok := err.(*net.OpError); ok {
if opError.Timeout() || opError.Temporary() || opError.Err.Error() == syscall.ECONNRESET.Error() {
return true
}
} else if urlError, ok := err.(*url.Error); ok {
if urlError.Timeout() || urlError.Temporary() || errors.Is(urlError.Err, io.EOF) {
return true
}
} else {
return false
}
return false
}
开发者ID:itchio,项目名称:butler,代码行数:16,代码来源:httpfile.go
示例4: TestAuthorizeImplicitEndpointHandler
func TestAuthorizeImplicitEndpointHandler(t *testing.T) {
ctrl := gomock.NewController(t)
store := internal.NewMockImplicitGrantStorage(ctrl)
chgen := internal.NewMockAccessTokenStrategy(ctrl)
areq := internal.NewMockAuthorizeRequester(ctrl)
aresp := internal.NewMockAuthorizeResponder(ctrl)
defer ctrl.Finish()
h := AuthorizeImplicitGrantTypeHandler{
Store: store,
AccessTokenStrategy: chgen,
AccessTokenLifespan: time.Hour,
}
for k, c := range []struct {
mock func()
req *http.Request
expectErr error
}{
{mock: func() { areq.EXPECT().GetResponseTypes().Return(fosite.Arguments{}) }},
{
mock: func() {
areq.EXPECT().GetResponseTypes().Return(fosite.Arguments{"token"})
chgen.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{Form: url.Values{}},
mock: func() {
areq.EXPECT().GetResponseTypes().Return(fosite.Arguments{"token"})
chgen.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "foo", nil)
store.EXPECT().CreateImplicitAccessTokenSession("foo", gomock.Any()).Return(errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{Form: url.Values{}},
mock: func() {
areq.EXPECT().GetResponseTypes().Return(fosite.Arguments{"token"})
chgen.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("foo.bar", "foo", nil)
store.EXPECT().CreateImplicitAccessTokenSession("foo", gomock.Any()).Return(nil)
aresp.EXPECT().AddFragment("access_token", "foo.bar")
aresp.EXPECT().AddFragment("expires_in", strconv.Itoa(int(h.AccessTokenLifespan/time.Second)))
aresp.EXPECT().AddFragment("token_type", "bearer")
aresp.EXPECT().AddFragment("state", "state")
aresp.EXPECT().AddFragment("scope", "scope")
areq.EXPECT().SetResponseTypeHandled("token")
areq.EXPECT().GetState().Return("state")
areq.EXPECT().GetGrantedScopes().Return(fosite.Arguments{"scope"})
},
expectErr: nil,
},
} {
c.mock()
err := h.HandleAuthorizeEndpointRequest(nil, c.req, areq, aresp)
assert.True(t, errors.Is(c.expectErr, err), "%d\n%s\n%s", k, err, c.expectErr)
t.Logf("Passed test case %d", k)
}
}
开发者ID:jesseward,项目名称:fosite,代码行数:60,代码来源:implicit_test.go
示例5: TestValidateTokenEndpointRequest
func TestValidateTokenEndpointRequest(t *testing.T) {
ctrl := gomock.NewController(t)
store := internal.NewMockClientCredentialsGrantStorage(ctrl)
chgen := internal.NewMockAccessTokenStrategy(ctrl)
areq := internal.NewMockAccessRequester(ctrl)
defer ctrl.Finish()
h := ClientCredentialsGrantHandler{
Store: store,
AccessTokenStrategy: chgen,
AccessTokenLifespan: time.Hour,
}
for k, c := range []struct {
mock func()
req *http.Request
expectErr error
}{
{
mock: func() {
areq.EXPECT().GetGrantType().Return("")
},
},
{
mock: func() {
areq.EXPECT().GetGrantType().Return("client_credentials")
areq.EXPECT().SetGrantTypeHandled("client_credentials")
},
},
} {
c.mock()
err := h.ValidateTokenEndpointRequest(nil, c.req, areq)
assert.True(t, errors.Is(c.expectErr, err), "%d\n%s\n%s", k, err, c.expectErr)
t.Logf("Passed test case %d", k)
}
}
开发者ID:jesseward,项目名称:fosite,代码行数:35,代码来源:client_test.go
示例6: TestHandleTokenEndpointRequest
func TestHandleTokenEndpointRequest(t *testing.T) {
ctrl := gomock.NewController(t)
store := internal.NewMockResourceOwnerPasswordCredentialsGrantStorage(ctrl)
chgen := internal.NewMockAccessTokenStrategy(ctrl)
areq := internal.NewMockAccessRequester(ctrl)
aresp := internal.NewMockAccessResponder(ctrl)
//mockcl := internal.NewMockClient(ctrl)
defer ctrl.Finish()
h := ResourceOwnerPasswordCredentialsGrantHandler{
Store: store,
AccessTokenStrategy: chgen,
AccessTokenLifespan: time.Hour,
}
for k, c := range []struct {
mock func()
req *http.Request
expectErr error
}{
{
mock: func() {
areq.EXPECT().GetGrantType().Return("")
},
},
{
mock: func() {
areq.EXPECT().GetGrantType().Return("password")
chgen.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
mock: func() {
areq.EXPECT().GetGrantType().Return("password")
chgen.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "foo", nil)
store.EXPECT().CreateAccessTokenSession("foo", gomock.Any()).Return(errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
mock: func() {
areq.EXPECT().GetGrantType().Return("password")
chgen.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("foo.bar", "", nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any()).Return(nil)
aresp.EXPECT().SetAccessToken("foo.bar")
aresp.EXPECT().SetTokenType("bearer")
aresp.EXPECT().SetExtra("expires_in", gomock.Any())
aresp.EXPECT().SetExtra("scope", gomock.Any())
areq.EXPECT().GetGrantedScopes()
},
},
} {
c.mock()
err := h.HandleTokenEndpointRequest(nil, c.req, areq, aresp)
assert.True(t, errors.Is(c.expectErr, err), "%d\n%s\n%s", k, err, c.expectErr)
t.Logf("Passed test case %d", k)
}
}
开发者ID:jesseward,项目名称:fosite,代码行数:59,代码来源:owner_test.go
示例7: ShouldBeErr
func ShouldBeErr(a interface{}, options ...interface{}) string {
actual := a.(error)
expected := options[0].(error)
ok := errors.Is(actual, expected)
if !ok {
return fmt.Sprintf("Errors don't match:\n%v+\n%v+", actual, expected)
}
return ""
}
开发者ID:zenododobird,项目名称:horizon,代码行数:11,代码来源:asserts.go
示例8: createRS256KeysIfNotExist
func (h *Handler) createRS256KeysIfNotExist(c *config.Config, set, lookup string) {
ctx := c.Context()
generator := jwk.RS256Generator{}
if _, err := ctx.KeyManager.GetKey(set, lookup); errors.Is(err, pkg.ErrNotFound) {
logrus.Warnf("Key pair for signing %s is missing. Creating new one.", set)
keys, err := generator.Generate("")
pkg.Must(err, "Could not generate %s key: %s", set, err)
err = ctx.KeyManager.AddKeySet(set, keys)
pkg.Must(err, "Could not persist %s key: %s", set, err)
}
}
开发者ID:jemacom,项目名称:hydra,代码行数:14,代码来源:handler.go
示例9: getOrCreateTLSCertificate
func getOrCreateTLSCertificate(cmd *cobra.Command) tls.Certificate {
if cert := loadCertificateFromFile(cmd); cert != nil {
return *cert
} else if cert := loadCertificateFromEnv(cmd); cert != nil {
return *cert
}
ctx := c.Context()
keys, err := ctx.KeyManager.GetKey(TLSKeyName, "private")
if errors.Is(err, pkg.ErrNotFound) {
logrus.Warn("Key for TLS not found. Creating new one.")
keys, err = new(jwk.ECDSA256Generator).Generate("")
pkg.Must(err, "Could not generate key: %s", err)
cert, err := createSelfSignedCertificate(jwk.First(keys.Key("private")).Key)
pkg.Must(err, "Could not create X509 PEM Key Pair: %s", err)
private := jwk.First(keys.Key("private"))
private.Certificates = []*x509.Certificate{cert}
keys = &jose.JsonWebKeySet{
Keys: []jose.JsonWebKey{
*private,
*jwk.First(keys.Key("public")),
},
}
err = ctx.KeyManager.AddKeySet(TLSKeyName, keys)
pkg.Must(err, "Could not persist key: %s", err)
} else {
pkg.Must(err, "Could not retrieve key: %s", err)
}
private := jwk.First(keys.Key("private"))
block, err := jwk.PEMBlockForKey(private.Key)
if err != nil {
pkg.Must(err, "Could not encode key to PEM: %s", err)
}
if len(private.Certificates) == 0 {
logrus.Fatal("TLS certificate chain can not be empty")
}
pemCert := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: private.Certificates[0].Raw})
pemKey := pem.EncodeToMemory(block)
cert, err := tls.X509KeyPair(pemCert, pemKey)
pkg.Must(err, "Could not decode certificate: %s", err)
return cert
}
开发者ID:jemacom,项目名称:hydra,代码行数:50,代码来源:host.go
示例10: runPatchingScenario
//.........这里部分代码省略.........
InPlace: true,
Consumer: consumer,
}
if setup != nil {
setup(actx)
}
patchReader := bytes.NewReader(patchBuffer.Bytes())
aErr := actx.ApplyPatch(patchReader)
if aErr != nil {
return aErr
}
if actx.Signature == nil {
vErr := AssertValid(v1Before, signature)
if vErr != nil {
return vErr
}
}
return nil
}
func() {
log("In-place with failing vet")
var NotVettingError = errors.New("not vetting this")
pErr := runExtraTest(func(actx *ApplyContext) {
actx.VetApply = func(actx *ApplyContext) error {
return NotVettingError
}
})
assert.Error(t, pErr)
assert.True(t, errors.Is(pErr, NotVettingError))
}()
func() {
log("In-place with signature (failfast, passing)")
assert.NoError(t, runExtraTest(func(actx *ApplyContext) {
actx.Signature = signature
}))
}()
func() {
log("In-place with signature (failfast, failing)")
assert.Error(t, runExtraTest(func(actx *ApplyContext) {
actx.Signature = signature
makeTestDir(t, v1Before, *scenario.corruptions)
}))
}()
func() {
log("In-place with signature (wounds, passing)")
assert.NoError(t, runExtraTest(func(actx *ApplyContext) {
actx.Signature = signature
actx.WoundsPath = woundsPath
}))
_, sErr := os.Lstat(woundsPath)
assert.Error(t, sErr)
assert.True(t, os.IsNotExist(sErr))
}()
func() {
log("In-place with signature (wounds, failing)")
assert.NoError(t, runExtraTest(func(actx *ApplyContext) {
开发者ID:itchio,项目名称:wharf,代码行数:67,代码来源:patching_test.go
示例11: TestNewAccessRequest
//.........这里部分代码省略.........
},
method: "POST",
form: url.Values{
"grant_type": {"foo"},
},
expectErr: ErrUnsupportedGrantType,
mock: func() {
store.EXPECT().GetClient(gomock.Eq("foo")).Return(client, nil)
client.EXPECT().GetHashedSecret().Return([]byte("foo"))
hasher.EXPECT().Compare(gomock.Eq([]byte("foo")), gomock.Eq([]byte("bar"))).Return(nil)
handler.EXPECT().ValidateTokenEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
},
handlers: TokenEndpointHandlers{"a": handler},
},
{
header: http.Header{
"Authorization": {basicAuth("foo", "bar")},
},
method: "POST",
form: url.Values{
"grant_type": {"foo"},
},
expectErr: ErrUnsupportedGrantType,
mock: func() {
store.EXPECT().GetClient(gomock.Eq("foo")).Return(client, nil)
client.EXPECT().GetHashedSecret().Return([]byte("foo"))
hasher.EXPECT().Compare(gomock.Eq([]byte("foo")), gomock.Eq([]byte("bar"))).Return(nil)
handler.EXPECT().ValidateTokenEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Do(func(_ context.Context, _ *http.Request, a AccessRequester, _ interface{}) {
a.SetGrantTypeHandled("bar")
}).Return(nil)
},
handlers: TokenEndpointHandlers{"a": handler},
},
{
header: http.Header{
"Authorization": {basicAuth("foo", "bar")},
},
method: "POST",
form: url.Values{
"grant_type": {"foo"},
},
mock: func() {
store.EXPECT().GetClient(gomock.Eq("foo")).Return(client, nil)
client.EXPECT().GetHashedSecret().Return([]byte("foo"))
hasher.EXPECT().Compare(gomock.Eq([]byte("foo")), gomock.Eq([]byte("bar"))).Return(nil)
handler.EXPECT().ValidateTokenEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Do(func(_ context.Context, _ *http.Request, a AccessRequester, _ interface{}) {
a.SetGrantTypeHandled("foo")
a.SetScopes([]string{"asdfasdf"})
}).Return(nil)
},
handlers: TokenEndpointHandlers{"a": handler},
expectErr: ErrInvalidScope,
},
{
header: http.Header{
"Authorization": {basicAuth("foo", "bar")},
},
method: "POST",
form: url.Values{
"grant_type": {"foo"},
},
mock: func() {
store.EXPECT().GetClient(gomock.Eq("foo")).Return(client, nil)
client.EXPECT().GetHashedSecret().Return([]byte("foo"))
hasher.EXPECT().Compare(gomock.Eq([]byte("foo")), gomock.Eq([]byte("bar"))).Return(nil)
handler.EXPECT().ValidateTokenEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Do(func(_ context.Context, _ *http.Request, a AccessRequester, _ interface{}) {
a.SetGrantTypeHandled("foo")
a.SetScopes([]string{DefaultRequiredScopeName})
}).Return(nil)
},
handlers: TokenEndpointHandlers{"a": handler},
expect: &AccessRequest{
GrantType: "foo",
HandledGrantType: []string{"foo"},
Client: client,
},
},
} {
r := &http.Request{
Header: c.header,
PostForm: c.form,
Form: c.form,
Method: c.method,
}
c.mock()
ctx := NewContext()
fosite.TokenEndpointHandlers = c.handlers
ar, err := fosite.NewAccessRequest(ctx, r, &struct{}{})
is := errors.Is(c.expectErr, err)
assert.True(t, is, "%d\nwant: %s \ngot: %s", k, c.expectErr, err)
if !is {
t.Logf("Error occured: %s", err.(*errors.Error).ErrorStack())
}
if err == nil {
pkg.AssertObjectKeysEqual(t, c.expect, ar, "GrantType", "Client")
assert.NotNil(t, ar.GetRequestedAt())
}
t.Logf("Passed test case %d", k)
}
}
开发者ID:ajayk,项目名称:fosite,代码行数:101,代码来源:access_request_handler_test.go
示例12: ReadSignature
// ReadSignature reads the hashes from all files of a given container, from a
// wharf signature file.
func ReadSignature(signatureReader io.Reader) (*SignatureInfo, error) {
rawSigWire := wire.NewReadContext(signatureReader)
err := rawSigWire.ExpectMagic(SignatureMagic)
if err != nil {
return nil, errors.Wrap(err, 1)
}
header := &SignatureHeader{}
err = rawSigWire.ReadMessage(header)
if err != nil {
return nil, errors.Wrap(err, 1)
}
sigWire, err := DecompressWire(rawSigWire, header.Compression)
if err != nil {
return nil, errors.Wrap(err, 1)
}
container := &tlc.Container{}
err = sigWire.ReadMessage(container)
if err != nil {
if errors.Is(err, io.EOF) {
// ok
} else {
return nil, errors.Wrap(err, 1)
}
}
var hashes []wsync.BlockHash
hash := &BlockHash{}
for fileIndex, f := range container.Files {
numBlocks := ComputeNumBlocks(f.Size)
if numBlocks == 0 {
hash.Reset()
err = sigWire.ReadMessage(hash)
if err != nil {
if errors.Is(err, io.EOF) {
break
}
return nil, errors.Wrap(err, 1)
}
// empty files have a 0-length shortblock for historical reasons.
blockHash := wsync.BlockHash{
FileIndex: int64(fileIndex),
BlockIndex: 0,
WeakHash: hash.WeakHash,
StrongHash: hash.StrongHash,
ShortSize: 0,
}
hashes = append(hashes, blockHash)
}
for blockIndex := int64(0); blockIndex < numBlocks; blockIndex++ {
hash.Reset()
err = sigWire.ReadMessage(hash)
if err != nil {
if errors.Is(err, io.EOF) {
break
}
return nil, errors.Wrap(err, 1)
}
// full blocks have a shortSize of 0, for more compact storage
shortSize := int32(0)
if (blockIndex+1)*BlockSize > f.Size {
shortSize = int32(f.Size % BlockSize)
}
blockHash := wsync.BlockHash{
FileIndex: int64(fileIndex),
BlockIndex: blockIndex,
WeakHash: hash.WeakHash,
StrongHash: hash.StrongHash,
ShortSize: shortSize,
}
hashes = append(hashes, blockHash)
}
}
signature := &SignatureInfo{
Container: container,
Hashes: hashes,
}
return signature, nil
}
开发者ID:itchio,项目名称:wharf,代码行数:95,代码来源:sign.go
示例13: TestHandleTokenEndpointRequest
func TestHandleTokenEndpointRequest(t *testing.T) {
ctrl := gomock.NewController(t)
store := internal.NewMockAuthorizeCodeGrantStorage(ctrl)
ach := internal.NewMockAccessTokenStrategy(ctrl)
rch := internal.NewMockRefreshTokenStrategy(ctrl)
auch := internal.NewMockAuthorizeCodeStrategy(ctrl)
areq := internal.NewMockAccessRequester(ctrl)
aresp := internal.NewMockAccessResponder(ctrl)
//mockcl := internal.NewMockClient(ctrl)
defer ctrl.Finish()
h := AuthorizeExplicitGrantTypeHandler{
Store: store,
AuthorizeCodeStrategy: auch,
AccessTokenStrategy: ach,
RefreshTokenStrategy: rch,
}
for k, c := range []struct {
mock func()
req *http.Request
expectErr error
}{
{
mock: func() {
areq.EXPECT().GetGrantType().Return("13245678")
},
},
{
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
ach.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", fosite.ErrServerError)
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
ach.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", nil)
rch.EXPECT().GenerateRefreshToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", nil)
auch.EXPECT().ValidateAuthorizeCode(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return("signature", nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(nil, errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
ach.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", nil)
rch.EXPECT().GenerateRefreshToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", nil)
auch.EXPECT().ValidateAuthorizeCode(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return("signature", nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(&fosite.AuthorizeRequest{}, nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any()).Return(errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
ach.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", nil)
rch.EXPECT().GenerateRefreshToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("", "", nil)
auch.EXPECT().ValidateAuthorizeCode(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return("signature", nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(&fosite.AuthorizeRequest{}, nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any()).Return(nil)
store.EXPECT().CreateRefreshTokenSession(gomock.Any(), gomock.Any()).Return(errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
areq.EXPECT().GetGrantedScopes()
ach.EXPECT().GenerateAccessToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("access.at", "at", nil)
rch.EXPECT().GenerateRefreshToken(gomock.Any(), gomock.Any(), gomock.Any()).Return("refresh.rt", "rt", nil)
auch.EXPECT().ValidateAuthorizeCode(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return("signature", nil)
aresp.EXPECT().SetAccessToken("access.at")
aresp.EXPECT().SetTokenType("bearer")
aresp.EXPECT().SetExtra("refresh_token", "refresh.rt")
aresp.EXPECT().SetExtra("expires_in", gomock.Any())
aresp.EXPECT().SetExtra("state", gomock.Any())
aresp.EXPECT().SetExtra("scope", gomock.Any())
store.EXPECT().DeleteAuthorizeCodeSession(gomock.Any()).Return(nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(&fosite.AuthorizeRequest{}, nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any()).Return(nil)
store.EXPECT().CreateRefreshTokenSession(gomock.Any(), gomock.Any()).Return(nil)
},
},
} {
c.mock()
err := h.HandleTokenEndpointRequest(nil, c.req, areq, aresp)
assert.True(t, errors.Is(c.expectErr, err), "%d\n%s\n%s", k, err, c.expectErr)
//.........这里部分代码省略.........
开发者ID:jesseward,项目名称:fosite,代码行数:101,代码来源:explicit_token_test.go
示例14: TestValidateTokenEndpointRequest
//.........这里部分代码省略.........
authreq.EXPECT().GetScopes().Return([]string{})
areq.EXPECT().SetScopes(gomock.Any())
authreq.EXPECT().GetClient().Return(&client.SecureClient{ID: "bar"})
},
expectErr: fosite.ErrInvalidRequest,
},
{
req: &http.Request{
PostForm: url.Values{
"code": {"foo.bar"}, // code REQUIRED. The authorization code received from the authorization server.
},
},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code") // grant_type REQUIRED. Value MUST be set to "authorization_code".
areq.EXPECT().GetClient().AnyTimes().Return(&client.SecureClient{ID: "foo"})
areq.EXPECT().GetSession().Return(nil)
ach.EXPECT().ValidateAuthorizeCode("foo.bar", gomock.Any(), gomock.Any(), gomock.Any()).Return("signature", nil)
store.EXPECT().GetAuthorizeCodeSession("signature", gomock.Any()).Return(authreq, nil)
authreq.EXPECT().GetScopes().Return([]string{})
authreq.EXPECT().GetRequestForm().Return(url.Values{"redirect_uri": {"request-redir"}})
areq.EXPECT().SetScopes(gomock.Any())
authreq.EXPECT().GetClient().Return(&client.SecureClient{ID: "foo"})
},
expectErr: fosite.ErrInvalidRequest,
},
{
req: &http.Request{
PostForm: url.Values{
"code": {"foo.bar"}, // code REQUIRED. The authorization code received from the authorization server.
"redirect_uri": {"request-redir"},
},
},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code") // grant_type REQUIRED. Value MUST be set to "authorization_code".
areq.EXPECT().GetClient().AnyTimes().Return(&client.SecureClient{ID: "foo"})
areq.EXPECT().GetSession().Return(nil)
ach.EXPECT().ValidateAuthorizeCode("foo.bar", gomock.Any(), gomock.Any(), gomock.Any()).Return("", nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(authreq, nil)
authreq.EXPECT().GetRequestForm().Return(url.Values{"redirect_uri": {"request-redir"}})
authreq.EXPECT().GetScopes().Return([]string{})
areq.EXPECT().SetScopes(gomock.Any())
authreq.EXPECT().GetClient().Return(&client.SecureClient{ID: "foo"})
authreq.EXPECT().GetRequestedAt().Return(time.Now().Add(-time.Hour))
},
expectErr: fosite.ErrInvalidRequest,
},
{
req: &http.Request{
PostForm: url.Values{
"code": {"foo.bar"}, // code REQUIRED. The authorization code received from the authorization server.
"redirect_uri": {"request-redir"},
},
},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code") // grant_type REQUIRED. Value MUST be set to "authorization_code".
areq.EXPECT().GetClient().AnyTimes().Return(&client.SecureClient{ID: "foo"})
areq.EXPECT().GetSession().Return(nil)
ach.EXPECT().ValidateAuthorizeCode("foo.bar", gomock.Any(), gomock.Any(), gomock.Any()).Return("", nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(authreq, nil)
authreq.EXPECT().GetScopes().Return([]string{})
authreq.EXPECT().GetRequestForm().Return(url.Values{"redirect_uri": {"request-redir"}})
areq.EXPECT().SetScopes(gomock.Any())
authreq.EXPECT().GetClient().Return(&client.SecureClient{ID: "foo"})
authreq.EXPECT().GetRequestedAt().Return(time.Now().Add(-time.Hour))
},
expectErr: fosite.ErrInvalidRequest,
},
{
req: &http.Request{
PostForm: url.Values{
"code": {"foo.bar"}, // code REQUIRED. The authorization code received from the authorization server.
},
},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code") // grant_type REQUIRED. Value MUST be set to "authorization_code".
areq.EXPECT().GetClient().AnyTimes().Return(&client.SecureClient{ID: "foo"})
areq.EXPECT().GetSession().Return(nil)
ach.EXPECT().ValidateAuthorizeCode("foo.bar", gomock.Any(), gomock.Any(), gomock.Any()).Return("", nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(authreq, nil)
authreq.EXPECT().GetScopes().Return([]string{})
authreq.EXPECT().GetRequestForm().Return(url.Values{})
areq.EXPECT().SetScopes(gomock.Any())
authreq.EXPECT().GetClient().Return(&client.SecureClient{ID: "foo"})
authreq.EXPECT().GetRequestedAt().Return(time.Now().Add(time.Hour))
authreq.EXPECT().GetSession().Return("sess")
areq.EXPECT().SetSession("sess")
areq.EXPECT().SetGrantTypeHandled("authorization_code")
},
},
} {
c.mock()
err := h.ValidateTokenEndpointRequest(nil, c.req, areq)
assert.True(t, errors.Is(c.expectErr, err), "%d\n%s\n%s", k, err, c.expectErr)
t.Logf("Passed test case %d", k)
}
}
开发者ID:jesseward,项目名称:fosite,代码行数:101,代码来源:explicit_token_test.go
示例15: TestHandleTokenEndpointRequest
//.........这里部分代码省略.........
defer ctrl.Finish()
h := AuthorizeExplicitGrantTypeHandler{
Store: store,
Enigma: chgen,
}
for k, c := range []struct {
mock func()
req *http.Request
expectErr error
}{
{
mock: func() {
areq.EXPECT().GetGrantType().Return("13245678")
},
},
{
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
areq.EXPECT().GetClient().Return(&client.SecureClient{})
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, errors.New("foo"))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
areq.EXPECT().GetClient().Return(&client.SecureClient{})
areq.EXPECT().GetClient().Return(&client.SecureClient{})
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(nil, errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
areq.EXPECT().GetClient().Return(&client.SecureClient{})
areq.EXPECT().GetClient().Return(&client.SecureClient{})
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(&fosite.AuthorizeRequest{}, nil)
store.EXPECT().DeleteAuthorizeCodeSession(gomock.Any()).Return(nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
areq.EXPECT().GetClient().Return(&client.SecureClient{})
areq.EXPECT().GetClient().Return(&client.SecureClient{})
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
store.EXPECT().DeleteAuthorizeCodeSession(gomock.Any()).Return(nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(&fosite.AuthorizeRequest{}, nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
store.EXPECT().CreateRefreshTokenSession(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New(""))
},
expectErr: fosite.ErrServerError,
},
{
req: &http.Request{PostForm: url.Values{}},
mock: func() {
areq.EXPECT().GetGrantType().Return("authorization_code")
areq.EXPECT().GetGrantedScopes()
areq.EXPECT().GetClient().Return(&client.SecureClient{})
areq.EXPECT().GetClient().Return(&client.SecureClient{})
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
chgen.EXPECT().GenerateChallenge(gomock.Any()).Return(&enigma.Challenge{}, nil)
aresp.EXPECT().SetAccessToken(gomock.Eq("."))
aresp.EXPECT().SetTokenType(gomock.Eq("bearer"))
aresp.EXPECT().SetExtra(gomock.Eq("refresh_token"), gomock.Any())
aresp.EXPECT().SetExtra(gomock.Eq("expires_in"), gomock.Any())
aresp.EXPECT().SetExtra(gomock.Eq("state"), gomock.Any())
aresp.EXPECT().SetExtra(gomock.Eq("scope"), gomock.Any())
store.EXPECT().DeleteAuthorizeCodeSession(gomock.Any()).Return(nil)
store.EXPECT().GetAuthorizeCodeSession(gomock.Any(), gomock.Any()).Return(&fosite.AuthorizeRequest{}, nil)
store.EXPECT().CreateAccessTokenSession(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
store.EXPECT().CreateRefreshTokenSession(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
},
},
} {
c.mock()
err := h.HandleTokenEndpointRequest(nil, c.req, areq, aresp, nil)
assert.True(t, errors.Is(c.expectErr, err), "%d\n%s\n%s", k, err, c.expectErr)
t.Logf("Passed test case %d", k)
}
}
开发者ID:ajayk,项目名称:fosite,代码行数:101,代码来源:explicit_token_test.go
示例16: ExtractZip
func ExtractZip(readerAt io.ReaderAt, size int64, dir string, settings ExtractSettings) (*ExtractResult, error) {
dirCount := 0
regCount := 0
symlinkCount := 0
reader, err := zip.NewReader(readerAt, size)
if err != nil {
return nil, errors.Wrap(err, 1)
}
var totalSize int64
for _, file := range reader.File {
totalSize += int64(file.UncompressedSize64)
}
var doneSize uint64
var lastDoneIndex int = -1
func() {
if settings.ResumeFrom == "" {
return
}
resBytes, resErr := ioutil.ReadFile(settings.ResumeFrom)
if resErr != nil {
if !errors.Is(resErr, os.ErrNotExist) {
settings.Consumer.Warnf("Couldn't read resume file: %s", resErr.Error())
}
return
}
lastDone64, resErr := strconv.ParseInt(string(resBytes), 10, 64)
if resErr != nil {
settings.Consumer.Warnf("Couldn't parse resume file: %s", resErr.Error())
return
}
lastDoneIndex = int(lastDone64)
settings.Consumer.Infof("Resuming from file %d", lastDoneIndex)
}()
warnedAboutWrite := false
writeProgress := func(fileIndex int) {
if settings.ResumeFrom == "" {
return
}
payload := fmt.Sprintf("%d", fileIndex)
wErr := ioutil.WriteFile(settings.ResumeFrom, []byte(payload), 0644)
if wErr != nil {
if !warnedAboutWrite {
warnedAboutWrite = true
settings.Consumer.Warnf("Couldn't save resume file: %s", wErr.Error())
}
return
}
}
defer func() {
if settings.ResumeFrom == "" {
return
}
rErr := os.Remove(settings.ResumeFrom)
if rErr != nil {
settings.Consumer.Warnf("Couldn't remove resume file: %s", rErr.Error())
}
}()
if settings.OnUncompressedSizeKnown != nil {
settings.OnUncompressedSizeKnown(totalSize)
}
windows := runtime.GOOS == "windows"
for fileIndex, file := range reader.File {
if fileIndex <= lastDoneIndex {
settings.Consumer.Debugf("Skipping file %d")
doneSize += file.UncompressedSize64
settings.Consumer.Progress(float64(doneSize) / float64(totalSize))
continue
}
err = func() error {
rel := file.Name
filename := path.Join(dir, filepath.FromSlash(rel))
info := file.FileInfo()
mode := info.Mode()
if info.IsDir() {
err = Mkdir(filename)
if err != nil {
return errors.Wrap(err, 1)
}
dirCount++
} else if mode&os.ModeSymlink > 0 && !windows {
fileReader, fErr := file.Open()
//.........这里部分代码省略.........
开发者ID:itchio,项目名称:butler,代码行数:101,代码来源:zip.go
示例17: ExtractTar
// Does not preserve users, nor permission, except the executable bit
func ExtractTar(archive string, dir string, settings ExtractSettings) (*ExtractResult, error) {
settings.Consumer.Infof("Extracting %s to %s", archive, dir)
dirCount := 0
regCount := 0
symlinkCount := 0
file, err := eos.Open(archive)
if err != nil {
return nil, errors.Wrap(err, 1)
}
defer file.Close()
err = Mkdir(dir)
if err != nil {
return nil, errors.Wrap(err, 1)
}
tarReader := tar.NewReader(file)
for {
header, err := tarReader.Next()
if err != nil {
if errors.Is(err, io.EOF) {
break
}
return nil, errors.Wrap(err, 1)
}
rel := header.Name
filename := path.Join(dir, filepath.FromSlash(rel))
switch header.Typeflag {
case tar.TypeDir:
err = Mkdir(filename)
if err != nil {
return nil, errors.Wrap(err, 1)
}
dirCount++
case tar.TypeReg:
settings.Consumer.Debugf("extract %s", filename)
err = CopyFile(filename, os.FileMode(header.Mode&LuckyMode|ModeMask), tarReader)
if err != nil {
return nil, errors.Wrap(err, 1)
}
regCount++
case tar.TypeSymlink:
err = Symlink(header.Linkname, filename, settings.Consumer)
if err != nil {
return nil, errors.Wrap(err, 1)
}
symlinkCount++
default:
return nil, fmt.Errorf("Unable to untar entry of type %d", header.Typeflag)
}
}
return &ExtractResult{
Dirs: dirCount,
Files: regCount,
Symlinks: symlinkCount,
}, nil
}
开发者ID:itchio,项目名称:wharf,代码行数:68,代码来源:tar.go
示例18: ErrorToRFC6749Error
func ErrorToRFC6749Error(err error) *RFC6749Error {
ge, ok := err.(*errors.Error)
if !ok {
return &RFC6749Error{
Name: errInvalidError,
Description: "The error is unrecognizable.",
Hint: err.Error(),
}
}
if errors.Is(ge, ErrInvalidRequest) {
return &RFC6749Error{
Name: errInvalidRequestName,
Description: ge.Error(),
Hint: "Make sure that the various parameters are correct, be aware of case sensitivity and trim your parameters. Make sure that the client you are using has exactly whitelisted the redirect_uri you specified.",
}
} else if errors.Is(ge, ErrUnauthorizedClient) {
return &RFC6749Error{
Name: errUnauthorizedClientName,
Description: ge.Error(),
Hint: "Make sure that client id and secret are correctly specified and that the client exists.",
}
} else if errors.Is(ge, ErrAccessDenied) {
return &RFC6749Error{
Name: errAccessDeniedName,
Description: ge.Error(),
Hint: "Make sure that the request you are making is valid. Maybe the credential or request parameters you are using are limited in scope or otherwise restricted.",
}
} else if errors.Is(ge, ErrUnsupportedResponseType) {
return &RFC6749Error{
Name: errUnsupportedResponseTypeName,
Description: ge.Error(),
}
} else if errors.Is(ge, ErrInvalidScope) {
return &RFC6749Error{
Name: errInvalidScopeName,
Description: ge.Error(),
}
} else if errors.Is(ge, ErrServerError) {
return &RFC6749Error{
Name: errServerErrorName,
Description: ge.Error(),
}
} else if errors.Is(ge, ErrTemporarilyUnavailable) {
return &RFC6749Error{
Name: errTemporarilyUnavailableName,
Description: ge.Error(),
}
} else if errors.Is(ge, ErrUnsupportedGrantType) {
return &RFC6749Error{
Name: errUnsupportedGrantTypeName,
Description: ge.Error(),
}
} else if errors.Is(ge, ErrInvalidGrant) {
return &RFC6749Error{
Name:
|
请发表评论