aboutsummaryrefslogtreecommitdiffhomepage
path: root/Example/Messaging/Tests/FIRMessagingPubSubTest.m
diff options
context:
space:
mode:
authorGravatar Paul Beusterien <paulbeusterien@google.com>2017-05-15 12:27:07 -0700
committerGravatar Paul Beusterien <paulbeusterien@google.com>2017-05-15 12:27:07 -0700
commit98ba64449a632518bd2b86fe8d927f4a960d3ddc (patch)
tree131d9c4272fa6179fcda6c5a33fcb3b1bd57ad2e /Example/Messaging/Tests/FIRMessagingPubSubTest.m
parent32461366c9e204a527ca05e6e9b9404a2454ac51 (diff)
Initial
Diffstat (limited to 'Example/Messaging/Tests/FIRMessagingPubSubTest.m')
-rw-r--r--Example/Messaging/Tests/FIRMessagingPubSubTest.m81
1 files changed, 81 insertions, 0 deletions
diff --git a/Example/Messaging/Tests/FIRMessagingPubSubTest.m b/Example/Messaging/Tests/FIRMessagingPubSubTest.m
new file mode 100644
index 0000000..2981b54
--- /dev/null
+++ b/Example/Messaging/Tests/FIRMessagingPubSubTest.m
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2017 Google
+ *
+ * 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.
+ */
+
+@import XCTest;
+
+#import "FIRMessagingPubSub.h"
+
+@interface FIRMessagingPubSubTest : XCTestCase
+@end
+
+@implementation FIRMessagingPubSubTest
+
+static NSString *const kTopicName = @"topic-Name";
+
+#pragma mark - topicMatchForSender tests
+
+/// Tests that an empty topic name is an invalid topic.
+- (void)testTopicMatchForEmptyTopicPrefix {
+ XCTAssertFalse([FIRMessagingPubSub isValidTopicWithPrefix:@""]);
+}
+
+/// Tests that a topic with an invalid prefix is not a valid topic name.
+- (void)testTopicMatchWithInvalidTopicPrefix {
+ XCTAssertFalse([FIRMessagingPubSub isValidTopicWithPrefix:@"/topics+abcdef/"]);
+}
+
+/// Tests that a topic with a valid prefix but invalid name is not a valid topic name.
+- (void)testTopicMatchWithValidTopicPrefixButInvalidName {
+ XCTAssertFalse([FIRMessagingPubSub isValidTopicWithPrefix:@"/topics/aaaaaa/topics/lala"]);
+}
+
+/// Tests that multiple backslashes in topics is an invalid topic name.
+- (void)testTopicMatchForInvalidTopicPrefix_multipleBackslash {
+ XCTAssertFalse([FIRMessagingPubSub isValidTopicWithPrefix:@"/topics//abc"]);
+}
+
+/// Tests a topic name with a valid prefix and name.
+- (void)testTopicMatchForValidTopicSender {
+ NSString *topic = [NSString stringWithFormat:@"/topics/%@", kTopicName];
+ XCTAssertTrue([FIRMessagingPubSub isValidTopicWithPrefix:topic]);
+}
+
+/// Tests topic prefix for topics with no prefix.
+- (void)testTopicHasNoTopicPrefix {
+ XCTAssertFalse([FIRMessagingPubSub hasTopicsPrefix:@""]);
+}
+
+/// Tests topic prefix for valid prefix.
+- (void)testTopicHasValidToicsPrefix {
+ XCTAssertTrue([FIRMessagingPubSub hasTopicsPrefix:@"/topics/"]);
+}
+
+/// Tests topic prefix wih no prefix.
+- (void)testAddTopicPrefix_withNoPrefix {
+ NSString *topic = [FIRMessagingPubSub addPrefixToTopic:@""];
+ XCTAssertTrue([FIRMessagingPubSub hasTopicsPrefix:topic]);
+ XCTAssertFalse([FIRMessagingPubSub isValidTopicWithPrefix:topic]);
+}
+
+/// Tests adding the "/topics/" prefix for topic name which already has a prefix.
+- (void)testAddTopicPrefix_withPrefix {
+ NSString *topic = [NSString stringWithFormat:@"/topics/%@", kTopicName];
+ topic = [FIRMessagingPubSub addPrefixToTopic:topic];
+ XCTAssertTrue([FIRMessagingPubSub hasTopicsPrefix:topic]);
+ XCTAssertTrue([FIRMessagingPubSub isValidTopicWithPrefix:topic]);
+}
+
+@end