A simple sample to show a problem with Unit Tests on the Command line using SSL
Our goal is to execute our Unit Tests within a Continuous Integration environment (Jenkins)
(I believe it is essential for every question to state what exactly one is trying to achieve. Maybe the problem can actually be solved a very different way)
Running tests from the command line sounds pretty straighforward, but
xcodebuild -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO clean test
results in an ugly error:
unsupported build action 'test'
So I searched the web and found this article on Running OCUnit Tests from Command Line.
I followed all the steps, and I can run my tests from the command line like this:
xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
However, now any NSURLConnection to an SSL Server will fail, because "The certificate for this server is invalid.". I have heared about keychain issues when running tests from the command line, but can this be true? Any SSL connection is refused?
Get the sample at https://github.com/below/SSLTestDemo. Open it up, and run the sample test using Xcode's own Test ⌘U command. The test should succeed.
Now run the test on the command line:
xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
The test fails due to the "The certificate for this server is invalid." error.
- Am I doing it wrong?
- Is this a genuine bug?
- If so, are there workaroungs?
Any input is appreciated!
To the extent possible under law, Alexander von Below has waived all copyright and related or neighboring rights to SSLTestDemo. This work is published from: Germany.