AVSessionManager.test.js 15.1 KB
Newer Older
Z
zljzero 已提交
1
/*
D
durui 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14
* Copyright (c) 2022 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.
*/
Z
zljzero 已提交
15 16

import avSession from '@ohos.multimedia.avsession';
D
durui 已提交
17
import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
Z
zljzero 已提交
18 19 20
import featureAbility from '@ohos.ability.featureAbility';

export default function AVSessionManager() {
D
durui 已提交
21 22 23
    describe('AVSessionManager', function () {
        let tag = 'ApplicationA';
        let type = 'audio';
D
durui 已提交
24
        let currentAVSession;
D
durui 已提交
25
        let context = featureAbility.getContext();
Z
zljzero 已提交
26

D
durui 已提交
27 28 29
        function sleep(ms) {
            return new Promise(resolve => setTimeout(resolve, ms));
        }
Z
zljzero 已提交
30

D
durui 已提交
31
        beforeAll(function () {
D
durui 已提交
32
            console.info('TestLog: Init Session And Controller');
Q
qinliwen 已提交
33

D
durui 已提交
34
        })
Z
zljzero 已提交
35

D
durui 已提交
36 37 38
        beforeEach(function () {
            console.info('TestLog: Start testing testcase');
        })
D
durui 已提交
39

D
durui 已提交
40 41
        afterEach(async function () {
            await sleep(5000);
D
durui 已提交
42
            if (currentAVSession){
D
durui 已提交
43 44
                await currentAVSession.destroy();
            }
D
durui 已提交
45 46
            console.info('TestLog: End testing testcase');
        })
D
durui 已提交
47

D
durui 已提交
48
        afterAll(function () {
D
durui 已提交
49
            console.info('TestLog: End testing describe');
D
durui 已提交
50
        })
D
durui 已提交
51

D
durui 已提交
52 53 54 55 56 57 58 59 60 61
        /* *
            * @tc.number    : SUB_MULTIMEDIA_AVSESSION_CREATEAVSESSION_PROMISE_0100
            * @tc.name      : CREATEAVSESSION_0100
            * @tc.desc      : Testing createavSession with right parameter - promise
            * @tc.size      : MediumTest
            * @tc.type      : Function
            * @tc.level     : Level0
            */
        it('SUB_MULTIMEDIA_AVSESSION_CREATEAVSESSION_PROMISE_0100', 0, async function (done) {
            await avSession.createAVSession(context, tag, type).then((data) => {
D
durui 已提交
62
                currentAVSession = data;
D
durui 已提交
63
                if (currentAVSession.sessionId.length === 64) {
D
durui 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
                    console.info('TestLog: avSession create successfully');
                    expect(true).assertTrue();
                }
                else {
                    console.info('TestLog: avSession create failed');
                    expect(false).assertTrue();
                }
            }).catch((err) => {
                console.info(`TestLog: avSession create error: code: ${err.code}, message: ${err.message}`);
                expect(false).assertTrue();
            });
            done();
        })
        /* *
            * @tc.number    : SUB_MULTIMEDIA_AVSESSION_CREATEAVSESSION_PROMISE_0200
            * @tc.name      : CREATEAVSESSION_0200
            * @tc.desc      : Testing createavSession with wrong type
            * @tc.size      : MediumTest
            * @tc.type      : Function
            * @tc.level     : Level2
            */
        it('SUB_MULTIMEDIA_AVSESSION_CREATEAVSESSION_PROMISE_0200', 0, async function (done) {
            await avSession.createAVSession(context, tag, 'aaa').then((data) => {
D
durui 已提交
87
                console.info('TestLog: avSession create successfully');
D
durui 已提交
88 89
            }).catch((err) => {
                console.info(`TestLog: avSession create error: code: ${err.code}, message: ${err.message}`);
D
durui 已提交
90
                expect(true).assertTrue();
D
durui 已提交
91
            });
D
durui 已提交
92 93
            sleep(200);
            currentAVSession = avSession.createAVSession(context,tag,"audio");
D
durui 已提交
94 95
            done();
        })
D
durui 已提交
96

D
durui 已提交
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
        /* *
            * @tc.number    : SUB_MULTIMEDIA_AVSESSION_CREATEAVSESSION_PROMISE_0300
            * @tc.name      : CREATEAVSESSION_0300
            * @tc.desc      : Testing createavSession with wrong parameter
            * @tc.size      : MediumTest
            * @tc.type      : Function
            * @tc.level     : Level2
            */
        it('SUB_MULTIMEDIA_AVSESSION_CREATEAVSESSION_PROMISE_0300', 0, async function (done) {
            await avSession.createAVSession(context, '', type).then((data) => {
                console.info('TestLog: avSession create successfully');
            }).catch((err) => {
                console.info(`TestLog: avSession create error: code: ${err.code}, message: ${err.message}`);
                expect(true).assertTrue();
            });
D
durui 已提交
112 113
            sleep(200);
            currentAVSession = avSession.createAVSession(context,tag,"audio");
D
durui 已提交
114 115
            done();
        })
Z
zljzero 已提交
116 117 118 119



        /* *
D
durui 已提交
120 121 122 123 124 125 126
        * @tc.number    : SUB_MULTIMEDIA_AVSESSION_GETAVCASTCONTROLLER_CALLBACK_0100
        * @tc.name      : GETAVCASTCONTROLLER_CALLBACK_0100
        * @tc.desc      : Testing getavcastcontroller
        * @tc.size      : MediumTest
        * @tc.type      : Function
        * @tc.level     : Level2
        */
D
durui 已提交
127 128 129 130 131 132 133 134
        it('SUB_MULTIMEDIA_AVSESSION_GETAVCASTCONTROLLER_CALLBACK_0100', 0, async function (done) {
            try {
                await avSession.createAVSession(context, tag, "audio").then((data) => {
                    currentAVSession = data;
                    console.info(`CreateAVSession : SUCCESS : sessionId = ${currentAVSession.sessionId}`);
                }).catch((err) => {
                    console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`);
                });
D
durui 已提交
135

D
durui 已提交
136 137 138 139
                let aVCastController;
                currentAVSession.getAVCastController().then((avcontroller) => {
                    aVCastController = avcontroller;
                    console.info(`getAVCastController : SUCCESS : sessionid : ${aVCastController.sessionId}`);
D
durui 已提交
140
                }).catch(async(err) => {
D
durui 已提交
141 142 143 144 145 146
                    console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`);
                    expect(err.code == 6600101).assertTrue();
                });
            } catch (error) {
                console.info(`getAVCastController failed: code: ${error.code}, message: ${error.message}`);
                if (error.message == "Cannot read property then of undefined") {
D
durui 已提交
147
                    console.info(`getAVCastController callback successfully`);
D
durui 已提交
148 149 150
                    expect(true).assertTrue()
                }
            }
D
durui 已提交
151
            done();
D
durui 已提交
152 153
        })

D
durui 已提交
154 155 156 157 158 159 160 161
        /* *
        * @tc.number    : SUB_MULTIMEDIA_AVSESSION_GETAVCASTCONTROLLER_PROMISE_0100
        * @tc.name      : GETAVCASTCONTROLLER_CALLBACK_0100
        * @tc.desc      : Testing getavcastcontroller
        * @tc.size      : MediumTest
        * @tc.type      : Function
        * @tc.level     : Level2
        */
D
durui 已提交
162 163 164 165 166 167
        it('SUB_MULTIMEDIA_AVSESSION_GETAVCASTCONTROLLER_PROMISE_0100', 0, async function (done) {
            try {
                currentAVSession = await avSession.createAVSession(context, tag, "audio");
                console.info(`CreateAVSession 111BusinessError: code: `);
                let aVCastController;
                console.info(`CreateAVSession 333BusinessError: code: `);
D
durui 已提交
168
                aVCastController = await currentAVSession.getAVCastController(async(err, data) => {
Q
qinliwen 已提交
169 170 171 172
                    if (err) {
                        console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`);
                        expect(err.code == 6600101).assertTrue();
                    }
D
durui 已提交
173 174 175 176
                });
            } catch (error) {
                console.error(`getAVCastController BusinessError: code: ${error.code}, message: ${error.message}`);
                if (error.message == "Cannot read property catch of undefined") {
D
durui 已提交
177
                    console.info(`getAVCastController promise successfully`);
D
durui 已提交
178 179 180 181 182
                    expect(true).assertTrue()
                }
            }
            done();
        })
D
durui 已提交
183 184 185 186 187 188 189 190 191 192 193



        /* *
        * @tc.number    : SUB_MULTIMEDIA_AVSESSION_STOPCASTING_CALLBACK_0100
        * @tc.name      : STOPCASTING_CALLBACK_0100
        * @tc.desc      : Testing stopCasting
        * @tc.size      : MediumTest
        * @tc.type      : Function
        * @tc.level     : Level2
        */
D
durui 已提交
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
        it('SUB_MULTIMEDIA_AVSESSION_STOPCASTING_CALLBACK_0100', 0, async function (done) {
            try {
                await avSession.createAVSession(context, tag, "audio").then((data) => {
                    currentAVSession = data;
                    console.info(`CreateAVSession : SUCCESS : sessionId = ${currentAVSession.sessionId}`);
                    currentAVSession.stopCasting(function (err) {
                        if (err) {
                            console.info(`stopCasting BusinessError: code: ${err.code}, message: ${err.message}`);
                        } else {
                            console.info(`stopCasting successfully`);
                            expect(true).assertTrue();
                        }
                    }).catch((err) => {
                        console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`);
                    });

                });
            } catch (error) {
                console.info(`stopCasting BusinessError2: code: ${error.code}, message: ${error.message}`);
                if (error.message == "Cannot read property catch of undefined") {
D
durui 已提交
214
                    console.info(`stopCasting callback successfully`);
D
durui 已提交
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
                    expect(true).assertTrue()
                }
            }
            done();
        })
        /* *
    * @tc.number    : SUB_MULTIMEDIA_AVSESSION_STOPCASTING_PROMISE_0100
    * @tc.name      : STOPCASTING_PROMISE_0100
    * @tc.desc      : Testing getavcastcontroller
    * @tc.size      : MediumTest
    * @tc.type      : Function
    * @tc.level     : Level2
    */
        it('SUB_MULTIMEDIA_AVSESSION_STOPCASTING_PROMISE_0100', 0, async function (done) {
            try {
                await avSession.createAVSession(context, tag, "audio").then((data) => {
                    currentAVSession = data;
                    console.info(`CreateAVSession : SUCCESS : sessionId = ${currentAVSession.sessionId}`);
                }).catch((err) => {
                    console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`);
                });
                currentAVSession.stopCasting().then(() => {
D
durui 已提交
237
                    console.info(`stopCasting successfully`);
Z
zljzero 已提交
238
                    expect(true).assertTrue();
D
durui 已提交
239 240 241 242 243 244 245
                }).catch((err) => {
                    console.info(`stopCasting BusinessError: code: ${err.code}, message: ${err.message}`);
                    expect(false).assertTrue();
                });
            } catch (error) {
                console.error(`stopCasting BusinessError2: code: ${error.code}, message: ${error.message}`)
                if (error.message == "Cannot read property then of undefined") {
D
durui 已提交
246
                    console.info(`stopCasting promise successfully`);
D
durui 已提交
247
                    expect(true).assertTrue()
Z
zljzero 已提交
248
                }
D
durui 已提交
249 250 251
            }
            done();
        })
D
durui 已提交
252 253 254 255 256 257 258 259 260
        /* *
        * @tc.number    : SUB_MULTIMEDIA_AVSESSION_GETCURRENTITEM_CALLBACK_0100
        * @tc.name      : GETCURRENTITEM_CALLBACK_0100
        * @tc.desc      : Testing getcurrentitem
        * @tc.size      : MediumTest
        * @tc.type      : Function
        * @tc.level     : Level2
        */
        it('SUB_MULTIMEDIA_AVSESSION_GETCURRENTITEM_CALLBACK_0100', 0, async function (done) {
D
durui 已提交
261 262 263 264 265 266
            try {
                await avSession.createAVSession(context, tag, "audio").then((data) => {
                    currentAVSession = data;
                    console.info(`CreateAVSession : SUCCESS : sessionId = ${currentAVSession.sessionId}`);
                }).catch((err) => {
                    console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`);
D
durui 已提交
267
                });
D
durui 已提交
268 269 270 271 272 273 274 275 276 277 278
                let aVCastController;
                currentAVSession.getAVCastController().then((avcontroller) => {
                    aVCastController = avcontroller;
                    console.info(`getAVCastController : SUCCESS : sessionid : ${aVCastController.sessionId}`);
                    aVCastController.getCurrentItem(function (err, value) {
                        if (err) {
                            console.error(`getCurrentItem BusinessError: code: ${err.code}, message: ${err.message}`);
                        } else {
                            console.info(`getCurrentItem successfully`);
                        }
                    });
D
durui 已提交
279
                }).catch(async(err) => {
D
durui 已提交
280 281 282 283 284 285
                    console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`);
                    expect(err.code == 6600101).assertTrue();
                });
            } catch (error) {
                console.error(`getCurrentItem BusinessError2: code: ${error.code}, message: ${error.message}`)
                if (error.message == "Cannot read property then of undefined") {
D
durui 已提交
286
                    console.info(`getCurrentItem callback successfully`);
D
durui 已提交
287 288 289
                    expect(true).assertTrue()
                }
            }
Z
zljzero 已提交
290 291
            done();
        })
D
durui 已提交
292 293 294 295 296 297 298 299
        /* *
        * @tc.number    : SUB_MULTIMEDIA_AVSESSION_GETCURRENTITEM_PROMISE_0100
        * @tc.name      : GETCURRENTITEM_CALLBACK_0100
        * @tc.desc      : Testing getcurrentitem
        * @tc.size      : MediumTest
        * @tc.type      : Function
        * @tc.level     : Level2
        */
D
durui 已提交
300
        it('SUB_MULTIMEDIA_AVSESSION_GETCURRENTITEM_PROMISE_0100', 0, async function (done) {
D
durui 已提交
301 302 303 304
            try {
                await avSession.createAVSession(context, tag, "audio").then((data) => {
                    currentAVSession = data;
                    console.info(`CreateAVSession : SUCCESS : sessionId = ${currentAVSession.sessionId}`);
D
durui 已提交
305
                }).catch((err) => {
D
durui 已提交
306
                    console.info(`CreateAVSession BusinessError: code: ${err.code}, message: ${err.message}`);
D
durui 已提交
307
                });
D
durui 已提交
308 309 310 311 312 313 314 315 316
                let aVCastController;
                currentAVSession.getAVCastController().then((avcontroller) => {
                    aVCastController = avcontroller;
                    console.info(`getAVCastController : SUCCESS : sessionid : ${aVCastController.sessionId}`);
                    aVCastController.getCurrentItem().then((AVQueueItem) => {
                        console.info(`getCurrentItem successfully`);
                    }).catch((err) => {
                        console.error(`getCurrentItem BusinessError: code: ${err.code}, message: ${err.message}`);
                    });
D
durui 已提交
317
                }).catch(async(err) => {
D
durui 已提交
318 319 320 321 322 323
                    console.error(`getAVCastController BusinessError: code: ${err.code}, message: ${err.message}`);
                    expect(err.code == 6600101).assertTrue();
                });
            } catch (error) {
                console.error(`getAVCastController BusinessError2: code: ${error.code}, message: ${error.message}`);
                if (error.message == "Cannot read property then of undefined") {
D
durui 已提交
324
                    console.info(`getCurrentItem promise successfully`);
D
durui 已提交
325 326 327
                    expect(true).assertTrue()
                }
            }
Z
zljzero 已提交
328 329 330
            done();
        })
    })
D
durui 已提交
331
}