Skip to content

Commit 745c2d8

Browse files
committed
feat: add test for EXTERNAL auth
1 parent 122e14d commit 745c2d8

File tree

7 files changed

+64
-8
lines changed

7 files changed

+64
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ dist/
22
node_modules/
33
performance_test/node_modules
44
.envrc
5+
tls-gen/

Makefile

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,16 @@ rabbitmq-cluster:
66
cd cluster; docker build -t haproxy-rabbitmq-cluster .
77
cd cluster; chmod 755 -R tls-gen
88
cd cluster; docker compose down
9-
cd cluster; docker compose up -d
9+
cd cluster; docker compose up -d
10+
11+
rabbitmq-test:
12+
rm -rf tls-gen;
13+
git clone https://github.com/rabbitmq/tls-gen tls-gen; cd tls-gen/basic; CN=rabbitmq make
14+
chmod 755 -R tls-gen
15+
docker compose down
16+
docker compose up -d
17+
sleep 5
18+
docker exec rabbitmq-stream rabbitmqctl await_startup
19+
docker exec rabbitmq-stream rabbitmqctl add_user 'O=client,CN=rabbitmq' ''
20+
docker exec rabbitmq-stream rabbitmqctl clear_password 'O=client,CN=rabbitmq'
21+
docker exec rabbitmq-stream rabbitmqctl set_permissions 'O=client,CN=rabbitmq' '.*' '.*' '.*'

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ npm i
374374
run the docker-compose to launch a rabbit instance already stream enabled
375375

376376
```shell
377-
docker-compose up -d
377+
make rabbitmq-test
378378
```
379379

380380
add this line to your host file (on linux `/etc/hosts`) to correctly resolve rabbitmq
@@ -400,7 +400,7 @@ npm run build
400400
Test:
401401

402402
```shell
403-
docker-compose up -d
403+
make rabbitmq-test
404404
npm run test
405405
```
406406

conf/enabled_plugins

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[rabbitmq_management,rabbitmq_prometheus,rabbitmq_stream_management].
1+
[rabbitmq_management,rabbitmq_prometheus,rabbitmq_stream_management,rabbitmq_auth_mechanism_ssl].

conf/rabbitmq.conf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
loopback_users.guest = false
2+
3+
ssl_options.cacertfile = /certs/ca_certificate.pem
4+
ssl_options.certfile = /certs/server_rabbitmq_certificate.pem
5+
ssl_options.keyfile = /certs/server_rabbitmq_key.pem
6+
listeners.ssl.default = 5671
7+
listeners.tcp.default = 5672
8+
stream.listeners.tcp.default = 5552
9+
stream.listeners.ssl.default = 5551
10+
auth_mechanisms.1 = PLAIN
11+
auth_mechanisms.2 = EXTERNAL
12+
ssl_options.verify = verify_peer
13+
ssl_options.fail_if_no_peer_cert = false
14+
log.file.level = debug
15+
log.console = true

docker-compose.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
version: "2"
2-
31
services:
42
rabbitmq-stream:
53
image: rabbitmq:3.13-rc-management
@@ -8,10 +6,13 @@ services:
86
hostname: "rabbitmq"
97
ports:
108
- "15672:15672"
9+
- "5671:5671"
1110
- "5672:5672"
11+
- "5551:5551"
1212
- "5552:5552"
1313
environment:
1414
RABBITMQ_DEFAULT_USER: "rabbit"
1515
RABBITMQ_DEFAULT_PASS: "rabbit"
1616
volumes:
17-
- ./conf/enabled_plugins:/etc/rabbitmq/enabled_plugins
17+
- ./conf/:/etc/rabbitmq/
18+
- "./tls-gen/basic/result/:/certs"

test/e2e/connect.test.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,29 @@
11
import { expect } from "chai"
2-
import { Client } from "../../src"
2+
import { Client, connect } from "../../src"
33
import { createClient } from "../support/fake_data"
44
import { Rabbit } from "../support/rabbit"
55
import { eventually, username, password } from "../support/util"
6+
import { getTestNodesFromEnv } from "../support/util"
67
import { Version } from "../../src/versions"
78
import { randomUUID } from "node:crypto"
9+
import { readFile } from "node:fs/promises"
10+
11+
async function createTlsClient(): Promise<Client> {
12+
const [firstNode] = getTestNodesFromEnv()
13+
return connect(
14+
{
15+
hostname: firstNode.host,
16+
port: 5551,
17+
mechanism: 'EXTERNAL',
18+
ssl: {
19+
ca: await readFile("./tls-gen/basic/result/ca_certificate.pem"),
20+
cert: await readFile("./tls-gen/basic/result/client_rabbitmq_certificate.pem"),
21+
key: await readFile("./tls-gen/basic/result/client_rabbitmq_key.pem"),
22+
},
23+
vhost: "/",
24+
}
25+
)
26+
}
827

928
describe("connect", () => {
1029
let client: Client
@@ -28,6 +47,14 @@ describe("connect", () => {
2847
}, 5000)
2948
}).timeout(10000)
3049

50+
it("using EXTERNAL auth", async () => {
51+
client = await createTlsClient()
52+
53+
await eventually(async () => {
54+
expect(await rabbit.getConnections()).lengthOf(1)
55+
}, 5000)
56+
}).timeout(10000)
57+
3158
it("declaring connection name", async () => {
3259
const connectionName = `connection-name-${randomUUID()}`
3360
client = await createClient(username, password, undefined, undefined, undefined, undefined, connectionName)

0 commit comments

Comments
 (0)