skips cli level tests for sharepoint lists to fix nightly tests
Tests skipped:
- TestBackupSharepointE2ESuite/TestSharepointBackupCmd_lists
- TestBackupSharepointE2ESuite/TestSharepointBackupCmd_siteNotFound_lists (was already skipped from an earlier [PR](https://github.com/alcionai/corso/pull/4936) merge today)
Test failed but not skipped:
- TestPreparedBackupSharepointE2ESuite/TestSharepointDetailsCmd_lists (this [commit](c87533a266) should fix this failure)
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🐛 Bugfix
#### Issue(s)
https://github.com/alcionai/corso/actions/runs/7393325015/job/20113092443
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
<!-- PR description-->
Fixed all cases where we missed propagating errors. Also added a lint rule in CI to catch it.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
There are a few more pending items. I've added TODO entries for them. The PR was getting pretty big and so I thought I would address them in a followup PR.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* https://github.com/alcionai/corso/issues/3890
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
fix tests referencing top level of SharepointInfo for list details instead of nested ListInfo.
also disables a test that requires list backup to be enabled in CLI level.
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🐛 Bugfix
#### Issue(s)
https://github.com/alcionai/corso/actions/runs/7312375792/job/19922878417#step:6:666
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
ignores accessRequest list templates from backup and restore
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
Bumps [@loadable/component](https://github.com/gregberge/loadable-components) from 5.16.2 to 5.16.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/gregberge/loadable-components/blob/main/CHANGELOG.md"><code>@loadable/component</code>'s changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/smooth-code/loadable-components/compare/v5.16.2...v5.16.3">5.16.3</a> (2023-12-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>correct react-is for mjs export; remove isValidComponent check (<a href="https://redirect.github.com/smooth-code/loadable-components/issues/991">#991</a>) (<a href="9d381c35b7">9d381c3</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8f40762051"><code>8f40762</code></a> v5.16.3</li>
<li><a href="607733caac"><code>607733c</code></a> commit size snapshot</li>
<li><a href="9d381c35b7"><code>9d381c3</code></a> fix: correct react-is for mjs export; remove isValidComponent check (<a href="https://redirect.github.com/gregberge/loadable-components/issues/991">#991</a>)</li>
<li>See full diff in <a href="https://github.com/gregberge/loadable-components/compare/v5.16.2...v5.16.3">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [sass](https://github.com/sass/dart-sass) from 1.69.5 to 1.69.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/sass/dart-sass/releases">sass's releases</a>.</em></p>
<blockquote>
<h2>Dart Sass 1.69.7</h2>
<p>To install Sass 1.69.7, download one of the packages below and <a href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or see <a href="https://sass-lang.com/install">the Sass website</a> for full installation instructions.</p>
<h1>Changes</h1>
<h3>Embedded Sass</h3>
<ul>
<li>In the JS Embedded Host, properly install the x64 Dart Sass executable on ARM64 Windows.</li>
</ul>
<p>See the <a href="https://github.com/sass/dart-sass/blob/master/CHANGELOG.md#1697">full changelog</a> for changes in earlier releases.</p>
<h2>Dart Sass 1.69.6</h2>
<p>To install Sass 1.69.6, download one of the packages below and <a href="https://katiek2.github.io/path-doc/">add it to your PATH</a>, or see <a href="https://sass-lang.com/install">the Sass website</a> for full installation instructions.</p>
<h1>Changes</h1>
<ul>
<li>
<p>Produce better output for numbers with complex units in <code>meta.inspect()</code> and debugging messages.</p>
</li>
<li>
<p>Escape U+007F DELETE when serializing strings.</p>
</li>
<li>
<p>When generating CSS error messages to display in-browser, escape all code points that aren't in the US-ASCII region. Previously only code points U+0100 LATIN CAPITAL LETTER A WITH MACRON were escaped.</p>
</li>
<li>
<p>Provide official releases for musl LibC and for Android.</p>
</li>
<li>
<p>Don't crash when running <code>meta.apply()</code> in asynchronous mode.</p>
</li>
</ul>
<h3>JS API</h3>
<ul>
<li>Fix a bug where certain exceptions could produce <code>SourceSpan</code>s that didn't follow the documented <code>SourceSpan</code> API.</li>
</ul>
<p>See the <a href="https://github.com/sass/dart-sass/blob/master/CHANGELOG.md#1696">full changelog</a> for changes in earlier releases.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/sass/dart-sass/blob/main/CHANGELOG.md">sass's changelog</a>.</em></p>
<blockquote>
<h2>1.69.7</h2>
<h3>Embedded Sass</h3>
<ul>
<li>In the JS Embedded Host, properly install the x64 Dart Sass executable on
ARM64 Windows.</li>
</ul>
<h2>1.69.6</h2>
<ul>
<li>
<p>Produce better output for numbers with complex units in <code>meta.inspect()</code> and
debugging messages.</p>
</li>
<li>
<p>Escape U+007F DELETE when serializing strings.</p>
</li>
<li>
<p>When generating CSS error messages to display in-browser, escape all code
points that aren't in the US-ASCII region. Previously only code points U+0100
LATIN CAPITAL LETTER A WITH MACRON were escaped.</p>
</li>
<li>
<p>Provide official releases for musl LibC and for Android.</p>
</li>
<li>
<p>Don't crash when running <code>meta.apply()</code> in asynchronous mode.</p>
</li>
</ul>
<h3>JS API</h3>
<ul>
<li>Fix a bug where certain exceptions could produce <code>SourceSpan</code>s that didn't
follow the documented <code>SourceSpan</code> API.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="006baa5642"><code>006baa5</code></a> Update the pubspec and changelog for <a href="https://redirect.github.com/sass/embedded-host-node/issues/266">sass/embedded-host-node#266</a> (<a href="https://redirect.github.com/sass/dart-sass/issues/2158">#2158</a>)</li>
<li><a href="6205eac5d1"><code>6205eac</code></a> Add wait time before update website (<a href="https://redirect.github.com/sass/dart-sass/issues/2153">#2153</a>)</li>
<li><a href="f3c7be5aff"><code>f3c7be5</code></a> Make meta.apply() an AsyncBuiltInCallable (<a href="https://redirect.github.com/sass/dart-sass/issues/2152">#2152</a>)</li>
<li><a href="1fc740db40"><code>1fc740d</code></a> Upload releases for musl-libc and android (<a href="https://redirect.github.com/sass/dart-sass/issues/2149">#2149</a>)</li>
<li><a href="6f665c1dd2"><code>6f665c1</code></a> Escape unprintable 0x7F (delete control character) (<a href="https://redirect.github.com/sass/dart-sass/issues/2144">#2144</a>)</li>
<li><a href="f5dab76b4e"><code>f5dab76</code></a> Bump dartdoc from 7.0.2 to 8.0.2 (<a href="https://redirect.github.com/sass/dart-sass/issues/2146">#2146</a>)</li>
<li><a href="4daf0b4ec1"><code>4daf0b4</code></a> Escape non-US-ASCII characters in <code>SassException.toCssString()</code> (<a href="https://redirect.github.com/sass/dart-sass/issues/2143">#2143</a>)</li>
<li><a href="cd798bfb7b"><code>cd798bf</code></a> Improve inspect() output for complex units (<a href="https://redirect.github.com/sass/dart-sass/issues/2138">#2138</a>)</li>
<li><a href="bd80c58752"><code>bd80c58</code></a> Make LazyFileSpans work in JavaScript (<a href="https://redirect.github.com/sass/dart-sass/issues/2142">#2142</a>)</li>
<li><a href="13830a50c0"><code>13830a5</code></a> Fix new recommended lints (<a href="https://redirect.github.com/sass/dart-sass/issues/2139">#2139</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/sass/dart-sass/compare/1.69.5...1.69.7">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
<!-- PR description-->
---
#### Does this PR need a docs update or release note?
- [x] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* closes https://github.com/alcionai/corso/issues/3891
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
<!-- PR description-->
---
#### Does this PR need a docs update or release note?
- [x] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [x] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
disable backup of sharepoint lists
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
Bumps [clsx](https://github.com/lukeed/clsx) from 2.0.0 to 2.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/lukeed/clsx/releases">clsx's releases</a>.</em></p>
<blockquote>
<h2>v2.1.0</h2>
<h2>Features</h2>
<ul>
<li>
<p>Add new <code>clsx/lite</code> submodule for <code>string</code>-only usage: 1a49142</p>
<p><em>This is a <strong>140b</strong> version of <code>clsx</code> that is ideal for Tailwind and/or React contexts, which typically follow this <code>clsx</code> usage pattern:</em></p>
<pre lang="js"><code>clsx('foo bar', props.maybe && 'conditional classes', props.className);
</code></pre>
<blockquote>
<p><strong>Important:</strong> This <code>clsx/lite</code> module <strong>ignores all non-string arguments</strong> and is therefore not a 1:1 replacement for <code>clsx</code> itself!</p>
</blockquote>
<pre lang="js"><code>import { clsx } from 'clsx';
import { clsx as lite } from 'clsx/lite';
<p>// strings-only usage is identical
clsx('foo', null, 'bar', true && 'baz'); //=> "foo bar baz"
lite('foo', null, 'bar', true && 'baz'); //=> "foo bar baz"</p>
<p>// clsx/lite ignores all non-strings
clsx('foo', { a: true, b: false, c: true }); //=> "foo a c"
lite('foo', { a: true, b: false, c: true }); //=> "foo"
</code></pre></p>
</li>
</ul>
<hr />
<blockquote>
<p><strong>Full Changelog</strong>: <a href="https://github.com/lukeed/clsx/compare/v2.0.1...v2.1.0">https://github.com/lukeed/clsx/compare/v2.0.1...v2.1.0</a></p>
</blockquote>
<h2>v2.0.1</h2>
<h2>Patches</h2>
<ul>
<li>(perf) Cache <code>arguments.length</code> & <code>array.length</code> for 6% performance gain (<a href="https://redirect.github.com/lukeed/clsx/issues/26">#26</a>): deff09b
<em>Adds 5 bytes (+2%) for ~3% avg performance gain</em>
<em>Thank you <a href="https://github.com/jalalazimi"><code>@jalalazimi</code></a></em></li>
</ul>
<h2>Chores</h2>
<ul>
<li>Update module size: bf64e71</li>
<li>Update benchmark results: 855eec2, 6e3b2b9,</li>
<li>Replace <code>nyc</code> with <code>c8</code> in CI: 6e2468e</li>
<li>Update Node CI matrix: 308a238</li>
<li>Fix readme typos (<a href="https://redirect.github.com/lukeed/clsx/issues/76">#76</a>, <a href="https://redirect.github.com/lukeed/clsx/issues/82">#82</a>): 42354d3, 4c9a55d
<em>Thank you <a href="https://github.com/andipaetzold"><code>@andipaetzold</code></a> and <a href="https://github.com/acusti"><code>@acusti</code></a></em></li>
</ul>
<hr />
<blockquote>
<p><strong>Full Changelog</strong>: <a href="https://github.com/lukeed/clsx/compare/v2.0.0...v2.0.1">https://github.com/lukeed/clsx/compare/v2.0.0...v2.0.1</a></p>
</blockquote>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a60db12a53"><code>a60db12</code></a> 2.1.0</li>
<li><a href="1a491425ef"><code>1a49142</code></a> feat: add <code>clsx/lite</code> module</li>
<li><a href="5cac14c2c8"><code>5cac14c</code></a> 2.0.1</li>
<li><a href="855eec2e97"><code>855eec2</code></a> chore(bench): include ≠ symbol</li>
<li><a href="bf64e71018"><code>bf64e71</code></a> chore: update module size</li>
<li><a href="6e3b2b99cd"><code>6e3b2b9</code></a> chore: update benchmarks;</li>
<li><a href="554ad31e92"><code>554ad31</code></a> chore: dedicated string vs number var usage;</li>
<li><a href="deff09b0fe"><code>deff09b</code></a> chore: cache arguments/array lengths (<a href="https://redirect.github.com/lukeed/clsx/issues/26">#26</a>)</li>
<li><a href="6e2468e7db"><code>6e2468e</code></a> fix(ci): replace nyc -> c8</li>
<li><a href="308a2387b8"><code>308a238</code></a> chore(ci): update node matrix</li>
<li>Additional commits viewable in <a href="https://github.com/lukeed/clsx/compare/v2.0.0...v2.1.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
refactors sharepoint lists collection by:
- renaming `Collection` interface as `preFetchCollection` interface
- making `finishPopulation` method as independent function
- seralizing list using `serializeContent` function
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
skips documentLibrary templated lists from:
- restoration
- details
but the lists with 'documentLibrary' are backed-up.
this is in addition to 'webTemplateExtensionsList' templated lists which were previously skipped from restore.
the `skipping` of lists with template 'documentLibrary' is temporary and to be enabled with correct handling.
**update:27/12/2023**
skips `documentLibrary`, `sharingLinks`, `webTemplateExtensionsList` templated lists from being backed-up altogether
site contents of `https://10rqc2.sharepoint.com/sites/CorsoCI`:

backup details
```
./corso backup details sharepoint --backup 5e0a13b0-bff0-471b-8860-2aec869717b2
Logging to file: /home/hitesh/.cache/corso/logs/2023-12-23T14-52-37Z.log
Connecting to M365 done
Connecting to repository 30s done
ID List Items Created Modified
c7ffe2f0a275 Test List 0 2023-05-12T12:28:51Z 2023-05-12T12:28:51Z
5345df87b565 Meh 0 2023-05-12T12:59:50Z 2023-05-12T12:59:50Z
cd2854591ab4 corso-restore-list_135b9067-0e19-4a5c-9475-ced51730c211 0 2023-12-11T10:25:27Z 2023-12-23T13:19:24Z
0f56b7f450fa corsorestorelist_newlist 0 2023-12-11T10:31:54Z 2023-12-11T10:31:54Z
3a7be2fb9d50 new list 0 2023-11-29T18:29:07Z 2023-11-29T18:29:07Z
edab0c775e5e New List Name 0 2023-05-12T12:39:06Z 2023-12-23T13:25:39Z
4d7ad9b1df98 MockListing 0 2023-05-12T12:15:14Z 2023-12-14T06:22:36Z
d2bdca596f75 integration-test-list 6 2023-11-30T06:57:01Z 2023-12-14T06:09:45Z
c9eccc9771a3 Sharing Links 74 2023-06-26T07:21:31Z 2023-12-14T06:06:31Z
5e79dcd93c92 New List Name 2 0 2023-05-12T12:40:15Z 2023-05-12T12:40:15Z
6a6acbaa0d10 corsorestorelist_7f99d792-cae0-4a87-9e68-fd930f5b123e 0 2023-12-11T10:28:25Z 2023-12-23T13:19:57Z
```
restore details
```
./corso restore sharepoint --backup 5e0a13b0-bff0-471b-8860-2aec869717b2
Logging to file: /home/hitesh/.cache/corso/logs/2023-12-23T14-53-37Z.log
Connecting to M365 done
Connecting to repository 26s done
Restoring to folder Corso_Restore_23-Dec-2023_14-54-05
Restoring ∙ https://10rqc2.sharepoint.com/sites/CorsoCI
Discovered 11 items in backup 5e0a13b0-bff0-471b-8860-2aec869717b2 to restore
Enumerating items in repository 1m2s done
Restoring data 50s done
Restore Complete
Restored 11 items
ID List Items Created Modified
edab0c775e5e Corso_Restore_23-Dec-2023_14-54-05_New List Name 0 2023-12-23T14:54:23Z 2023-12-23T14:54:23Z
cd2854591ab4 Corso_Restore_23-Dec-2023_14-54-05_corso-restore-list_135b9067-0e19-4a5c-9475-ced51730c211 0 2023-12-23T14:54:25Z 2023-12-23T14:54:25Z
5345df87b565 Corso_Restore_23-Dec-2023_14-54-05_Meh 0 2023-12-23T14:54:26Z 2023-12-23T14:54:26Z
4d7ad9b1df98 Corso_Restore_23-Dec-2023_14-54-05_MockListing 0 2023-12-23T14:54:28Z 2023-12-23T14:54:28Z
d2bdca596f75 Corso_Restore_23-Dec-2023_14-54-05_integration-test-list 6 2023-12-23T14:54:29Z 2023-12-23T14:54:31Z
c7ffe2f0a275 Corso_Restore_23-Dec-2023_14-54-05_Test List 0 2023-12-23T14:54:34Z 2023-12-23T14:54:34Z
c9eccc9771a3 Corso_Restore_23-Dec-2023_14-54-05_Sharing Links 74 2023-12-23T14:54:36Z 2023-12-23T14:54:36Z
5e79dcd93c92 Corso_Restore_23-Dec-2023_14-54-05_New List Name 2 0 2023-12-23T14:55:09Z 2023-12-23T14:55:09Z
6a6acbaa0d10 Corso_Restore_23-Dec-2023_14-54-05_corsorestorelist_7f99d792-cae0-4a87-9e68-fd930f5b123e 0 2023-12-23T14:55:10Z 2023-12-23T14:55:10Z
0f56b7f450fa Corso_Restore_23-Dec-2023_14-54-05_corsorestorelist_newlist 0 2023-12-23T14:55:11Z 2023-12-23T14:55:11Z
```
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🐛 Bugfix
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
<!-- PR description-->
* We had a few duplicated tests. Removing them.
* Adding conversations selector for group v9 bump tests. Although technically it's not needed, since we didn't have conversations support prior to v9.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [ ] ⚡ Unit test
- [x] 💚 E2E
This fixes an issue on the docs site where `import { Mermaid } from 'mdx-mermaid/lib/Mermaid';` shows up at the top
of the pages.
https://github.com/sjwall/mdx-mermaid/issues/88 indicates updating to `2.0.0` fixes the issue

---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [x] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
Skips backup of non-recoverable list templates.
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
<!-- PR description-->
---
#### Does this PR need a docs update or release note?
- [x] ✅ Yes, it's included
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* Closes https://github.com/alcionai/corso/issues/4862
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] 💚 E2E
<!-- PR description-->
Discovered an issue with how we were handling items deleted in flight with the lazy item reader. This needs to go in before integration PR. https://github.com/alcionai/corso/pull/4921
Here are the details.
**Orig:**
* For such items, we were using the exchange approach to persist an empty data file (with serialized version) and not persist it in details file.
* Exchange discovers the deleted items during next backup during delta query and excludes them.
**Problem:**
* Group mailbox doesn't support delta queries. Also, there is no graph API to discover/fetch deleted items.
* So if we use the exchange lazy reader approach like above, the ongoing backup will succeed. However, the next incremental backup fails during details merge with ` running backup: merging details: incomplete migration of backup details`.
* Failure is [here](c58cd9302f/src/internal/operations/backup.go (L837)). It's because the deleted item reporefs are still present in the merge base. Since there is no delta query, there is no `GetDeleted()` to exclude the item.
**Mod:**
* Using the approach drive lazy reader code uses to mark an item as skipped, so that kopia doesn't error out during upload.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* https://github.com/alcionai/corso/issues/4862
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
Add code and tests for sanitizing emails
Also adds code for sanitizing events and contacts but we can remove
that if we'd like to address it if/when needed. We haven't yet seen
or tried to create instances of those
---
#### Does this PR need a docs update or release note?
- [x] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Test Plan
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
Functions help check things like
* are two items equal when taking into account nil, empty slices, and
other zero-values?
* is something fully populated?
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [x] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Test Plan
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
replaces list deletion, on creation of list items failure, with fault bus. Thereby restores list with list items that could be restored.
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
skips cleanup of hidden list considering them system generated and delete attempt for them would result in graph error `General exception while processing`
list details response for list `Corso_Restore_23-Dec-2023_14-54-05_Sharing Links` of 'hidden' type
```
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('4892edf5-2ebf-46be-a6e5-a40b2cbf1c1a')/lists/$entity",
"@odata.etag": "\"35697c04-415d-44ad-b328-527e32a20126,1\"",
"createdDateTime": "2023-12-23T14:54:36Z",
"description": "Use this list to track documents which have internal or anonymous sharing links in the site.",
"eTag": "\"35697c04-415d-44ad-b328-527e32a20126,1\"",
"id": "35697c04-415d-44ad-b328-527e32a20126",
"lastModifiedDateTime": "2023-12-23T14:55:07Z",
"name": "Corso_Restore_23Dec2023_145405_Sharing Links",
"webUrl": "https://10rqc2.sharepoint.com/sites/CorsoCI/Corso_Restore_23Dec2023_145405_Sharing%20Links",
"displayName": "Corso_Restore_23-Dec-2023_14-54-05_Sharing Links",
"createdBy": {
"user": {
"displayName": "SharePoint App"
}
},
"parentReference": {
"siteId": "10rqc2.sharepoint.com,4892edf5-2ebf-46be-a6e5-a40b2cbf1c1a,38ab6d06-fc82-4417-af93-22d8733c22be"
},
"list": {
"contentTypesEnabled": false,
"hidden": true,
"template": "sharingLinks"
}
}
```
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 💻 CI/Deployment
#### Issue(s)
https://github.com/alcionai/corso/actions/runs/7312141926/job/19922423733
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💚 E2E
We've found that it's possible to get malformed JSON back from
the graph server and graph SDK. This results in errors while trying
to deserialize objects that are malformed JSON
This adds a simple JSON sanitizer and tests to make sure that even if
graph and the graph SDK happen to generate malformed JSON we can get
back to a state where we can deserialize it again. The tests also
print info when the received content differs from the original
This PR does not change any of the logic that corso uses during
backups or restores, it just adds sanitization code and tests
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [x] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Test Plan
- [x] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
<!-- PR description-->
Lazy item reader similar to exchange. Tests are also inspired from exchange.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* https://github.com/alcionai/corso/issues/4862
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
<!-- PR description-->
We are hitting a sanity test failure during export. `Error: Failed to run SharePoint export: running export: exporting collections: transforming path to drive path: folder path doesn't match expected format for Drive items`. CI [run](https://github.com/alcionai/corso/actions/runs/7304614358/job/19907054349).
After debugging I found out that it's because we don't support exports for lists yet. This PR disables list export and restore.
We are also hitting a panic during list restore, so I am temporarily disabling list restores too. `Error: Failed to run SharePoint restore: panic recovery: file /Users/pandeyab/corso/src/pkg/services/m365/api/lists.go - line 607: runtime error: invalid memory address or nil pointer dereference`.
Will request @HiteshRepo to investigate restore failure.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [x] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
<!-- PR description-->
I missed this change in https://github.com/alcionai/corso/pull/4906. Moving out the status updater code out of `prefetchCollection` scope so that `lazyFetchCollection` can also use it in upcoming PRs.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
<!-- PR description-->
AddDisableLazyItemReader disables lazy item reader, such that we fall
back to prefetch reader. This flag is currently only meant for groups
conversations backup. Although it can be utilized for other services
in future.
This flag should only be used if lazy item reader is the default choice
and we want to fallback to prefetch reader.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [x] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* https://github.com/alcionai/corso/issues/4862
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
<!-- PR description-->
Minor refactor before introducing `lazyFetchCollection` for groups. We'll utilize `lazyFetchCollection` for group mailboxes and will continue to use `prefetchCollection` for channels.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* https://github.com/alcionai/corso/issues/4862
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
fixes duplication of AddCategories function.
calls the correct AddCategories function
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
- [x] 🐛 Bugfix
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
enables sharepoint to use lists restore handler for lists ops
Changes previously approved in:
- https://github.com/alcionai/corso/pull/4854
- https://github.com/alcionai/corso/pull/4910
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
Enable restore path creation for sharepoint lists
Changes previously approved in: https://github.com/alcionai/corso/pull/4855
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
cli changes for sharepoint lists
Changes previously approved in: https://github.com/alcionai/corso/pull/4850
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
adds list backup and restore handlers
Changes previously approved in:
- https://github.com/alcionai/corso/pull/4786
- https://github.com/alcionai/corso/pull/4854
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
adds list client apis and pagers to fetch, create and delete lists and list relations.
Changes previously approved in PRs:
- https://github.com/alcionai/corso/pull/4785
- https://github.com/alcionai/corso/pull/4815
- https://github.com/alcionai/corso/pull/4852
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
adds ListInfo details to SharepointInfo details
Changes previously approved in PR: https://github.com/alcionai/corso/pull/4851
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
#### Issue(s)
#4754
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
<!-- PR description-->
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
parse the odataerr to a local struct that has
a more complete view of the data.
---
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
- [x] 🧹 Tech Debt/Cleanup
#### Issue(s)
* #4685
#### Test Plan
- [x] ⚡ Unit test
- [x] 💚 E2E
We've encountered an error where the user previously had sharing for
one or more external users on an item and then did a backup. They
subsequently disabled sharing for the SharePoint site in either the
tenant-wide config or for the site in particular. Once sharing was
disabled, they attempted a restore which subsequently failed while
trying to restore sharing for the external user
This PR logs and ignores errors about sharing being disabled when
doing a restore
This has been tested manually
---
#### Does this PR need a docs update or release note?
- [x] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Test Plan
- [x] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
- [x] 🤖 Supportability/Tests
#### Issue(s)
* #4689
#### Test Plan
- [x] 💚 E2E
Add log statements when errors are encountered so we get full clues
output and make sure context clues are added to returned errors. The
additional logging is necessary because not all corso SDK consumers
will use clues which means they could miss out on valuable information
if they just log the returned errors normally
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [x] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Test Plan
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
Now that optiosn are being broken up a bit more passing a struct of a single type to the service handler initializer doesn't make much sense. Just remove the parameter since it was unused anyway.
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [x] 🧹 Tech Debt/Cleanup
#### Issues
- #4896
#### Test Plan
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
This adds support for empty attachments and also cleans up how email validation skip is done.
Contains PRs 97 and 98 upstream
<!-- PR description-->
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [x] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.16.0 to 0.16.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="2acb2e697b"><code>2acb2e6</code></a> gopls/internal/test/marker: minor clean up of marker test doc</li>
<li><a href="28b92af286"><code>28b92af</code></a> internal/typeparams: eliminate remainining compatibility shims</li>
<li><a href="ee35f8ea92"><code>ee35f8e</code></a> gopls/internal/lsp/source: hovering over broken packages is not an error</li>
<li><a href="67611a11a1"><code>67611a1</code></a> internal/typeparams: eliminate type aliases</li>
<li><a href="23c86e8ed6"><code>23c86e8</code></a> internal/typeparams: delete const Enabled=true and simplify</li>
<li><a href="e46688f413"><code>e46688f</code></a> gopls/internal/analysis/fillstruct: don't panic with invalid fields</li>
<li><a href="8bd7553f7c"><code>8bd7553</code></a> gopls/internal/util/goversion: warn about EOL for Go 1.18</li>
<li><a href="bc9cd159c5"><code>bc9cd15</code></a> gopls/internal/settings: remove MemoryMode option</li>
<li><a href="bbc30f1f81"><code>bbc30f1</code></a> gopls/protocol: Allow AnnotatedTextEdits</li>
<li><a href="f40889dc8b"><code>f40889d</code></a> gopls/internal/analysis/stubmethods: fix OOB panic in fromValueSpec</li>
<li>Additional commits viewable in <a href="https://github.com/golang/tools/compare/v0.16.0...v0.16.1">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [github.com/microsoftgraph/msgraph-sdk-go](https://github.com/microsoftgraph/msgraph-sdk-go) from 1.27.0 to 1.28.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/microsoftgraph/msgraph-sdk-go/blob/main/CHANGELOG.md">github.com/microsoftgraph/msgraph-sdk-go's changelog</a>.</em></p>
<blockquote>
<h2>[1.28.0]- 2023-12-19</h2>
<h3>Changed</h3>
<ul>
<li>Weekly generation.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4ae88ab4fc"><code>4ae88ab</code></a> Merge pull request <a href="https://redirect.github.com/microsoftgraph/msgraph-sdk-go/issues/634">#634</a> from microsoftgraph/v1.0/pipelinebuild/130669</li>
<li><a href="63483a78db"><code>63483a7</code></a> - adds changelog entry for weekly generation</li>
<li><a href="4e03479d9d"><code>4e03479</code></a> Update generated files with build 130669</li>
<li><a href="ef5cb24541"><code>ef5cb24</code></a> Merge pull request <a href="https://redirect.github.com/microsoftgraph/msgraph-sdk-go/issues/631">#631</a> from microsoftgraph/dependabot/go_modules/github.com/...</li>
<li><a href="0061e7c964"><code>0061e7c</code></a> Bump github.com/google/uuid from 1.4.0 to 1.5.0</li>
<li>See full diff in <a href="https://github.com/microsoftgraph/msgraph-sdk-go/compare/v1.27.0...v1.28.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
<!-- PR description-->
Group export sanity test is failing because we added conversations to `sel.AllData()`. But we don't have export support for conversations yet.
Adding conv selector to exclude so that it doesn't fail exports for groups libraries and channels. This is a short term change, and will be removed once we have export support https://github.com/alcionai/corso/issues/4822
---
#### Does this PR need a docs update or release note?
- [ ] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x] ⛔ No
#### Type of change
<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>
#### Test Plan
<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
- [x] 🌻 Feature
#### Issue(s)
* #4536
#### Test Plan
- [x] 💪 Manual
- [x] ⚡ Unit test
- [x] 💚 E2E
Update the set of ignored fields for event restores. Most important inclusion is the `iCalUId_v2` field which will cause failures if it's not removed.
---
#### Does this PR need a docs update or release note?
- [x] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No
#### Type of change
- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup
#### Test Plan
- [x] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E