ExampleJsunit.test.js 13.0 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');
Z
zhaoyuan17 已提交
99 100
            var datainfo1 = await demo.getBundleInfo(NAME1, 1);
            var datainfo2 = await demo.getBundleInfo(NAME2, 1);
S
shilei 已提交
101 102
            expect(datainfo1.name).assertEqual('');
            expect(datainfo2.name).assertEqual('');
Z
zhaoyuan17 已提交
103
            installData.uninstall(NAME1, {
L
linxiangzhi 已提交
104
                userId: 100,
S
shilei 已提交
105 106
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
107 108 109 110
            }, async(err, data) => {
                var datainfo3 = await demo.getBundleInfo(NAME1, 1);
                expect(datainfo3.name).assertEqual('');
                installData.uninstall(NAME2, {
L
linxiangzhi 已提交
111
                    userId: 100,
S
shilei 已提交
112 113
                    installFlag: 1,
                    isKeepData: false
Z
zhaoyuan17 已提交
114 115 116 117 118 119 120
                }, async(err, data) => {
                    var datainfo4 = await demo.getBundleInfo(NAME2, 1);
                    expect(datainfo4.name).assertEqual('');
                    done();
                })
            })
        });
Z
zhaoyuan17 已提交
121 122 123 124 125 126 127 128
    })

    /**
     * @tc.number uninstall_0300
     * @tc.name BUNDLE::uninstall
     * @tc.desc Test uninstall interfaces.
     */
    it('uninstall_0300', 0, async function (done) {
Z
zhaoyuan17 已提交
129 130
        let installData = await demo.getBundleInstaller()
        installData.install([PATH + BMSJSTEST4, PATH + BMSJSTEST5, PATH + BMSJSTEST6], {
L
linxiangzhi 已提交
131
            userId: 100,
S
shilei 已提交
132 133
            installFlag: 1,
            isKeepData: false
Z
zhaoyuan17 已提交
134
        }, async (err, data) => {
S
shilei 已提交
135 136 137
            expect(err.code).assertEqual(ERR_CODE);
            expect(data.status).assertEqual(STATUS_INSTALL_FAILURE_INVALID);
            expect(data.statusMessage).assertEqual('STATUS_INSTALL_FAILURE_INVALID');
Z
zhaoyuan17 已提交
138
            var datainfo1 = await demo.getBundleInfo(NAME3, 1);
S
shilei 已提交
139
            expect(datainfo1.name).assertEqual('');
Z
zhaoyuan17 已提交
140
            var datainfo2 = await demo.getBundleInfo(NAME4, 1);
S
shilei 已提交
141
            expect(datainfo2.name).assertEqual('');
Z
zhaoyuan17 已提交
142
            var datainfo3 = await demo.getBundleInfo(NAME5, 1);
S
shilei 已提交
143
            expect(datainfo3.name).assertEqual('');
Z
zhaoyuan17 已提交
144
            installData.uninstall(NAME3, {
L
linxiangzhi 已提交
145
                userId: 100,
S
shilei 已提交
146 147
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
148 149 150 151
            }, async(err, data) => {
                var datainfo4 = await demo.getBundleInfo(NAME3, 1);
                expect(datainfo4.name).assertEqual('');
                installData.uninstall(NAME4, {
L
linxiangzhi 已提交
152
                    userId: 100,
S
shilei 已提交
153 154
                    installFlag: 1,
                    isKeepData: false
Z
zhaoyuan17 已提交
155 156 157 158
                }, async(err, data) => {
                    var datainfo5 = await demo.getBundleInfo(NAME4, 1);
                    expect(datainfo5.name).assertEqual('');
                    installData.uninstall(NAME5, {
L
linxiangzhi 已提交
159
                        userId: 100,
S
shilei 已提交
160 161
                        installFlag: 1,
                        isKeepData: false
Z
zhaoyuan17 已提交
162 163 164 165 166 167 168 169
                    }, async(err, data) => {
                        var datainfo6 = await demo.getBundleInfo(NAME5, 1);
                        expect(datainfo6.name).assertEqual('');
                        done();
                    });
                });
            });
        });
Z
zhaoyuan17 已提交
170 171 172 173 174 175 176 177 178 179
    });

    /**
     * @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 已提交
180
                userId: 100,
S
shilei 已提交
181 182
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
183 184 185 186 187
            }, OnReceiveinstallEvent);

            function OnReceiveinstallEvent(err, data) {
                expect(typeof data).assertEqual(OBJECT);
                expect(data.statusMessage).assertEqual("STATUS_UNINSTALL_FAILURE");
R
r00559040 已提交
188
                done();
Z
zhaoyuan17 已提交
189 190 191 192 193 194 195 196 197 198 199 200
            }
        });
    })

    /**
     * @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 已提交
201
                userId: 100,
S
shilei 已提交
202 203
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
204 205 206 207 208
            }, OnReceiveinstallEvent);

            function OnReceiveinstallEvent(err, data) {
                expect(typeof data).assertEqual(OBJECT);
                console.info('======data.statusMessage=====' + JSON.stringify(data.statusMessage));
Z
zhaoyuan17 已提交
209
                expect(data.statusMessage).assertEqual("STATUS_UNINSTALL_FAILURE_ABORTED");
Z
zhaoyuan17 已提交
210 211 212 213 214 215 216 217 218 219 220 221 222
                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 已提交
223
                userId: 100,
S
shilei 已提交
224 225
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
226 227 228 229 230
            }, OnReceiveinstallEvent);

            function OnReceiveinstallEvent(err, data) {
                expect(typeof data).assertEqual(OBJECT);
                console.info('======data.statusMessage=====' + JSON.stringify(data.statusMessage));
Z
zhaoyuan17 已提交
231
                expect(data.statusMessage).assertEqual("STATUS_UNINSTALL_FAILURE_CONFLICT");
Z
zhaoyuan17 已提交
232 233 234 235 236 237 238 239 240 241 242 243
                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 已提交
244
        result.install([PATH + BMSJSTEST1], {
L
linxiangzhi 已提交
245
            userId: 100,
S
shilei 已提交
246 247
            installFlag: 1,
            isKeepData: true
Z
zhaoyuan17 已提交
248 249 250 251
        }, OnReceiveinstallEvent);
        async function OnReceiveinstallEvent(err, data) {
            expect(typeof data).assertEqual(OBJECT);
            expect(data.statusMessage).assertEqual(SUCCESS);
R
r00559040 已提交
252 253 254 255 256
            await demo.getBundleInfo(NAME1, 1).then(datainfo1 => {
                expect(datainfo1.name).assertEqual(NAME1);
            }).catch(err => {
                expect(err).assertFail();
            });
Z
zhaoyuan17 已提交
257
            result.uninstall(NAME1, {
L
linxiangzhi 已提交
258
                userId: 100,
S
shilei 已提交
259 260
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
261
            }, async(err, data) => {
R
r00559040 已提交
262 263 264 265 266 267 268 269
                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 已提交
270
            });
Z
zhaoyuan17 已提交
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
        }
    })

    /**
     * @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 已提交
289
            done();
Z
zhaoyuan17 已提交
290 291 292 293 294
        }
        function timeout() {
            expect().assertFail();
            console.debug('uninstall_0800=====timeout======');
            commonEvent.unsubscribe(Subscriber, UnSubscribeCallback)
Z
zhaoyuan17 已提交
295
            done();
Z
zhaoyuan17 已提交
296
        }
Z
zhaoyuan17 已提交
297
        let installData = await demo.getBundleInstaller();
Z
zhaoyuan17 已提交
298
        installData.install([PATH + BMSJSTEST8], {
L
linxiangzhi 已提交
299
            userId: 100,
S
shilei 已提交
300 301
            installFlag: 1,
            isKeepData: false
Z
zhaoyuan17 已提交
302 303 304 305
        }, async (err, data) => {
            id = setTimeout(timeout, START_ABILITY_TIMEOUT);
            console.debug('=======start ability========')
            let result = await featureAbility.startAbility(
Z
zhaoyuan17 已提交
306
                {
Z
zhaoyuan17 已提交
307 308 309 310 311
                    want:
                    {
                        bundleName: 'com.example.third1',
                        abilityName: 'com.example.third1.MainAbility'
                    }
Z
zhaoyuan17 已提交
312
                }
Z
zhaoyuan17 已提交
313 314
            )
        });
Z
zhaoyuan17 已提交
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
        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 已提交
330
            installData.uninstall(THIRD1, {
L
linxiangzhi 已提交
331
                userId: 100,
S
shilei 已提交
332 333
                installFlag: 1,
                isKeepData: false
Z
zhaoyuan17 已提交
334 335 336 337 338 339 340 341 342 343
            }, 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 已提交
344 345 346 347
        }
    })
})

Z
zhaoyuan17 已提交
348