1f1bb9346SEvan Baconimport { AndroidConfig, AndroidManifest } from '@expo/config-plugins'; 2f1bb9346SEvan Bacon 3*8f4283e8Sandyimport { 4*8f4283e8Sandy removeExpoSchemaFromVerifiedIntentFilters, 5*8f4283e8Sandy setGeneratedAndroidScheme, 6*8f4283e8Sandy} from '../withGeneratedAndroidScheme'; 7f1bb9346SEvan Bacon 8f1bb9346SEvan Bacondescribe(setGeneratedAndroidScheme, () => { 9f1bb9346SEvan Bacon it(`prevents adding duplicates`, () => { 10f1bb9346SEvan Bacon let androidManifest: AndroidManifest = { 11f1bb9346SEvan Bacon manifest: { 12f1bb9346SEvan Bacon application: [ 13f1bb9346SEvan Bacon { 14f1bb9346SEvan Bacon activity: [ 15f1bb9346SEvan Bacon { 16f1bb9346SEvan Bacon $: { 17f1bb9346SEvan Bacon 'android:name': '.MainActivity', 18f1bb9346SEvan Bacon 'android:launchMode': 'singleTask', 19f1bb9346SEvan Bacon }, 20f1bb9346SEvan Bacon 'intent-filter': [ 21f1bb9346SEvan Bacon { 22f1bb9346SEvan Bacon action: [ 23f1bb9346SEvan Bacon { 24f1bb9346SEvan Bacon $: { 25f1bb9346SEvan Bacon 'android:name': 'android.intent.action.VIEW', 26f1bb9346SEvan Bacon }, 27f1bb9346SEvan Bacon }, 28f1bb9346SEvan Bacon ], 29f1bb9346SEvan Bacon category: [ 30f1bb9346SEvan Bacon { 31f1bb9346SEvan Bacon $: { 32f1bb9346SEvan Bacon 'android:name': 'android.intent.category.DEFAULT', 33f1bb9346SEvan Bacon }, 34f1bb9346SEvan Bacon }, 35f1bb9346SEvan Bacon { 36f1bb9346SEvan Bacon $: { 37f1bb9346SEvan Bacon 'android:name': 'android.intent.category.BROWSABLE', 38f1bb9346SEvan Bacon }, 39f1bb9346SEvan Bacon }, 40f1bb9346SEvan Bacon ], 41f1bb9346SEvan Bacon data: [], 42f1bb9346SEvan Bacon }, 43f1bb9346SEvan Bacon ], 44f1bb9346SEvan Bacon }, 45f1bb9346SEvan Bacon ], 46f1bb9346SEvan Bacon $: { 47f1bb9346SEvan Bacon 'android:name': '.MainApplication', 48f1bb9346SEvan Bacon }, 49f1bb9346SEvan Bacon }, 50f1bb9346SEvan Bacon ], 51f1bb9346SEvan Bacon $: { 52f1bb9346SEvan Bacon 'xmlns:android': 'http://schemas.android.com/apk/res/android', 53f1bb9346SEvan Bacon package: 'com.placeholder.appid', 54f1bb9346SEvan Bacon }, 55f1bb9346SEvan Bacon }, 56f1bb9346SEvan Bacon }; 57f1bb9346SEvan Bacon const config = { slug: 'cello' }; 58f1bb9346SEvan Bacon 59f1bb9346SEvan Bacon for (let i = 0; i < 2; i++) { 60f1bb9346SEvan Bacon androidManifest = setGeneratedAndroidScheme(config, androidManifest); 61f1bb9346SEvan Bacon 62f1bb9346SEvan Bacon expect(AndroidConfig.Scheme.getSchemesFromManifest(androidManifest)).toStrictEqual([ 63f1bb9346SEvan Bacon 'exp+cello', 64f1bb9346SEvan Bacon ]); 65f1bb9346SEvan Bacon } 66f1bb9346SEvan Bacon }); 67*8f4283e8Sandy 68*8f4283e8Sandy it(`removes exp+ scheme when intent filter autoVerify is true`, () => { 69*8f4283e8Sandy let androidManifest: AndroidManifest = { 70*8f4283e8Sandy manifest: { 71*8f4283e8Sandy application: [ 72*8f4283e8Sandy { 73*8f4283e8Sandy activity: [ 74*8f4283e8Sandy { 75*8f4283e8Sandy $: { 76*8f4283e8Sandy 'android:name': '.MainActivity', 77*8f4283e8Sandy 'android:launchMode': 'singleTask', 78*8f4283e8Sandy }, 79*8f4283e8Sandy 'intent-filter': [ 80*8f4283e8Sandy { 81*8f4283e8Sandy $: { 82*8f4283e8Sandy 'android:autoVerify': 'true', 83*8f4283e8Sandy }, 84*8f4283e8Sandy action: [ 85*8f4283e8Sandy { 86*8f4283e8Sandy $: { 87*8f4283e8Sandy 'android:name': 'android.intent.action.VIEW', 88*8f4283e8Sandy }, 89*8f4283e8Sandy }, 90*8f4283e8Sandy ], 91*8f4283e8Sandy category: [ 92*8f4283e8Sandy { 93*8f4283e8Sandy $: { 94*8f4283e8Sandy 'android:name': 'android.intent.category.DEFAULT', 95*8f4283e8Sandy }, 96*8f4283e8Sandy }, 97*8f4283e8Sandy { 98*8f4283e8Sandy $: { 99*8f4283e8Sandy 'android:name': 'android.intent.category.BROWSABLE', 100*8f4283e8Sandy }, 101*8f4283e8Sandy }, 102*8f4283e8Sandy ], 103*8f4283e8Sandy data: [], 104*8f4283e8Sandy }, 105*8f4283e8Sandy { 106*8f4283e8Sandy action: [ 107*8f4283e8Sandy { 108*8f4283e8Sandy $: { 109*8f4283e8Sandy 'android:name': 'android.intent.action.VIEW', 110*8f4283e8Sandy }, 111*8f4283e8Sandy }, 112*8f4283e8Sandy ], 113*8f4283e8Sandy category: [ 114*8f4283e8Sandy { 115*8f4283e8Sandy $: { 116*8f4283e8Sandy 'android:name': 'android.intent.category.DEFAULT', 117*8f4283e8Sandy }, 118*8f4283e8Sandy }, 119*8f4283e8Sandy { 120*8f4283e8Sandy $: { 121*8f4283e8Sandy 'android:name': 'android.intent.category.BROWSABLE', 122*8f4283e8Sandy }, 123*8f4283e8Sandy }, 124*8f4283e8Sandy ], 125*8f4283e8Sandy data: [], 126*8f4283e8Sandy }, 127*8f4283e8Sandy ], 128*8f4283e8Sandy }, 129*8f4283e8Sandy ], 130*8f4283e8Sandy $: { 131*8f4283e8Sandy 'android:name': '.MainApplication', 132*8f4283e8Sandy }, 133*8f4283e8Sandy }, 134*8f4283e8Sandy ], 135*8f4283e8Sandy $: { 136*8f4283e8Sandy 'xmlns:android': 'http://schemas.android.com/apk/res/android', 137*8f4283e8Sandy package: 'com.placeholder.appid', 138*8f4283e8Sandy }, 139*8f4283e8Sandy }, 140*8f4283e8Sandy }; 141*8f4283e8Sandy const config = { slug: 'cello' }; 142*8f4283e8Sandy androidManifest = setGeneratedAndroidScheme(config, androidManifest); 143*8f4283e8Sandy androidManifest = removeExpoSchemaFromVerifiedIntentFilters(config, androidManifest); 144*8f4283e8Sandy const schemes = AndroidConfig.Scheme.getSchemesFromManifest(androidManifest); 145*8f4283e8Sandy expect(schemes.length).toEqual(1); 146*8f4283e8Sandy }); 147f1bb9346SEvan Bacon}); 148