1082815dcSEvan Baconimport fs from 'fs'; 2082815dcSEvan Baconimport { vol } from 'memfs'; 3082815dcSEvan Baconimport path from 'path'; 4082815dcSEvan Bacon 5*ed3bd27bSEvan Baconimport rnFixture from '../../plugins/__tests__/fixtures/react-native-project'; 6082815dcSEvan Baconimport { setProvisioningProfileForPbxproj } from '../ProvisioningProfile'; 7082815dcSEvan Bacon 8082815dcSEvan Baconjest.mock('fs'); 9082815dcSEvan Bacon 10082815dcSEvan Baconconst originalFs = jest.requireActual('fs') as typeof import('fs'); 11082815dcSEvan Bacon 12082815dcSEvan Bacondescribe('ProvisioningProfile module', () => { 13082815dcSEvan Bacon describe(setProvisioningProfileForPbxproj, () => { 14082815dcSEvan Bacon const projectRoot = '/testproject'; 15082815dcSEvan Bacon const pbxProjPath = 'ios/testproject.xcodeproj/project.pbxproj'; 16082815dcSEvan Bacon 17082815dcSEvan Bacon afterEach(() => { 18082815dcSEvan Bacon vol.reset(); 19082815dcSEvan Bacon }); 20082815dcSEvan Bacon 21082815dcSEvan Bacon describe('multitarget', () => { 22082815dcSEvan Bacon it('configures the project.pbxproj file for multitarget projects', () => { 23082815dcSEvan Bacon vol.fromJSON( 24082815dcSEvan Bacon { 25082815dcSEvan Bacon [pbxProjPath]: originalFs.readFileSync( 26082815dcSEvan Bacon path.join(__dirname, 'fixtures/project-multitarget.pbxproj'), 27082815dcSEvan Bacon 'utf-8' 28082815dcSEvan Bacon ), 29082815dcSEvan Bacon }, 30082815dcSEvan Bacon projectRoot 31082815dcSEvan Bacon ); 32082815dcSEvan Bacon setProvisioningProfileForPbxproj(projectRoot, { 33082815dcSEvan Bacon targetName: 'multitarget', 34082815dcSEvan Bacon profileName: '*[expo] com.swmansion.dominik.abcd.v2 AppStore 2020-07-24T07:56:22.983Z', 35082815dcSEvan Bacon appleTeamId: 'J5FM626PE2', 36082815dcSEvan Bacon }); 37082815dcSEvan Bacon const pbxprojContents = fs.readFileSync(path.join(projectRoot, pbxProjPath), 'utf-8'); 38082815dcSEvan Bacon expect(pbxprojContents).toMatchSnapshot(); 39082815dcSEvan Bacon }); 40082815dcSEvan Bacon 41082815dcSEvan Bacon it('configures the project.pbxproj file for multitarget projects without existing target attributes', () => { 42082815dcSEvan Bacon vol.fromJSON( 43082815dcSEvan Bacon { 44082815dcSEvan Bacon [pbxProjPath]: originalFs.readFileSync( 45082815dcSEvan Bacon path.join(__dirname, 'fixtures/project-multitarget-missing-targetattributes.pbxproj'), 46082815dcSEvan Bacon 'utf-8' 47082815dcSEvan Bacon ), 48082815dcSEvan Bacon }, 49082815dcSEvan Bacon projectRoot 50082815dcSEvan Bacon ); 51082815dcSEvan Bacon setProvisioningProfileForPbxproj(projectRoot, { 52082815dcSEvan Bacon targetName: 'multitarget', 53082815dcSEvan Bacon profileName: '*[expo] com.swmansion.dominik.abcd.v2 AppStore 2020-07-24T07:56:22.983Z', 54082815dcSEvan Bacon appleTeamId: 'J5FM626PE2', 55082815dcSEvan Bacon }); 56082815dcSEvan Bacon const pbxprojContents = fs.readFileSync(path.join(projectRoot, pbxProjPath), 'utf-8'); 57082815dcSEvan Bacon expect(pbxprojContents).toMatchSnapshot(); 58082815dcSEvan Bacon }); 59082815dcSEvan Bacon }); 60082815dcSEvan Bacon 61082815dcSEvan Bacon describe('single target', () => { 62082815dcSEvan Bacon beforeEach(() => { 63082815dcSEvan Bacon vol.fromJSON( 64082815dcSEvan Bacon { 65*ed3bd27bSEvan Bacon [pbxProjPath]: rnFixture['ios/HelloWorld.xcodeproj/project.pbxproj'], 66082815dcSEvan Bacon }, 67082815dcSEvan Bacon projectRoot 68082815dcSEvan Bacon ); 69082815dcSEvan Bacon }); 70082815dcSEvan Bacon 71082815dcSEvan Bacon it('configures the project.pbxproj file with the profile name and apple team id', () => { 72082815dcSEvan Bacon setProvisioningProfileForPbxproj(projectRoot, { 73082815dcSEvan Bacon profileName: '*[expo] com.swmansion.dominik.abcd.v2 AppStore 2020-07-24T07:56:22.983Z', 74082815dcSEvan Bacon appleTeamId: 'J5FM626PE2', 75082815dcSEvan Bacon }); 76082815dcSEvan Bacon const pbxprojContents = fs.readFileSync(path.join(projectRoot, pbxProjPath), 'utf-8'); 77082815dcSEvan Bacon expect(pbxprojContents).toMatchSnapshot(); 78082815dcSEvan Bacon }); 79082815dcSEvan Bacon it('configures the project.pbxproj file with the profile name and apple team id', () => { 80082815dcSEvan Bacon setProvisioningProfileForPbxproj(projectRoot, { 81082815dcSEvan Bacon profileName: '*[expo] com.swmansion.dominik.abcd.v2 AppStore 2020-07-24T07:56:22.983Z', 82082815dcSEvan Bacon appleTeamId: 'Something Spaced', 83082815dcSEvan Bacon }); 84082815dcSEvan Bacon const pbxprojContents = fs.readFileSync(path.join(projectRoot, pbxProjPath), 'utf-8'); 85082815dcSEvan Bacon expect(pbxprojContents).toMatch(/DevelopmentTeam = "Something Spaced";/); 86082815dcSEvan Bacon }); 87082815dcSEvan Bacon it('throws descriptive error when target name does not exist', () => { 88082815dcSEvan Bacon expect(() => 89082815dcSEvan Bacon setProvisioningProfileForPbxproj(projectRoot, { 90082815dcSEvan Bacon targetName: 'faketargetname', 91082815dcSEvan Bacon profileName: '*[expo] com.swmansion.dominik.abcd.v2 AppStore 2020-07-24T07:56:22.983Z', 92082815dcSEvan Bacon appleTeamId: 'J5FM626PE2', 93082815dcSEvan Bacon }) 94082815dcSEvan Bacon ).toThrow("Could not find target 'faketargetname' in project.pbxproj"); 95082815dcSEvan Bacon }); 96082815dcSEvan Bacon }); 97082815dcSEvan Bacon }); 98082815dcSEvan Bacon}); 99