Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit d73d24a

Browse files
committed
Merge pull request #4 from Microsoft/client-sdk-tests
Client sdk tests
2 parents adb8d42 + b4ad535 commit d73d24a

39 files changed

+1209
-215
lines changed

HybridMobileDeploy.android.js renamed to CodePush.android.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88

99
var warning = require('warning');
1010

11-
var HybridMobileDeploy = {
11+
var CodePush = {
1212
test: function() {
1313
warning("Not yet implemented for Android.");
1414
}
1515
};
1616

17-
module.exports = HybridMobileDeploy;
17+
module.exports = CodePush;

HybridMobileDeploy.h renamed to CodePush.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#import "RCTBridgeModule.h"
22

3-
@interface HybridMobileDeploy : NSObject <RCTBridgeModule>
3+
@interface CodePush : NSObject <RCTBridgeModule>
44

55
+ (NSURL *) getBundleUrl;
66

77
@end
88

9-
@interface HybridMobileDeployConfig : NSObject
9+
@interface CodePushConfig : NSObject
1010

1111
+ (void)setDeploymentKey:(NSString *)deploymentKey;
1212
+ (NSString *)getDeploymentKey;

HybridMobileDeploy.ios.js renamed to CodePush.ios.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,31 @@
11
/**
2-
* @providesModule HybridMobileDeploy
2+
* @providesModule CodePush
33
* @flow
44
*/
55

66
'use strict';
77

8-
var NativeHybridMobileDeploy = require('react-native').NativeModules.HybridMobileDeploy;
8+
var NativeCodePush = require('react-native').NativeModules.CodePush;
99
var requestFetchAdapter = require("./request-fetch-adapter.js");
1010
var semver = require('semver');
1111
var Sdk = require("code-push/script/acquisition-sdk").AcquisitionManager;
1212
var sdk;
1313
var config;
1414

15+
// This function is only used for tests. Replaces the default SDK, configuration and native bridge
16+
function setUpTestDependencies(testSdk, testConfiguration, testNativeBridge){
17+
if (testSdk) sdk = testSdk;
18+
if (testConfiguration) config = testConfiguration;
19+
if (testNativeBridge) NativeCodePush = testNativeBridge;
20+
}
21+
1522
function getConfiguration(callback) {
1623
if (config) {
1724
setImmediate(function() {
1825
callback(/*error=*/ null, config);
1926
});
2027
} else {
21-
NativeHybridMobileDeploy.getConfiguration(function(err, configuration) {
28+
NativeCodePush.getConfiguration(function(err, configuration) {
2229
if (err) callback(err);
2330
config = configuration;
2431
callback(/*error=*/ null, config);
@@ -44,7 +51,7 @@ function queryUpdate(callback) {
4451
if (err) callback(err);
4552
getSdk(function(err, sdk) {
4653
if (err) callback(err);
47-
NativeHybridMobileDeploy.getLocalPackage(function(err, localPackage) {
54+
NativeCodePush.getLocalPackage(function(err, localPackage) {
4855
var queryPackage = {appVersion: configuration.appVersion};
4956
if (!err && localPackage && localPackage.appVersion === configuration.appVersion) {
5057
queryPackage = localPackage;
@@ -61,13 +68,14 @@ function queryUpdate(callback) {
6168
function installUpdate(update) {
6269
// Use the downloaded package info. Native code will save the package info
6370
// so that the client knows what the current package version is.
64-
NativeHybridMobileDeploy.installUpdate(update, JSON.stringify(update), (err) => console.log(err));
71+
NativeCodePush.installUpdate(update, JSON.stringify(update), (err) => console.log(err));
6572
}
6673

67-
var HybridMobileDeploy = {
74+
var CodePush = {
6875
getConfiguration: getConfiguration,
6976
queryUpdate: queryUpdate,
70-
installUpdate: installUpdate
77+
installUpdate: installUpdate,
78+
setUpTestDependencies: setUpTestDependencies
7179
};
7280

73-
module.exports = HybridMobileDeploy;
81+
module.exports = CodePush;

HybridMobileDeploy.m renamed to CodePush.m

Lines changed: 62 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
1-
#import "HybridMobileDeploy.h"
1+
#import "CodePush.h"
22

33
#import "RCTBridgeModule.h"
44
#import "RCTRootView.h"
55
#import "RCTUtils.h"
66

7-
@implementation HybridMobileDeploy
7+
8+
@implementation CodePush
89

910
RCT_EXPORT_MODULE()
1011

1112
RCTBridge * _bridge;
13+
BOOL usingTestFolder = NO;
1214

1315
@synthesize bridge = _bridge;
1416

1517
+ (NSString *) getBundleFolderPath
1618
{
1719
NSString* home = NSHomeDirectory();
18-
NSString* bundleFolder = [home stringByAppendingPathComponent:@"HybridMobileDeploy/bundle"];
20+
NSString* pathExtension = [[@"CodePush/" stringByAppendingString: (usingTestFolder ? @"test/" : @"")] stringByAppendingString: @"bundle"];
21+
NSString* bundleFolder = [home stringByAppendingPathComponent:pathExtension];
1922
return bundleFolder;
2023
}
2124

@@ -29,7 +32,8 @@ + (NSString *) getBundlePath
2932
+ (NSString *) getPackageFolderPath
3033
{
3134
NSString* home = NSHomeDirectory();
32-
NSString* packageFolder = [home stringByAppendingPathComponent:@"HybridMobileDeploy/package"];
35+
NSString* pathExtension = [[@"CodePush/" stringByAppendingString: (usingTestFolder ? @"test/" : @"")] stringByAppendingString: @"package"];
36+
NSString* packageFolder = [home stringByAppendingPathComponent:pathExtension];
3337
return packageFolder;
3438
}
3539

@@ -71,9 +75,14 @@ + (void) loadBundle:(NSString*)rootComponent
7175
});
7276
}
7377

78+
RCT_EXPORT_METHOD(setUsingTestFolder:(BOOL) shouldUseTestFolder)
79+
{
80+
usingTestFolder = shouldUseTestFolder;
81+
}
82+
7483
RCT_EXPORT_METHOD(getConfiguration:(RCTResponseSenderBlock)callback)
7584
{
76-
callback(@[[NSNull null], [HybridMobileDeployConfig getConfiguration]]);
85+
callback(@[[NSNull null], [CodePushConfig getConfiguration]]);
7786
}
7887

7988
RCT_EXPORT_METHOD(installUpdate:(NSDictionary*)updatePackage
@@ -93,34 +102,34 @@ + (void) loadBundle:(NSString*)rootComponent
93102
} else {
94103
dispatch_async(dispatch_get_main_queue(), ^{
95104
NSError *saveError;
96-
NSString *bundleFolderPath = [HybridMobileDeploy getBundleFolderPath];
105+
NSString *bundleFolderPath = [CodePush getBundleFolderPath];
97106
if (![[NSFileManager defaultManager] fileExistsAtPath:bundleFolderPath]) {
98107
[[NSFileManager defaultManager] createDirectoryAtPath:bundleFolderPath withIntermediateDirectories:YES attributes:nil error:&saveError];
99108
}
100109

101-
[updateContents writeToFile:[HybridMobileDeploy getBundlePath]
110+
[updateContents writeToFile:[CodePush getBundlePath]
102111
atomically:YES
103112
encoding:NSUTF8StringEncoding
104113
error:&saveError];
105114
if (saveError) {
106115
// TODO send file path
107-
callback(@[RCTMakeError(@"Error saving file", err, [[NSDictionary alloc] initWithObjectsAndKeys:[HybridMobileDeploy getBundlePath],@"bundlePath", nil])]);
116+
callback(@[RCTMakeError(@"Error saving file", saveError, [[NSDictionary alloc] initWithObjectsAndKeys:[CodePush getBundlePath],@"bundlePath", nil])]);
108117
} else {
109118
// Save the package info too.
110-
NSString *packageFolderPath = [HybridMobileDeploy getPackageFolderPath];
119+
NSString *packageFolderPath = [CodePush getPackageFolderPath];
111120
if (![[NSFileManager defaultManager] fileExistsAtPath:packageFolderPath]) {
112121
[[NSFileManager defaultManager] createDirectoryAtPath:packageFolderPath withIntermediateDirectories:YES attributes:nil error:&saveError];
113122
}
114123

115-
[packageJsonString writeToFile:[HybridMobileDeploy getPackagePath]
124+
[packageJsonString writeToFile:[CodePush getPackagePath]
116125
atomically:YES
117126
encoding:NSUTF8StringEncoding
118127
error:&saveError];
119128

120129
if (saveError) {
121-
callback(@[RCTMakeError(@"Error saving file", err, [[NSDictionary alloc] initWithObjectsAndKeys:[HybridMobileDeploy getPackagePath],@"packagePath", nil])]);
130+
callback(@[RCTMakeError(@"Error saving file", saveError, [[NSDictionary alloc] initWithObjectsAndKeys:[CodePush getPackagePath],@"packagePath", nil])]);
122131
} else {
123-
[HybridMobileDeploy loadBundle:[HybridMobileDeployConfig getRootComponent]];
132+
[CodePush loadBundle:[CodePushConfig getRootComponent]];
124133
callback(@[[NSNull null]]);
125134
}
126135
}
@@ -129,12 +138,52 @@ + (void) loadBundle:(NSString*)rootComponent
129138
});
130139
}
131140

141+
RCT_EXPORT_METHOD(writeToLocalPackage:(NSString*)packageJsonString
142+
callback:(RCTResponseSenderBlock)callback)
143+
{
144+
NSError *saveError;
145+
146+
// Save the package info too.
147+
NSString *packageFolderPath = [CodePush getPackageFolderPath];
148+
if (![[NSFileManager defaultManager] fileExistsAtPath:packageFolderPath]) {
149+
[[NSFileManager defaultManager] createDirectoryAtPath:packageFolderPath withIntermediateDirectories:YES attributes:nil error:&saveError];
150+
}
151+
152+
[packageJsonString writeToFile:[CodePush getPackagePath]
153+
atomically:YES
154+
encoding:NSUTF8StringEncoding
155+
error:&saveError];
156+
157+
if (saveError) {
158+
callback(@[RCTMakeError(@"Error saving file", saveError, [[NSDictionary alloc] initWithObjectsAndKeys:[CodePush getPackagePath],@"packagePath", nil])]);
159+
} else {
160+
callback(@[[NSNull null]]);
161+
}
162+
163+
}
164+
165+
RCT_EXPORT_METHOD(removeLocalPackage: (RCTResponseSenderBlock)callback)
166+
{
167+
NSError *error;
168+
169+
// Save the package info too.
170+
NSString *packagePath = [CodePush getPackagePath];
171+
if ([[NSFileManager defaultManager] fileExistsAtPath:packagePath]) {
172+
[[NSFileManager defaultManager] removeItemAtPath:packagePath error: &error];
173+
}
174+
175+
if (error) {
176+
callback(@[RCTMakeError(@"Error saving file", error, [[NSDictionary alloc] initWithObjectsAndKeys:[CodePush getPackagePath],@"packagePath", nil])]);
177+
} else {
178+
callback(@[[NSNull null]]);
179+
}
180+
}
132181

133182

134183
RCT_EXPORT_METHOD(getLocalPackage: (RCTResponseSenderBlock)callback)
135184
{
136185

137-
NSString *path = [HybridMobileDeploy getPackagePath];
186+
NSString *path = [CodePush getPackagePath];
138187

139188
dispatch_async(dispatch_get_main_queue(), ^{
140189

HybridMobileDeploy.xcodeproj/project.pbxproj renamed to CodePush.xcodeproj/project.pbxproj

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
13BE3DEE1AC21097009241FE /* HybridMobileDeploy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BE3DED1AC21097009241FE /* HybridMobileDeploy.m */; };
11-
81D51F3A1B6181C2000DA084 /* HybridMobileDeployConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D51F391B6181C2000DA084 /* HybridMobileDeployConfig.m */; };
10+
13BE3DEE1AC21097009241FE /* CodePush.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BE3DED1AC21097009241FE /* CodePush.m */; };
11+
81D51F3A1B6181C2000DA084 /* CodePushConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D51F391B6181C2000DA084 /* CodePushConfig.m */; };
1212
/* End PBXBuildFile section */
1313

1414
/* Begin PBXCopyFilesBuildPhase section */
@@ -24,10 +24,10 @@
2424
/* End PBXCopyFilesBuildPhase section */
2525

2626
/* Begin PBXFileReference section */
27-
134814201AA4EA6300B7C361 /* libHybridMobileDeploy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHybridMobileDeploy.a; sourceTree = BUILT_PRODUCTS_DIR; };
28-
13BE3DEC1AC21097009241FE /* HybridMobileDeploy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HybridMobileDeploy.h; sourceTree = "<group>"; };
29-
13BE3DED1AC21097009241FE /* HybridMobileDeploy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HybridMobileDeploy.m; sourceTree = "<group>"; };
30-
81D51F391B6181C2000DA084 /* HybridMobileDeployConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HybridMobileDeployConfig.m; sourceTree = "<group>"; };
27+
134814201AA4EA6300B7C361 /* libCodePush.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCodePush.a; sourceTree = BUILT_PRODUCTS_DIR; };
28+
13BE3DEC1AC21097009241FE /* CodePush.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodePush.h; sourceTree = "<group>"; };
29+
13BE3DED1AC21097009241FE /* CodePush.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CodePush.m; sourceTree = "<group>"; };
30+
81D51F391B6181C2000DA084 /* CodePushConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CodePushConfig.m; sourceTree = "<group>"; };
3131
/* End PBXFileReference section */
3232

3333
/* Begin PBXFrameworksBuildPhase section */
@@ -44,27 +44,27 @@
4444
134814211AA4EA7D00B7C361 /* Products */ = {
4545
isa = PBXGroup;
4646
children = (
47-
134814201AA4EA6300B7C361 /* libHybridMobileDeploy.a */,
47+
134814201AA4EA6300B7C361 /* libCodePush.a */,
4848
);
4949
name = Products;
5050
sourceTree = "<group>";
5151
};
5252
58B511D21A9E6C8500147676 = {
5353
isa = PBXGroup;
5454
children = (
55-
81D51F391B6181C2000DA084 /* HybridMobileDeployConfig.m */,
56-
13BE3DEC1AC21097009241FE /* HybridMobileDeploy.h */,
57-
13BE3DED1AC21097009241FE /* HybridMobileDeploy.m */,
55+
81D51F391B6181C2000DA084 /* CodePushConfig.m */,
56+
13BE3DEC1AC21097009241FE /* CodePush.h */,
57+
13BE3DED1AC21097009241FE /* CodePush.m */,
5858
134814211AA4EA7D00B7C361 /* Products */,
5959
);
6060
sourceTree = "<group>";
6161
};
6262
/* End PBXGroup section */
6363

6464
/* Begin PBXNativeTarget section */
65-
58B511DA1A9E6C8500147676 /* HybridMobileDeploy */ = {
65+
58B511DA1A9E6C8500147676 /* CodePush */ = {
6666
isa = PBXNativeTarget;
67-
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "HybridMobileDeploy" */;
67+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "CodePush" */;
6868
buildPhases = (
6969
58B511D71A9E6C8500147676 /* Sources */,
7070
58B511D81A9E6C8500147676 /* Frameworks */,
@@ -74,9 +74,9 @@
7474
);
7575
dependencies = (
7676
);
77-
name = HybridMobileDeploy;
77+
name = CodePush;
7878
productName = RCTDataManager;
79-
productReference = 134814201AA4EA6300B7C361 /* libHybridMobileDeploy.a */;
79+
productReference = 134814201AA4EA6300B7C361 /* libCodePush.a */;
8080
productType = "com.apple.product-type.library.static";
8181
};
8282
/* End PBXNativeTarget section */
@@ -93,7 +93,7 @@
9393
};
9494
};
9595
};
96-
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "HybridMobileDeploy" */;
96+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "CodePush" */;
9797
compatibilityVersion = "Xcode 3.2";
9898
developmentRegion = English;
9999
hasScannedForEncodings = 0;
@@ -105,7 +105,7 @@
105105
projectDirPath = "";
106106
projectRoot = "";
107107
targets = (
108-
58B511DA1A9E6C8500147676 /* HybridMobileDeploy */,
108+
58B511DA1A9E6C8500147676 /* CodePush */,
109109
);
110110
};
111111
/* End PBXProject section */
@@ -115,8 +115,8 @@
115115
isa = PBXSourcesBuildPhase;
116116
buildActionMask = 2147483647;
117117
files = (
118-
81D51F3A1B6181C2000DA084 /* HybridMobileDeployConfig.m in Sources */,
119-
13BE3DEE1AC21097009241FE /* HybridMobileDeploy.m in Sources */,
118+
81D51F3A1B6181C2000DA084 /* CodePushConfig.m in Sources */,
119+
13BE3DEE1AC21097009241FE /* CodePush.m in Sources */,
120120
);
121121
runOnlyForDeploymentPostprocessing = 0;
122122
};
@@ -209,7 +209,7 @@
209209
);
210210
LIBRARY_SEARCH_PATHS = "$(inherited)";
211211
OTHER_LDFLAGS = "-ObjC";
212-
PRODUCT_NAME = HybridMobileDeploy;
212+
PRODUCT_NAME = CodePush;
213213
SKIP_INSTALL = YES;
214214
};
215215
name = Debug;
@@ -224,15 +224,15 @@
224224
);
225225
LIBRARY_SEARCH_PATHS = "$(inherited)";
226226
OTHER_LDFLAGS = "-ObjC";
227-
PRODUCT_NAME = HybridMobileDeploy;
227+
PRODUCT_NAME = CodePush;
228228
SKIP_INSTALL = YES;
229229
};
230230
name = Release;
231231
};
232232
/* End XCBuildConfiguration section */
233233

234234
/* Begin XCConfigurationList section */
235-
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "HybridMobileDeploy" */ = {
235+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "CodePush" */ = {
236236
isa = XCConfigurationList;
237237
buildConfigurations = (
238238
58B511ED1A9E6C8500147676 /* Debug */,
@@ -241,7 +241,7 @@
241241
defaultConfigurationIsVisible = 0;
242242
defaultConfigurationName = Release;
243243
};
244-
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "HybridMobileDeploy" */ = {
244+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "CodePush" */ = {
245245
isa = XCConfigurationList;
246246
buildConfigurations = (
247247
58B511F01A9E6C8500147676 /* Debug */,

HybridMobileDeployConfig.m renamed to CodePushConfig.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
#import "HybridMobileDeploy.h"
1+
#import "CodePush.h"
22

33
NSMutableDictionary *configuration;
44

5-
@implementation HybridMobileDeployConfig
5+
@implementation CodePushConfig
66

77
+ (void)initialize
88
{

0 commit comments

Comments
 (0)