Skip to content

Commit faaacd2

Browse files
committed
feat: support StsToken mode in cli profile
1 parent 8e864d8 commit faaacd2

File tree

6 files changed

+35
-5
lines changed

6 files changed

+35
-5
lines changed

.github/workflows/testPython.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ permissions:
1111

1212
jobs:
1313
build:
14-
runs-on: ubuntu-20.04
14+
runs-on: ubuntu-22.04
1515
strategy:
1616
matrix:
1717
python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ]

alibabacloud_credentials/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def __init__(self,
9292
config: Config = None,
9393
provider: ICredentialsProvider = None):
9494
if provider is not None:
95-
self.cloud_credential = _CredentialsProviderWrap(provider=provider)
95+
self.cloud_credential = _CredentialsProviderWrap(type_name=provider.get_provider_name(), provider=provider)
9696
elif config is None:
9797
provider = DefaultCredentialsProvider()
9898
self.cloud_credential = _CredentialsProviderWrap(type_name='default', provider=provider)

alibabacloud_credentials/provider/cli_profile.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import aiofiles
66

77
from alibabacloud_credentials.provider import StaticAKCredentialsProvider, EcsRamRoleCredentialsProvider, \
8-
RamRoleArnCredentialsProvider, OIDCRoleArnCredentialsProvider, RsaKeyPairCredentialsProvider
8+
RamRoleArnCredentialsProvider, OIDCRoleArnCredentialsProvider, StaticSTSCredentialsProvider
99
from .refreshable import Credentials
1010
from alibabacloud_credentials_api import ICredentialsProvider
1111
from alibabacloud_credentials.utils import auth_constant as ac
@@ -115,6 +115,12 @@ def _get_credentials_provider(self, config: Dict, profile_name: str) -> ICredent
115115
access_key_id=profile.get('access_key_id'),
116116
access_key_secret=profile.get('access_key_secret')
117117
)
118+
elif mode == "StsToken":
119+
return StaticSTSCredentialsProvider(
120+
access_key_id=profile.get('access_key_id'),
121+
access_key_secret=profile.get('access_key_secret'),
122+
security_token=profile.get('sts_token')
123+
)
118124
elif mode == "RamRoleArn":
119125
pre_provider = StaticAKCredentialsProvider(
120126
access_key_id=profile.get('access_key_id'),

alibabacloud_credentials/provider/ecs_ram_role.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
from alibabacloud_credentials.utils import parameter_helper as ph
1515
from alibabacloud_credentials.exceptions import CredentialException
1616

17-
logging.basicConfig(level=logging.DEBUG)
1817
log = logging.getLogger(__name__)
18+
log.setLevel(logging.DEBUG)
1919

2020

2121
class EcsRamRoleCredentialsProvider(ICredentialsProvider):

alibabacloud_credentials/provider/refreshable.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
from alibabacloud_credentials.exceptions import CredentialException
1414
from alibabacloud_credentials_api import ICredentials
1515

16-
logging.basicConfig(level=logging.DEBUG)
1716
log = logging.getLogger(__name__)
17+
log.setLevel(logging.DEBUG)
1818

1919
T = TypeVar('T')
2020
INT64_MAX = 2 ** 63 - 1

tests/provider/test_cli_profile.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ def setUp(self):
3232
"access_key_id": "test_access_key_id",
3333
"access_key_secret": "test_access_key_secret"
3434
},
35+
{
36+
"name": "sts_token",
37+
"mode": "StsToken",
38+
"access_key_id": "test_access_key_id",
39+
"access_key_secret": "test_access_key_secret",
40+
"sts_token": "test_security_token"
41+
},
3542
{
3643
"name": "ram_role_profile",
3744
"mode": "RamRoleArn",
@@ -114,6 +121,23 @@ def test_get_credentials_valid_ak(self):
114121
self.assertIsNone(credentials.get_security_token())
115122
self.assertEqual(credentials.get_provider_name(), "cli_profile/static_ak")
116123

124+
def test_get_credentials_valid_sts(self):
125+
"""
126+
Test case 2: Valid input, successfully retrieves credentials for StsToken mode
127+
"""
128+
with patch('alibabacloud_credentials.provider.cli_profile.au.environment_cli_profile_disabled', 'False'):
129+
with patch('os.path.exists', return_value=True):
130+
with patch('os.path.isfile', return_value=True):
131+
with patch('alibabacloud_credentials.provider.cli_profile._load_config', return_value=self.config):
132+
provider = CLIProfileCredentialsProvider(profile_name='sts_token')
133+
134+
credentials = provider.get_credentials()
135+
136+
self.assertEqual(credentials.get_access_key_id(), self.access_key_id)
137+
self.assertEqual(credentials.get_access_key_secret(), self.access_key_secret)
138+
self.assertEqual(credentials.get_security_token(), self.security_token)
139+
self.assertEqual(credentials.get_provider_name(), "cli_profile/static_sts")
140+
117141
def test_get_credentials_valid_ram_role_arn(self):
118142
"""
119143
Test case 3: Valid input, successfully retrieves credentials for RamRoleArn mode

0 commit comments

Comments
 (0)