Commit 4475695 1 parent 10c124a commit 4475695 Copy full SHA for 4475695
File tree 2 files changed +22
-7
lines changed
2 files changed +22
-7
lines changed Original file line number Diff line number Diff line change @@ -385,24 +385,25 @@ public class OptableSDK: NSObject {
385
385
//
386
386
@objc
387
387
public func eidFromURL( _ urlString: String ) -> String {
388
- let url = URL ( string: urlString)
389
- let urlc = URLComponents ( url: url!, resolvingAgainstBaseURL: false )
388
+ guard let url = URL ( string: urlString) else { return " " }
389
+ guard let urlc = URLComponents ( url: url, resolvingAgainstBaseURL: false ) else { return " " }
390
+ guard let urlqis = urlc. queryItems else { return " " }
390
391
391
392
// Look for an oeid parameter in the urlString:
392
393
var oeid = " "
393
- for qi : URLQueryItem in ( urlc ? . queryItems ) ! {
394
- if qi. value == nil {
394
+ for qi : URLQueryItem in urlqis {
395
+ guard let val = qi. value else {
395
396
continue
396
397
}
397
398
if qi. name. lowercased ( ) == " oeid " {
398
- oeid = qi . value!
399
+ oeid = val
399
400
break
400
401
}
401
402
}
402
403
403
404
// Check that oeid looks like a valid SHA256:
404
405
let range = NSRange ( location: 0 , length: oeid. utf16. count)
405
- let regex = try ! NSRegularExpression ( pattern: " [a-f0-9]{64} " , options: . caseInsensitive)
406
+ guard let regex = try ? NSRegularExpression ( pattern: " [a-f0-9]{64} " , options: . caseInsensitive) else { return " " }
406
407
if ( oeid. count != 64 ) || ( regex. firstMatch ( in: oeid, options: [ ] , range: range) == nil ) {
407
408
return " "
408
409
}
Original file line number Diff line number Diff line change @@ -71,13 +71,27 @@ class OptableSDKTests: XCTestCase {
71
71
XCTAssertEqual ( expected, sdk. eidFromURL ( url) )
72
72
}
73
73
74
- func test_eidFromURL_returnsEmptyWhenOeidAbsent( ) throws {
74
+ func test_eidFromURL_returnsEmptyWhenArgEmpty( ) throws {
75
+ let url = " "
76
+ let expected = " "
77
+
78
+ XCTAssertEqual ( expected, sdk. eidFromURL ( url) )
79
+ }
80
+
81
+ func test_eidFromURL_returnsEmptyWhenOeidAbsentFromQuerystring( ) throws {
75
82
let url = " http://some.domain.com/some/path?some=query&something=else "
76
83
let expected = " "
77
84
78
85
XCTAssertEqual ( expected, sdk. eidFromURL ( url) )
79
86
}
80
87
88
+ func test_eidFromURL_returnsEmptyWhenQuerystringAbsent( ) throws {
89
+ let url = " http://some.domain.com/some/path "
90
+ let expected = " "
91
+
92
+ XCTAssertEqual ( expected, sdk. eidFromURL ( url) )
93
+ }
94
+
81
95
func test_eidFromURL_expectsSHA256( ) throws {
82
96
let url = " http://some.domain.com/some/path?some=query&something=else&oeid=AAAAAAAa665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3&foo=bar&baz "
83
97
let expected = " "
You can’t perform that action at this time.
0 commit comments