|
6 | 6 |
|
7 | 7 | from aiokafka.producer import AIOKafkaProducer |
8 | 8 | from aiokafka.consumer import AIOKafkaConsumer |
| 9 | +from aiokafka.admin import AIOKafkaAdminClient |
9 | 10 |
|
10 | 11 | from aiokafka.errors import ( |
11 | 12 | TopicAuthorizationFailedError, GroupAuthorizationFailedError, |
@@ -74,6 +75,19 @@ async def consumer_factory(self, user="test", **kw): |
74 | 75 | await consumer.start() |
75 | 76 | return consumer |
76 | 77 |
|
| 78 | + async def admin_client_factory(self, user="test", **kw): |
| 79 | + admin_client = AIOKafkaAdminClient( |
| 80 | + bootstrap_servers=[self.sasl_hosts], |
| 81 | + security_protocol="SASL_PLAINTEXT", |
| 82 | + sasl_mechanism="PLAIN", |
| 83 | + sasl_plain_username=user, |
| 84 | + sasl_plain_password=user, |
| 85 | + **kw |
| 86 | + ) |
| 87 | + self.add_cleanup(admin_client.close) |
| 88 | + await admin_client.start() |
| 89 | + return admin_client |
| 90 | + |
77 | 91 | async def gssapi_producer_factory(self, **kw): |
78 | 92 | if self.kafka_version == "0.9.0.1": |
79 | 93 | kw['api_version'] = "0.9" |
@@ -110,6 +124,21 @@ async def gssapi_consumer_factory(self, **kw): |
110 | 124 | await consumer.start() |
111 | 125 | return consumer |
112 | 126 |
|
| 127 | + async def gssapi_admin_client_factory(self, **kw): |
| 128 | + if self.kafka_version == "0.9.0.1": |
| 129 | + kw['api_version'] = "0.9" |
| 130 | + |
| 131 | + admin_client = AIOKafkaAdminClient( |
| 132 | + bootstrap_servers=[self.sasl_hosts], |
| 133 | + security_protocol="SASL_PLAINTEXT", |
| 134 | + sasl_mechanism="GSSAPI", |
| 135 | + sasl_kerberos_domain_name="localhost", |
| 136 | + **kw |
| 137 | + ) |
| 138 | + self.add_cleanup(admin_client.close) |
| 139 | + await admin_client.start() |
| 140 | + return admin_client |
| 141 | + |
113 | 142 | async def scram_producer_factory(self, user="test", **kw): |
114 | 143 | producer = AIOKafkaProducer( |
115 | 144 |
|
@@ -142,6 +171,19 @@ async def scram_consumer_factory(self, user="test", **kw): |
142 | 171 | await consumer.start() |
143 | 172 | return consumer |
144 | 173 |
|
| 174 | + async def scram_admin_client_factory(self, user="test", **kw): |
| 175 | + admin_client = AIOKafkaAdminClient( |
| 176 | + bootstrap_servers=[self.sasl_hosts], |
| 177 | + security_protocol="SASL_PLAINTEXT", |
| 178 | + sasl_mechanism="SCRAM-SHA-256", |
| 179 | + sasl_plain_username=user, |
| 180 | + sasl_plain_password=user, |
| 181 | + **kw |
| 182 | + ) |
| 183 | + self.add_cleanup(admin_client.close) |
| 184 | + await admin_client.start() |
| 185 | + return admin_client |
| 186 | + |
145 | 187 | @kafka_versions('>=0.10.0') |
146 | 188 | @run_until_complete |
147 | 189 | async def test_sasl_plaintext_basic(self): |
@@ -181,6 +223,29 @@ async def test_sasl_plaintext_scram(self): |
181 | 223 | msg = await consumer.getone() |
182 | 224 | self.assertEqual(msg.value, b"Super scram msg") |
183 | 225 |
|
| 226 | + @kafka_versions('>=0.10.0') |
| 227 | + @run_until_complete |
| 228 | + async def test_admin_client_sasl_plaintext_basic(self): |
| 229 | + admin_client = await self.admin_client_factory() |
| 230 | + cluster_info = await admin_client.describe_cluster() |
| 231 | + self.assertGreaterEqual(len(cluster_info["brokers"]), 1) |
| 232 | + |
| 233 | + @kafka_versions('>=0.10.0') |
| 234 | + @run_until_complete |
| 235 | + async def test_admin_client_sasl_plaintext_gssapi(self): |
| 236 | + self.kerberos_utils.kinit("client/localhost") |
| 237 | + admin_client = await self.gssapi_admin_client_factory() |
| 238 | + cluster_info = await admin_client.describe_cluster() |
| 239 | + self.assertGreaterEqual(len(cluster_info["brokers"]), 1) |
| 240 | + |
| 241 | + @kafka_versions('>=0.10.0') |
| 242 | + @run_until_complete |
| 243 | + async def test_admin_client_sasl_plaintext_scrum(self): |
| 244 | + self.kafka_config.add_scram_user("test", "test") |
| 245 | + admin_client = await self.scram_admin_client_factory() |
| 246 | + cluster_info = await admin_client.describe_cluster() |
| 247 | + self.assertGreaterEqual(len(cluster_info["brokers"]), 1) |
| 248 | + |
184 | 249 | ########################################################################## |
185 | 250 | # Topic Resource |
186 | 251 | ########################################################################## |
|
0 commit comments