utils_test.go

Copyright 2021, 2022 Red Hat, Inc

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

package
amsclient_test
import
(
"time"
jwt
"github.com/golang-jwt/jwt/v4"
ocmtesting
"github.com/openshift-online/ocm-sdk-go/testing"
)
func
MakeTokenObject
(
claims
jwt
.
MapClaims
)
*
jwt
.
Token
{
merged
:=
jwt
.
MapClaims
{
}
for
name
,
value
:=
range
ocmtesting
.
MakeClaims
(
)
{
merged
[
name
]
=
value
}
for
name
,
value
:=
range
claims
{
if
value
==
nil
{
delete
(
merged
,
name
)
}
else
{
merged
[
name
]
=
value
}
}
token
:=
jwt
.
NewWithClaims
(
jwt
.
SigningMethodRS256
,
merged
)
token
.
Header
[
"kid"
]
=
"123"
var
err
error
token
.
Raw
,
err
=
token
.
SignedString
(
jwtPrivateKey
)
if
err
!=
nil
{
panic
(
err
)
}
return
token
}
func
MakeTokenString
(
typ
string
,
life
time
.
Duration
)
string
{
token
:=
MakeTokenObject
(
jwt
.
MapClaims
{
"typ"
:
typ
,
"exp"
:
time
.
Now
(
)
.
Add
(
life
)
.
Unix
(
)
,
}
)
return
token
.
Raw
}

Public key in PEM format:

const
jwtPublicKeyPEM
=
` -----BEGIN PUBLIC KEY----- MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAny/9eLVyvEdOkY5ciQGr 2CAnukSK1MIwNd5re4Im8CfJzqqRREE6cXcbwj0ktcs/h+ahZdx0VbRQVPIs0oPI zEYKlhtufxdeq+V2HL+2zILkesY7IL9N0lE4zhj7AnJl3MNu1Ur25StTmqK8b89L lINH1DcCARTLhgKYGAUuWsxGYLRZGDfV2bjeAD7ZK8Zk9mPzr9a+SRTsj5XlcGqt R6Vh52KFwW1eW13pXaKjOECN15k6AbYVPvRgwxSiK8PzxyFhw+OgtPT8FmjY3I42 uA47zsD0FbrT2RQ2nNAjsaJQtE61oSfuDCSiJMxytt/kwQd5xzb0XVR5rnJP2X4H GSCre9tEN4IB/p/35EcVnEEJ9SaRUxMO7l7/Wv8Ia255xiqLuvK5T14ucMrjoMxG kKDhN4NDutQYIBO8a0EPtJeC3/6pgXJadgIbI/5HBTay0b0b6Bco9gtKZN1crpWW LABinXKMFZUVmfUmCKruUyqkTmuCXgpFWMjVpF+/o5c5AgMBAAE= -----END PUBLIC KEY----- `

Private key in PEM format:

const
jwtPrivateKeyPEM
=
` -----BEGIN RSA PRIVATE KEY----- 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 -----END RSA PRIVATE KEY----- `