/*
* Copyright 2012-2016 the original author or authors.
*
* 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 org.springframework.boot.autoconfigure.amqp;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link RabbitProperties}.
*
* @author Dave Syer
* @author Andy Wilkinson
*/
public class RabbitPropertiesTests {
private final RabbitProperties properties = new RabbitProperties();
@Test
public void hostDefaultsToLocalhost() {
assertThat(this.properties.getHost()).isEqualTo("localhost");
}
@Test
public void customHost() {
this.properties.setHost("rabbit.example.com");
assertThat(this.properties.getHost()).isEqualTo("rabbit.example.com");
}
@Test
public void hostIsDeterminedFromFirstAddress() {
this.properties.setAddresses("rabbit1.example.com:1234,rabbit2.example.com:2345");
assertThat(this.properties.determineHost()).isEqualTo("rabbit1.example.com");
}
@Test
public void determineHostReturnsHostPropertyWhenNoAddresses() {
this.properties.setHost("rabbit.example.com");
assertThat(this.properties.determineHost()).isEqualTo("rabbit.example.com");
}
@Test
public void portDefaultsTo5672() {
assertThat(this.properties.getPort()).isEqualTo(5672);
}
@Test
public void customPort() {
this.properties.setPort(1234);
assertThat(this.properties.getPort()).isEqualTo(1234);
}
@Test
public void determinePortReturnsPortOfFirstAddress() {
this.properties.setAddresses("rabbit1.example.com:1234,rabbit2.example.com:2345");
assertThat(this.properties.determinePort()).isEqualTo(1234);
}
@Test
public void determinePortReturnsPortPropertyWhenNoAddresses() {
this.properties.setPort(1234);
assertThat(this.properties.determinePort()).isEqualTo(1234);
}
@Test
public void determinePortReturnsDefaultAmqpPortWhenFirstAddressHasNoExplicitPort() {
this.properties.setPort(1234);
this.properties.setAddresses("rabbit1.example.com,rabbit2.example.com:2345");
assertThat(this.properties.determinePort()).isEqualTo(5672);
}
@Test
public void virtualHostDefaultsToNull() {
assertThat(this.properties.getVirtualHost()).isNull();
}
@Test
public void customVirtualHost() {
this.properties.setVirtualHost("alpha");
assertThat(this.properties.getVirtualHost()).isEqualTo("alpha");
}
@Test
public void virtualHostRetainsALeadingSlash() {
this.properties.setVirtualHost("/alpha");
assertThat(this.properties.getVirtualHost()).isEqualTo("/alpha");
}
@Test
public void determineVirtualHostReturnsVirtualHostOfFirstAddress() {
this.properties.setAddresses(
"rabbit1.example.com:1234/alpha,rabbit2.example.com:2345/bravo");
assertThat(this.properties.determineVirtualHost()).isEqualTo("alpha");
}
@Test
public void determineVirtualHostReturnsPropertyWhenNoAddresses() {
this.properties.setVirtualHost("alpha");
assertThat(this.properties.determineVirtualHost()).isEqualTo("alpha");
}
@Test
public void determineVirtualHostReturnsPropertyWhenFirstAddressHasNoVirtualHost() {
this.properties.setVirtualHost("alpha");
this.properties
.setAddresses("rabbit1.example.com:1234,rabbit2.example.com:2345/bravo");
assertThat(this.properties.determineVirtualHost()).isEqualTo("alpha");
}
@Test
public void determineVirtualHostIsSlashWhenAddressHasTrailingSlash() {
this.properties.setAddresses("amqp://root:password@otherhost:1111/");
assertThat(this.properties.determineVirtualHost()).isEqualTo("/");
}
@Test
public void emptyVirtualHostIsCoercedToASlash() {
this.properties.setVirtualHost("");
assertThat(this.properties.getVirtualHost()).isEqualTo("/");
}
@Test
public void usernameDefaultsToNull() {
assertThat(this.properties.getUsername()).isNull();
}
@Test
public void customUsername() {
this.properties.setUsername("user");
assertThat(this.properties.getUsername()).isEqualTo("user");
}
@Test
public void determineUsernameReturnsUsernameOfFirstAddress() {
this.properties.setAddresses("user:secret@rabbit1.example.com:1234/alpha,"
+ "rabbit2.example.com:2345/bravo");
assertThat(this.properties.determineUsername()).isEqualTo("user");
}
@Test
public void determineUsernameReturnsPropertyWhenNoAddresses() {
this.properties.setUsername("alice");
assertThat(this.properties.determineUsername()).isEqualTo("alice");
}
@Test
public void determineUsernameReturnsPropertyWhenFirstAddressHasNoUsername() {
this.properties.setUsername("alice");
this.properties.setAddresses("rabbit1.example.com:1234/alpha,"
+ "user:secret@rabbit2.example.com:2345/bravo");
assertThat(this.properties.determineUsername()).isEqualTo("alice");
}
@Test
public void passwordDefaultsToNull() {
assertThat(this.properties.getPassword()).isNull();
}
@Test
public void customPassword() {
this.properties.setPassword("secret");
assertThat(this.properties.getPassword()).isEqualTo("secret");
}
@Test
public void determinePasswordReturnsPasswordOfFirstAddress() {
this.properties.setAddresses("user:secret@rabbit1.example.com:1234/alpha,"
+ "rabbit2.example.com:2345/bravo");
assertThat(this.properties.determinePassword()).isEqualTo("secret");
}
@Test
public void determinePasswordReturnsPropertyWhenNoAddresses() {
this.properties.setPassword("secret");
assertThat(this.properties.determinePassword()).isEqualTo("secret");
}
@Test
public void determinePasswordReturnsPropertyWhenFirstAddressHasNoPassword() {
this.properties.setPassword("12345678");
this.properties.setAddresses("rabbit1.example.com:1234/alpha,"
+ "user:secret@rabbit2.example.com:2345/bravo");
assertThat(this.properties.determinePassword()).isEqualTo("12345678");
}
@Test
public void addressesDefaultsToNull() {
assertThat(this.properties.getAddresses()).isNull();
}
@Test
public void customAddresses() {
this.properties.setAddresses(
"user:secret@rabbit1.example.com:1234/alpha,rabbit2.example.com");
assertThat(this.properties.getAddresses()).isEqualTo(
"user:secret@rabbit1.example.com:1234/alpha,rabbit2.example.com");
}
@Test
public void determineAddressesReturnsAddressesWithJustHostAndPort() {
this.properties.setAddresses(
"user:secret@rabbit1.example.com:1234/alpha,rabbit2.example.com");
assertThat(this.properties.determineAddresses())
.isEqualTo("rabbit1.example.com:1234,rabbit2.example.com:5672");
}
@Test
public void determineAddressesUsesHostAndPortPropertiesWhenNoAddressesSet() {
this.properties.setHost("rabbit.example.com");
this.properties.setPort(1234);
assertThat(this.properties.determineAddresses())
.isEqualTo("rabbit.example.com:1234");
}
}