Skip to content
This repository has been archived by the owner on Oct 2, 2021. It is now read-only.

Commit

Permalink
Merge pull request #46 from hwillson/issue-8
Browse files Browse the repository at this point in the history
Test plugin improvements
  • Loading branch information
abernix committed Feb 8, 2018
2 parents 7de88a0 + a7d4868 commit 3e636e9
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 10 deletions.
76 changes: 76 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# `cordova-plugin-meteor-webapp` Development

## Running iOS Tests

1) Start with a cloned copy of the `cordova-plugin-meteor-webapp` repo:

```
cd ~
git clone https://github.com/meteor/cordova-plugin-meteor-webapp.git
```

2) Make sure the `GCDWebServer` submodule is pulled in:

```
cd cordova-plugin-meteor-webapp
git submodule update --init --recursive
```

3) Create a new test Cordova app:

```
cd ~
cordova create test-app
```

4) Add the `cordova-plugin-meteor-webapp`, `cordova-plugin-meteor-webapp-tests`, and `cordova-plugin-test-framework` plugins:

```
cd test-app
cordova plugin add https://github.com/apache/cordova-plugin-test-framework.git
cordova plugin add ../cordova-plugin-meteor-webapp/
cordova plugin add ../cordova-plugin-meteor-webapp/tests
```

5) Add the `ios` platform:

```
cordova platform add ios
```

6) Add a [`build.json`](https://cordova.apache.org/docs/en/latest/guide/platforms/ios/#using-buildjson) file to the root of your `test-app`, that includes your Apple Developer Team ID:

```json
{
"ios": {
"debug": {
"developmentTeam": "ABC123DEF456"
},
"release": {
"developmentTeam": "ABC123DEF456",
"codeSignIdentity": "iPhone Developer",
"packageType": "ad-hoc"
}
}
}
```

7) Update the `test-app`'s `config.xml` to point to the test runner:

Change

```xml
<content src="index.html" />
```

to

```xml
<content src="cdvtests/index.html" />
```

8) Run the tests on a device or using the iOS emulator:

```
cordova emulate ios
```
24 changes: 24 additions & 0 deletions tests/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "cordova-plugin-meteor-webapptests",
"version": "1.3.1",
"cordova": {
"id": "cordova-plugin-meteor-webapp-tests",
"platforms": [
"android",
"ios"
]
},
"repository": {
"type": "git",
"url": "https://github.com/meteor/cordova-plugin-meteor-webapp"
},
"keywords": [
"cordova",
"meteor",
"ecosystem:cordova",
"cordova-android",
"cordova-ios"
],
"author": "Meteor Development Group",
"license": "MIT"
}
4 changes: 2 additions & 2 deletions tests/plugin.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="cordova-plugin-meteor-webapp-tests"
version="1.3.0">
version="1.3.1">
<name>Meteor Webapp Tests</name>
<author>Meteor Development Group</author>
<license>MIT</license>
Expand Down Expand Up @@ -31,7 +31,7 @@
</config-file>

<platform name="ios">
<hook type="after_plugin_install" src="../scripts/iosAddBridgingHeader.js" />
<hook type="after_plugin_install" src="../cordova-plugin-meteor-webapp/scripts/iosAddBridgingHeader.js" />

<config-file target="config.xml" parent="/*">
<feature name="WebAppMockRemoteServer">
Expand Down
16 changes: 8 additions & 8 deletions tests/src/ios/WebAppMockRemoteServer.swift
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
extension Data {
func SHA1() -> String {
var digest = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))

withUnsafeBytes { (bytes) -> Void in
CC_SHA1(bytes, CC_LONG(count), &digest)
}

var hexString = ""
for index in 0..<digest.count {
hexString += String(format: "%02x", digest[index])
Expand Down Expand Up @@ -73,25 +73,25 @@ class WebAppMockRemoteServer: CDVPlugin, GCDWebServerTestingDelegate {

server.addHandler(match: {(requestMethod, requestURL, requestHeaders, URLPath, URLQuery) -> GCDWebServerRequest! in
if requestMethod != "GET" { return nil }
if !(URLPath?.hasPrefix(basePath))! { return nil }
if !(URLPath.hasPrefix(basePath)) { return nil }

let request = GCDWebServerRequest(method: requestMethod, url: requestURL, headers: requestHeaders, path: URLPath, query: URLQuery)
return request
}) { (request) -> GCDWebServerResponse! in
let URLPath = request?.path.substring(from: basePath.endIndex)
let fileURL = self.versionDirectoryURL.appendingPathComponent(URLPath!)
let URLPath = request.path.substring(from: basePath.endIndex)
let fileURL = self.versionDirectoryURL.appendingPathComponent(URLPath)

var response: GCDWebServerResponse

var isDirectory = ObjCBool(false)
if fileManager.fileExists(atPath: fileURL.path, isDirectory: &isDirectory)
&& !isDirectory.boolValue {
response = GCDWebServerFileResponse(file: fileURL.path)
response = GCDWebServerFileResponse(file: fileURL.path)!
let fileHash = (try! Data(contentsOf: fileURL)).SHA1()
response.eTag = "\"\(fileHash)\""
} else if request?.query["meteor_dont_serve_index"] == nil {
} else if request.query!["meteor_dont_serve_index"] == nil {
let indexFileURL = self.versionDirectoryURL.appendingPathComponent("index.html")
response = GCDWebServerFileResponse(file: indexFileURL.path)
response = GCDWebServerFileResponse(file: indexFileURL.path)!
} else {
response = GCDWebServerResponse(statusCode: GCDWebServerClientErrorHTTPStatusCode.httpStatusCode_NotFound.rawValue)
}
Expand Down

0 comments on commit 3e636e9

Please sign in to comment.