Skip to content

Commit

Permalink
fix: Allow additional and deleted zones
Browse files Browse the repository at this point in the history
Fixes #327
  • Loading branch information
steilerDev committed Sep 17, 2023
1 parent 3be72cd commit e58bfe9
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 24 deletions.
4 changes: 2 additions & 2 deletions app/src/lib/resources/network-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -416,15 +416,15 @@ export class NetworkManager {
Resources.logger(this).info(`Found ${photosSetupResponse.data.zones.length} available zones: ${photosSetupResponse.data.zones.map(zone => zone.zoneID.zoneName).join(`, `)}`);

const primaryZoneData = photosSetupResponse.data.zones.find(zone => zone.zoneID.zoneName === `PrimarySync`);
if (!primaryZoneData) {
if (!primaryZoneData || (primaryZoneData.deleted !== undefined && primaryZoneData.deleted === true)) {
throw new iCPSError(RESOURCES_ERR.NO_PRIMARY_ZONE)
.addContext(`zones`, photosSetupResponse.data.zones);
}

Resources.manager().primaryZone = primaryZoneData.zoneID;

const sharedZoneData = photosSetupResponse.data.zones.find(zone => zone.zoneID.zoneName.startsWith(`SharedSync-`));
if (sharedZoneData) {
if (sharedZoneData && (sharedZoneData.deleted === undefined || sharedZoneData.deleted === false)) {
Resources.logger(this).debug(`Found shared zone ${sharedZoneData.zoneID.zoneName}`);
Resources.manager().sharedZone = sharedZoneData.zoneID;
}
Expand Down
10 changes: 8 additions & 2 deletions app/src/lib/resources/network-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,6 @@ export type PhotosSetupResponse = {
/**
* The list of photos account zones - either primary or primary and shared
* @minItems 1
* @maxItems 2
*/
zones: PhotosSetupResponseZone[]
}
Expand All @@ -303,13 +302,20 @@ type PhotosSetupResponseZone = {
zoneID: {
/**
* @minLength 1
* @pattern ^PrimarySync|SharedSync-[0-9A-F-]+$
* @pattern ^(PrimarySync|SharedSync(-[0-9A-F?]+)+|CMM(-[0-9A-F]+)+)$
*/
zoneName: string,
/**
* @minLength 1
*/
ownerRecordName: string,
/**
* Fixed zone type
*/
zoneType: `REGULAR_CUSTOM_ZONE`,
}
/**
* Might be marked as deleted
*/
deleted?: boolean
}
114 changes: 94 additions & 20 deletions app/test/unit/resources.validator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -590,9 +590,6 @@ describe(`Validator`, () => {
zones: [
{
zoneID: {
/**
* @pattern ^PrimarySync|SharedSync-[0-9A-F-]+$
*/
zoneName: `PrimarySync`,
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
Expand All @@ -610,9 +607,6 @@ describe(`Validator`, () => {
zones: [
{
zoneID: {
/**
* @pattern ^PrimarySync|SharedSync-[0-9A-F-]+$
*/
zoneName: `PrimarySync`,
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
Expand All @@ -628,6 +622,47 @@ describe(`Validator`, () => {
},
},
desc: `valid primary and shared zone`,
}, {
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `PrimarySync`,
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
}, {
zoneID: {
zoneName: `CMM-12345678-1234-1234-1234-123456789012`,
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
},
],
},
},
desc: `valid primary, shared zone and CMM zone`,
}, {
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `PrimarySync`,
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
deleted: true
},
],
},
},
desc: `zone marked as deleted`,
},
])(`should validate a valid photos setup response: $desc`, ({data}) => {
expect(() => validator.validatePhotosSetupResponse(data)).not.toThrow();
Expand Down Expand Up @@ -750,23 +785,23 @@ describe(`Validator`, () => {
},
},
desc: `zoneName is missing`,
}, {
},{
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `PrimarySync`,
ownerRecordName: ``,
zoneName: 'SharedSync-12345678-1234-1234-1234-123456789012-',
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
},
],
},
},
desc: `ownerRecordName is empty`,
desc: `Shared zone has wrong format - additional dash`,
}, {
data: {
data: {
Expand All @@ -775,43 +810,82 @@ describe(`Validator`, () => {
zones: [
{
zoneID: {
zoneName: `PrimarySync`,
zoneName: 'SharedSync-abc',
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
},
],
},
},
desc: `ownerRecordName is missing`,
}, {
desc: `Shared zone has wrong format - wrong id string`,
},{
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `PrimarySync`,
zoneName: 'CMM-12345678-1234-1234-1234-123456789012-',
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
}, {
},
],
},
},
desc: `CMM zone has wrong format - additional dash`,
}, {
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `SharedSync-12345678-1234-1234-1234-123456789012`,
zoneName: 'CMM-#',
ownerRecordName: `someOwnerId`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
}, {
},
],
},
},
desc: `CMM zone has wrong format - wrong id string`,
}, {
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `SharedSync-98765432-4321-4321-4321-432109876543`,
ownerRecordName: `someOwnerId`,
zoneName: `PrimarySync`,
ownerRecordName: ``,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
},
],
},
},
desc: `too many zones`,
desc: `ownerRecordName is empty`,
}, {
data: {
data: {
moreComing: false,
syncToken: `someToken`,
zones: [
{
zoneID: {
zoneName: `PrimarySync`,
zoneType: `REGULAR_CUSTOM_ZONE`,
},
},
],
},
},
desc: `ownerRecordName is missing`,
}, {
data: {
data: {
Expand Down

0 comments on commit e58bfe9

Please sign in to comment.