Skip to content

Commit 2317074

Browse files
nivi-applepull[bot]
authored andcommitted
Check the onboarding payload code type in MTROnboardingPayloadParser (#22024)
1 parent 223e16e commit 2317074

File tree

4 files changed

+5
-80
lines changed

4 files changed

+5
-80
lines changed

examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm

+1-6
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,7 @@
6262
NSError * error;
6363
MTRSetupPayload * payload;
6464
MTROnboardingPayloadType codeType;
65-
if (IsQRCode(codeString)) {
66-
codeType = MTROnboardingPayloadTypeQRCode;
67-
} else {
68-
codeType = MTROnboardingPayloadTypeManualCode;
69-
}
70-
payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:codeString ofType:codeType error:&error];
65+
payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:codeString error:&error];
7166
if (error) {
7267
LogNSError("Error: ", error);
7368
return CHIP_ERROR_INTERNAL;

src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ typedef NS_ENUM(NSUInteger, MTROnboardingPayloadType) {
3131
@interface MTROnboardingPayloadParser : NSObject
3232

3333
+ (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboardingPayload
34-
ofType:(MTROnboardingPayloadType)type
3534
error:(NSError * __autoreleasing *)error;
3635

3736
@end

src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@
2323
@implementation MTROnboardingPayloadParser
2424

2525
+ (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboardingPayload
26-
ofType:(MTROnboardingPayloadType)type
2726
error:(NSError * __autoreleasing *)error
2827
{
2928
MTRSetupPayload * payload;
29+
// MTROnboardingPayloadTypeNFC is of type QR code and handled same as QR code
30+
MTROnboardingPayloadType type
31+
= isQRCode(onboardingPayload) ? MTROnboardingPayloadTypeQRCode : MTROnboardingPayloadTypeManualCode;
3032
switch (type) {
3133
case MTROnboardingPayloadTypeManualCode:
32-
case MTROnboardingPayloadTypeAdmin:
3334
payload = [self setupPayloadForManualCodeOnboardingPayload:onboardingPayload error:error];
3435
break;
3536
case MTROnboardingPayloadTypeQRCode:
36-
case MTROnboardingPayloadTypeNFC:
3737
payload = [self setupPayloadForQRCodeOnboardingPayload:onboardingPayload error:error];
3838
break;
3939
default:

src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m

+1-70
Original file line numberDiff line numberDiff line change
@@ -38,40 +38,7 @@ @implementation MTRSetupPayloadParserTests
3838
- (void)testOnboardingPayloadParser_Manual_NoError
3939
{
4040
NSError * error;
41-
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015"
42-
ofType:MTROnboardingPayloadTypeManualCode
43-
error:&error];
44-
45-
XCTAssertNotNil(payload);
46-
XCTAssertNil(error);
47-
48-
XCTAssertTrue(payload.hasShortDiscriminator);
49-
XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 10);
50-
XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 123456780);
51-
XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 1);
52-
XCTAssertEqual(payload.productID.unsignedIntegerValue, 1);
53-
XCTAssertEqual(payload.commissioningFlow, MTRCommissioningFlowCustom);
54-
XCTAssertEqual(payload.version.unsignedIntegerValue, 0);
55-
XCTAssertNil(payload.rendezvousInformation);
56-
}
57-
58-
- (void)testOnboardingPayloadParser_Manual_WrongType
59-
{
60-
NSError * error;
61-
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015"
62-
ofType:MTROnboardingPayloadTypeQRCode
63-
error:&error];
64-
65-
XCTAssertNil(payload);
66-
XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument);
67-
}
68-
69-
- (void)testOnboardingPayloadParser_Admin_NoError
70-
{
71-
NSError * error;
72-
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015"
73-
ofType:MTROnboardingPayloadTypeAdmin
74-
error:&error];
41+
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" error:&error];
7542

7643
XCTAssertNotNil(payload);
7744
XCTAssertNil(error);
@@ -86,22 +53,10 @@ - (void)testOnboardingPayloadParser_Admin_NoError
8653
XCTAssertNil(payload.rendezvousInformation);
8754
}
8855

89-
- (void)testOnboardingPayloadParser_Admin_WrongType
90-
{
91-
NSError * error;
92-
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015"
93-
ofType:MTROnboardingPayloadTypeQRCode
94-
error:&error];
95-
96-
XCTAssertNil(payload);
97-
XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument);
98-
}
99-
10056
- (void)testOnboardingPayloadParser_QRCode_NoError
10157
{
10258
NSError * error;
10359
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000"
104-
ofType:MTROnboardingPayloadTypeQRCode
10560
error:&error];
10661

10762
XCTAssertNotNil(payload);
@@ -118,23 +73,11 @@ - (void)testOnboardingPayloadParser_QRCode_NoError
11873
XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP);
11974
}
12075

121-
- (void)testOnboardingPayloadParser_QRCode_WrongType
122-
{
123-
NSError * error;
124-
MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000"
125-
ofType:MTROnboardingPayloadTypeAdmin
126-
error:&error];
127-
128-
XCTAssertNil(payload);
129-
XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed);
130-
}
131-
13276
- (void)testOnboardingPayloadParser_NFC_NoError
13377
{
13478
NSError * error;
13579
MTRSetupPayload * payload = [MTROnboardingPayloadParser
13680
setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J0A33P0SET70.QT52B.E23-WZE0WISA0DK5N1K8SQ1RYCU1O0"
137-
ofType:MTROnboardingPayloadTypeNFC
13881
error:&error];
13982

14083
XCTAssertNotNil(payload);
@@ -151,18 +94,6 @@ - (void)testOnboardingPayloadParser_NFC_NoError
15194
XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP);
15295
}
15396

154-
- (void)testOnboardingPayloadParser_NFC_WrongType
155-
{
156-
NSError * error;
157-
MTRSetupPayload * payload = [MTROnboardingPayloadParser
158-
setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J0A33P0SET70.QT52B.E23-WZE0WISA0DK5N1K8SQ1RYCU1O0"
159-
ofType:MTROnboardingPayloadTypeManualCode
160-
error:&error];
161-
162-
XCTAssertNil(payload);
163-
XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed);
164-
}
165-
16697
- (void)testManualParser
16798
{
16899
NSError * error;

0 commit comments

Comments
 (0)