summaryrefslogtreecommitdiff
path: root/tests/test_sasl_mechanism.c
blob: 9e7aef0aa29da1d48dd1d77e73c3c8811eddfa80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
// SPDX-License-Identifier: mit

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <amqp_socket.h>

static void parse_success(amqp_bytes_t mechanisms,
                          amqp_sasl_method_enum method) {
  if (!sasl_mechanism_in_list(mechanisms, method)) {
    fprintf(stderr, "Expected to find mechanism in list, but didn't: %s\n",
            (char *)mechanisms.bytes);
    abort();
  }
}

static void parse_fail(amqp_bytes_t mechanisms, amqp_sasl_method_enum method) {
  if (sasl_mechanism_in_list(mechanisms, method)) {
    fprintf(stderr,
            "Expected the mechanism not on the list, but it was present: %s\n",
            (char *)mechanisms.bytes);
    abort();
  }
}

int main(void) {
  parse_success(amqp_cstring_bytes("DIGEST-MD5 CRAM-MD5 LOGIN PLAIN"),
                AMQP_SASL_METHOD_PLAIN);
  parse_fail(amqp_cstring_bytes("DIGEST-MD5 CRAM-MD5 LOGIN PLAIN"),
             AMQP_SASL_METHOD_EXTERNAL);
  parse_success(amqp_cstring_bytes("DIGEST-MD5 CRAM-MD5 EXTERNAL"),
                AMQP_SASL_METHOD_EXTERNAL);
  parse_fail(amqp_cstring_bytes("DIGEST-MD5 CRAM-MD5 EXTERNAL"),
             AMQP_SASL_METHOD_PLAIN);
  return 0;
}