ExampleJsunit.test.js 14.2 KB
Newer Older
Z
zhaoyuan17 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
/*
 * Copyright (c) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index'
import demo from '@ohos.bundle'
import featureAbility from '@ohos.ability.featureability'
import abilityManager from '@ohos.app.abilityManager'
import commonEvent from '@ohos.commonevent'

const PATH = "/data/"
const ERROR = "error.hap"
const BMSJSTEST1 = "bmsJstest1.hap"
const BMSJSTEST3 = "bmsJstest3.hap"
const BMSJSTEST4 = "bmsJstest4.hap"
const BMSJSTEST5 = "bmsJstest5.hap"
const BMSJSTEST6 = "bmsJstest6.hap"
const BMSJSTEST8 = "bmsJstest8.hap"
const NAME1 = "com.example.myapplication1"
const NAME2 = "com.example.myapplication2"
const NAME3 = "com.example.myapplication4"
const NAME4 = "com.example.myapplication5"
const NAME5 = "com.example.myapplication6"
const THIRD1 = "com.example.third1"
const LAUNCHER = "com.ohos.launcher"
const OBJECT = "object"
const SUCCESS = "SUCCESS"
Z
zhaoyuan17 已提交
39
const START_ABILITY_TIMEOUT = 3000;
S
shilei 已提交
40 41 42
const ERR_CODE = -1;
const STATUS_INSTALL_FAILURE_INVALID = 3;
const STATUS_INSTALL_FAILURE_CONFLICT = 4;
Z
zhaoyuan17 已提交
43 44 45 46
var subscriberInfoEvent_0100 = {
    events: ['Third1_Publish_CommonEvent'],
};

S
shilei 已提交
47
describe('ActsBundleManagerUninstall', function () {
Z
zhaoyuan17 已提交
48 49 50 51 52 53
    /**
     * @tc.number uninstall_0100
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0100', 0, async function (done) {
Z
zhaoyuan17 已提交
54 55
        let installData = await demo.getBundleInstaller();
        installData.install([PATH + BMSJSTEST1], {
L
linxiangzhi 已提交
56
            userId: 100,
S
shilei 已提交
57 58
            installFlag: 1,
            isKeepData: false
Z
zhaoyuan17 已提交
59 60 61 62 63 64 65
        }, async (err, data) => {
            expect(err.code).assertEqual(0);
            expect(data.status).assertEqual(0);
            expect(data.statusMessage).assertEqual('SUCCESS');
            var datainfo1 = await demo.getBundleInfo(NAME1, 1);
            expect(datainfo1.name).assertEqual(NAME1);
            installData.uninstall(NAME1, {
L
linxiangzhi 已提交
66
                userId: 100,
S
shilei 已提交
67 68
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
69
            }, async (err, data) => {
R
r00559040 已提交
70 71 72 73 74 75 76 77 78 79
                expect(err.code).assertEqual(0);
                expect(data.statusMessage).assertEqual('SUCCESS');
                await demo.getBundleInfo(NAME1, 1).then(datainfo => {
                    expect(datainfo).assertFail()
                    done();
                }).catch(err => {
                    expect(err).assertEqual(1)
                    done()
                });

Z
zhaoyuan17 已提交
80 81
            })
        });
Z
zhaoyuan17 已提交
82 83 84 85 86 87 88 89
    })

    /**
     * @tc.number uninstall_0200
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0200', 0, async function (done) {
Z
zhaoyuan17 已提交
90 91
        let installData = await demo.getBundleInstaller()
        installData.install([PATH + BMSJSTEST1, PATH + BMSJSTEST3], {
L
linxiangzhi 已提交
92
            userId: 100,
S
shilei 已提交
93 94
            installFlag: 1,
            isKeepData: false
Z
zhaoyuan17 已提交
95
        }, async (err, data) => {
S
shilei 已提交
96 97 98
            expect(err.code).assertEqual(ERR_CODE);
            expect(data.status).assertEqual(STATUS_INSTALL_FAILURE_CONFLICT);
            expect(data.statusMessage).assertEqual('STATUS_INSTALL_FAILURE_CONFLICT');
S
SoftSquirrel 已提交
99 100
            var datainfo1 = demo.getBundleInfo(NAME1, 1);
            datainfo1.then(data => {
S
SoftSquirrel 已提交
101
                expect().assertFail();
S
SoftSquirrel 已提交
102 103 104 105 106
            }).catch(err => {
                expect(err).assertEqual(1);
            });
            var datainfo2 = demo.getBundleInfo(NAME2, 1);
            datainfo2.then(data => {
S
SoftSquirrel 已提交
107
                expect().assertFail();
S
SoftSquirrel 已提交
108 109 110
            }).catch(err => {
                expect(err).assertEqual(1);
            });
Z
zhaoyuan17 已提交
111
            installData.uninstall(NAME1, {
L
linxiangzhi 已提交
112
                userId: 100,
S
shilei 已提交
113 114
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
115
            }, async(err, data) => {
S
SoftSquirrel 已提交
116 117
                var datainfo3 = demo.getBundleInfo(NAME1, 1);
                datainfo3.then(data => {
S
SoftSquirrel 已提交
118
                    expect().assertFail();
S
SoftSquirrel 已提交
119 120 121
                }).catch(err => {
                    expect(err).assertEqual(1);
                });
Z
zhaoyuan17 已提交
122
                installData.uninstall(NAME2, {
L
linxiangzhi 已提交
123
                    userId: 100,
S
shilei 已提交
124 125
                    installFlag: 1,
                    isKeepData: false
Z
zhaoyuan17 已提交
126
                }, async(err, data) => {
S
SoftSquirrel 已提交
127 128
                    var datainfo4 = demo.getBundleInfo(NAME2, 1);
                    datainfo4.then(data => {
S
SoftSquirrel 已提交
129
                        expect().assertFail();
S
SoftSquirrel 已提交
130 131 132
                    }).catch(err => {
                        expect(err).assertEqual(1);
                    });
Z
zhaoyuan17 已提交
133 134 135 136
                    done();
                })
            })
        });
Z
zhaoyuan17 已提交
137 138 139 140 141 142 143 144
    })

    /**
     * @tc.number uninstall_0300
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0300', 0, async function (done) {
Z
zhaoyuan17 已提交
145 146
        let installData = await demo.getBundleInstaller()
        installData.install([PATH + BMSJSTEST4, PATH + BMSJSTEST5, PATH + BMSJSTEST6], {
L
linxiangzhi 已提交
147
            userId: 100,
S
shilei 已提交
148 149
            installFlag: 1,
            isKeepData: false
Z
zhaoyuan17 已提交
150
        }, async (err, data) => {
S
shilei 已提交
151 152 153
            expect(err.code).assertEqual(ERR_CODE);
            expect(data.status).assertEqual(STATUS_INSTALL_FAILURE_INVALID);
            expect(data.statusMessage).assertEqual('STATUS_INSTALL_FAILURE_INVALID');
S
SoftSquirrel 已提交
154 155
            var datainfo1 = demo.getBundleInfo(NAME3, 1);
            datainfo1.then(data => {
S
SoftSquirrel 已提交
156
                expect().assertFail();
S
SoftSquirrel 已提交
157 158 159 160 161
            }).catch(err => {
                expect(err).assertEqual(1);
            });
            var datainfo2 = demo.getBundleInfo(NAME4, 1);
            datainfo2.then(data => {
S
SoftSquirrel 已提交
162
                expect().assertFail();
S
SoftSquirrel 已提交
163 164 165 166 167
            }).catch(err => {
                expect(err).assertEqual(1);
            });
            var datainfo3 = demo.getBundleInfo(NAME5, 1);
            datainfo3.then(data => {
S
SoftSquirrel 已提交
168
                expect().assertFail();
S
SoftSquirrel 已提交
169 170 171
            }).catch(err => {
                expect(err).assertEqual(1);
            });
Z
zhaoyuan17 已提交
172
            installData.uninstall(NAME3, {
L
linxiangzhi 已提交
173
                userId: 100,
S
shilei 已提交
174 175
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
176
            }, async(err, data) => {
S
SoftSquirrel 已提交
177 178
                var datainfo4 = demo.getBundleInfo(NAME3, 1);
                datainfo4.then(data => {
S
SoftSquirrel 已提交
179
                    expect().assertFail();
S
SoftSquirrel 已提交
180 181 182
                }).catch(err => {
                    expect(err).assertEqual(1);
                });
Z
zhaoyuan17 已提交
183
                installData.uninstall(NAME4, {
L
linxiangzhi 已提交
184
                    userId: 100,
S
shilei 已提交
185 186
                    installFlag: 1,
                    isKeepData: false
Z
zhaoyuan17 已提交
187
                }, async(err, data) => {
S
SoftSquirrel 已提交
188 189
                    var datainfo5 = demo.getBundleInfo(NAME4, 1);
                    datainfo5.then(data => {
S
SoftSquirrel 已提交
190
                        expect().assertFail();
S
SoftSquirrel 已提交
191 192 193
                    }).catch(err => {
                        expect(err).assertEqual(1);
                    });
Z
zhaoyuan17 已提交
194
                    installData.uninstall(NAME5, {
L
linxiangzhi 已提交
195
                        userId: 100,
S
shilei 已提交
196 197
                        installFlag: 1,
                        isKeepData: false
Z
zhaoyuan17 已提交
198
                    }, async(err, data) => {
S
SoftSquirrel 已提交
199 200
                        var datainfo6 = demo.getBundleInfo(NAME5, 1);
                        datainfo6.then(data => {
S
SoftSquirrel 已提交
201
                            expect().assertFail();
S
SoftSquirrel 已提交
202 203 204
                        }).catch(err => {
                            expect(err).assertEqual(1);
                        });
Z
zhaoyuan17 已提交
205 206 207 208 209
                        done();
                    });
                });
            });
        });
Z
zhaoyuan17 已提交
210 211 212 213 214 215 216 217 218 219
    });

    /**
     * @tc.number uninstall_0400
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0400', 0, async function (done) {
        demo.getBundleInstaller().then((data) => {
            data.uninstall(ERROR, {
L
linxiangzhi 已提交
220
                userId: 100,
S
shilei 已提交
221 222
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
223 224 225 226 227
            }, OnReceiveinstallEvent);

            function OnReceiveinstallEvent(err, data) {
                expect(typeof data).assertEqual(OBJECT);
                expect(data.statusMessage).assertEqual("STATUS_UNINSTALL_FAILURE");
R
r00559040 已提交
228
                done();
Z
zhaoyuan17 已提交
229 230 231 232 233 234 235 236 237 238 239 240
            }
        });
    })

    /**
     * @tc.number uninstall_0500
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0500', 0, async function (done) {
        demo.getBundleInstaller().then((data) => {
            data.uninstall('', {
L
linxiangzhi 已提交
241
                userId: 100,
S
shilei 已提交
242 243
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
244 245 246 247 248
            }, OnReceiveinstallEvent);

            function OnReceiveinstallEvent(err, data) {
                expect(typeof data).assertEqual(OBJECT);
                console.info('======data.statusMessage=====' + JSON.stringify(data.statusMessage));
Z
zhaoyuan17 已提交
249
                expect(data.statusMessage).assertEqual("STATUS_UNINSTALL_FAILURE_ABORTED");
Z
zhaoyuan17 已提交
250 251 252 253 254 255 256 257 258 259 260 261 262
                done();
            }
        });
    })

    /**
     * @tc.number uninstall_0600
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0600', 0, async function (done) {
        demo.getBundleInstaller().then((data) => {
            data.uninstall(LAUNCHER, {
L
linxiangzhi 已提交
263
                userId: 100,
S
shilei 已提交
264 265
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
266 267 268 269 270
            }, OnReceiveinstallEvent);

            function OnReceiveinstallEvent(err, data) {
                expect(typeof data).assertEqual(OBJECT);
                console.info('======data.statusMessage=====' + JSON.stringify(data.statusMessage));
Z
zhaoyuan17 已提交
271
                expect(data.statusMessage).assertEqual("STATUS_UNINSTALL_FAILURE_CONFLICT");
Z
zhaoyuan17 已提交
272 273 274 275 276 277 278 279 280 281 282 283
                done();
            }
        });
    })

    /**
     * @tc.number uninstall_0700
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0700', 0, async function (done) {
        let result = await demo.getBundleInstaller();
Z
zhaoyuan17 已提交
284
        result.install([PATH + BMSJSTEST1], {
L
linxiangzhi 已提交
285
            userId: 100,
S
shilei 已提交
286 287
            installFlag: 1,
            isKeepData: true
Z
zhaoyuan17 已提交
288 289 290 291
        }, OnReceiveinstallEvent);
        async function OnReceiveinstallEvent(err, data) {
            expect(typeof data).assertEqual(OBJECT);
            expect(data.statusMessage).assertEqual(SUCCESS);
R
r00559040 已提交
292 293 294 295 296
            await demo.getBundleInfo(NAME1, 1).then(datainfo1 => {
                expect(datainfo1.name).assertEqual(NAME1);
            }).catch(err => {
                expect(err).assertFail();
            });
Z
zhaoyuan17 已提交
297
            result.uninstall(NAME1, {
L
linxiangzhi 已提交
298
                userId: 100,
S
shilei 已提交
299 300
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
301
            }, async(err, data) => {
R
r00559040 已提交
302 303 304 305 306 307 308 309
                expect(data.statusMessage).assertEqual(SUCCESS);
                await demo.getBundleInfo(NAME1, 1).then(datainfo2 => {
                    expect(datainfo2).assertFail();
                    done();
                }).catch(err => {
                    expect(err).assertEqual(1);
                    done();
                });
Z
zhaoyuan17 已提交
310
            });
Z
zhaoyuan17 已提交
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
        }
    })

    /**
     * @tc.number uninstall_0800
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0800', 0, async function (done) {
        var Subscriber;
        let id;
        commonEvent.createSubscriber(subscriberInfoEvent_0100).then((data) => {
            console.debug('====>Create Subscriber====>');
            Subscriber = data;
            commonEvent.subscribe(Subscriber, SubscribeCallBack);
        })
        function UnSubscribeCallback() {
            console.debug('====>UnSubscribe CallBack====>');
Z
zhaoyuan17 已提交
329
            done();
Z
zhaoyuan17 已提交
330 331 332 333 334
        }
        function timeout() {
            expect().assertFail();
            console.debug('uninstall_0800=====timeout======');
            commonEvent.unsubscribe(Subscriber, UnSubscribeCallback)
Z
zhaoyuan17 已提交
335
            done();
Z
zhaoyuan17 已提交
336
        }
Z
zhaoyuan17 已提交
337
        let installData = await demo.getBundleInstaller();
Z
zhaoyuan17 已提交
338
        installData.install([PATH + BMSJSTEST8], {
L
linxiangzhi 已提交
339
            userId: 100,
S
shilei 已提交
340 341
            installFlag: 1,
            isKeepData: false
Z
zhaoyuan17 已提交
342 343 344 345
        }, async (err, data) => {
            id = setTimeout(timeout, START_ABILITY_TIMEOUT);
            console.debug('=======start ability========')
            let result = await featureAbility.startAbility(
Z
zhaoyuan17 已提交
346
                {
Z
zhaoyuan17 已提交
347 348 349 350 351
                    want:
                    {
                        bundleName: 'com.example.third1',
                        abilityName: 'com.example.third1.MainAbility'
                    }
Z
zhaoyuan17 已提交
352
                }
Z
zhaoyuan17 已提交
353 354
            )
        });
Z
zhaoyuan17 已提交
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369
        async function SubscribeCallBack(err, data) {
            clearTimeout(id);
            expect(data.event).assertEqual('Third1_Publish_CommonEvent');
            console.debug('====>Subscribe CallBack data:====>' + JSON.stringify(data));
            let processInfos1 = await abilityManager.getActiveProcessInfos();
            expect(typeof processInfos1).assertEqual('object');
            let processMap1 = new Map();
            let processMap2 = new Map();
            for (var i = 0, len = processInfos1.length; i < len; i++) {
                console.debug('=======Active Process uid=====' + processInfos1[i].uid);
                processMap1.set(processInfos1[i].uid, 0);
            }
            let bundleInfo = await demo.getBundleInfo('com.example.third1', 1);
            let uid = bundleInfo.uid;
            expect(processMap1.has(uid)).assertTrue();
Z
zhaoyuan17 已提交
370
            installData.uninstall(THIRD1, {
L
linxiangzhi 已提交
371
                userId: 100,
S
shilei 已提交
372 373
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
374 375 376 377 378 379 380 381 382 383
            }, async(err, data) => {
                let processInfos2 = await abilityManager.getActiveProcessInfos();
                for (var i = 0, len = processInfos2.length; i < len; i++) {
                    console.debug('=======Active Process uid=====' + processInfos1[i].uid);
                    processMap2.set(processInfos2[i].uid, 0);
                }
                expect(processMap2.has(uid)).assertFalse();
                commonEvent.unsubscribe(Subscriber, UnSubscribeCallback)
                done();
            });
Z
zhaoyuan17 已提交
384 385 386 387
        }
    })
})

Z
zhaoyuan17 已提交
388