Skip to content

Commit

Permalink
Merge branch 'develop' into NR-308480
Browse files Browse the repository at this point in the history
  • Loading branch information
mbruin-NR authored Oct 9, 2024
2 parents 01b7c29 + e66a6dd commit 3811ede
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 5 deletions.
1 change: 1 addition & 0 deletions Agent/Analytics/NRMAAnalytics.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,6 @@

+ (int64_t) currentTimeMillis;
+ (NSArray<NSString*>*) reservedKeywords;
+ (NSArray<NSString*>*) reservedPrefixes;

@end
10 changes: 10 additions & 0 deletions Agent/Analytics/NRMAAnalytics.mm
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,14 @@ - (id) initWithSessionStartTimeMS:(long long) sessionStartTime {
NRLOG_AGENT_ERROR(@"invalid attribute: name prefix disallowed");
return false;
}
}
for (NSString* key in [NRMAAnalytics reservedPrefixes]) {
if ([name hasPrefix:key]) {
NRLOG_AGENT_ERROR(@"invalid attribute: name prefix disallowed");
return false;
}
}

// check if attribute name exceeds max length.
if ([name length] > kNRMA_Attrib_Max_Name_Length) {
NRLOG_AGENT_ERROR(@"invalid attribute: name length exceeds limit");
Expand Down Expand Up @@ -1269,4 +1272,11 @@ + (int64_t) currentTimeMillis {
,nil];
}

+ (NSArray<NSString*>*) reservedPrefixes {
return [NSArray arrayWithObjects:
kNRMA_RP_newRelic,
kNRMA_RP_nr,
nil];
}

@end
25 changes: 20 additions & 5 deletions Tests/Unit-Tests/NewRelicAgentTests/Analytics-Tests/NRMASAMTest.mm
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,14 @@ - (NRMASAM*) samTest {
// check if attribute name is reserved or attribute name matches reserved prefix.
for (NSString* key in [NRMAAnalytics reservedKeywords]) {
if ([key isEqualToString:name]) {
NRLOG_AGENT_ERROR(@"invalid attribute: name prefix disallowed");
NRLOG_AGENT_ERROR(@"invalid attribute: name disallowed");
return NO;
}
if ([key hasPrefix:name]) {
}
for (NSString* key in [NRMAAnalytics reservedPrefixes]) {
if ([name hasPrefix:key]) {
NRLOG_AGENT_ERROR(@"invalid attribute: name prefix disallowed");
return NO;
return false;
}
}
// check if attribute name exceeds max length.
Expand Down Expand Up @@ -91,6 +93,19 @@ - (void) testSetSessionAttribute {
XCTAssertTrue([decode[@"blarg"] isEqualToString:@"blurg"]);
}

- (void) testSetSessionAttributeFail {
XCTAssertFalse([manager setSessionAttribute:@"platform" value:@"blurg"], @"Failed to successfully find reserved key for session attribute");

XCTAssertFalse([manager setSessionAttribute:@"nr.test" value:@"blurg"], @"Failed to successfully find reserved prefix key for session attribute");

NSString* attributes = [manager sessionAttributeJSONString];

NSDictionary* decode = [NSJSONSerialization JSONObjectWithData:[attributes dataUsingEncoding:NSUTF8StringEncoding]
options:0
error:nil];
XCTAssertNil(decode[@"platform"]);
}

- (void) testSetNRSessionAttribute {
XCTAssertTrue([manager setNRSessionAttribute:@"blarg" value:@"blurg"], @"Failed to successfully set session attribute");

Expand Down Expand Up @@ -280,8 +295,8 @@ -(void) testSetSessionAttributeNameFailed {
XCTAssertFalse([manager setSessionAttribute:@" x" value:@"blurg"], @"Failed to successfully fail when setting invalid name for session attribute");
XCTAssertFalse([manager setSessionAttribute:@" " value:@"blurg"], @"Failed to successfully fail when setting invalid name for session attribute");

XCTAssertFalse([manager setSessionAttribute:@"even" value:@"blurg"], @"Failed to successfully fail when setting invalid name for session attribute");
XCTAssertFalse([manager setSessionAttribute:@"event" value:@"blurg"], @"Failed to successfully fail when setting invalid name for session attribute");
XCTAssertFalse([manager setSessionAttribute:@"newRelictest" value:@"blurg"], @"Failed to successfully fail when setting invalid name for session attribute");
XCTAssertFalse([manager setSessionAttribute:@"nr.test" value:@"blurg"], @"Failed to successfully fail when setting invalid name for session attribute");

// Test Max Attribute Length
NSString *validAttributeName = [@"" stringByPaddingToLength:kNRMA_Attrib_Max_Name_Length withString:@"x" startingAtIndex:0];
Expand Down

0 comments on commit 3811ede

Please sign in to comment.