Skip to content

Conversation

@DaisyModi
Copy link

Summary

• Add IAM client module with cloud-agnostic API for identity and policy management
• Implement substrate-neutral PolicyDocument with fluent builder pattern
• Provide foundation for unified IAM operations across AWS, GCP, and AliCloud

Components

IamClient: Main entry point with builder pattern for identity lifecycle operations
PolicyDocument/Statement: Cloud-agnostic policy models with type-safe builders
Supporting models: TrustConfiguration and CreateOptions for flexible identity creation
Complete unit test coverage for all classes
Notes

Follows MultiCloudJ SPI pattern for future provider implementations
Client methods throw UnsupportedOperationException pending driver layer
Ready for AWS/GCP/AliCloud implementation modules

@codecov-commenter
Copy link

codecov-commenter commented Oct 23, 2025

Codecov Report

❌ Patch coverage is 81.25000% with 21 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.39%. Comparing base (581005b) to head (a6e6258).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...m/salesforce/multicloudj/iam/client/IamClient.java 58.82% 7 Missing ⚠️
...om/salesforce/multicloudj/iam/model/Statement.java 80.55% 1 Missing and 6 partials ⚠️
...lesforce/multicloudj/iam/model/PolicyDocument.java 80.95% 1 Missing and 3 partials ⚠️
...orce/multicloudj/iam/model/TrustConfiguration.java 92.85% 0 Missing and 2 partials ⚠️
...alesforce/multicloudj/iam/model/CreateOptions.java 90.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main      #90      +/-   ##
============================================
+ Coverage     78.19%   82.39%   +4.19%     
+ Complexity     1730       43    -1687     
============================================
  Files           136      141       +5     
  Lines          7036     7162     +126     
  Branches        801      833      +32     
============================================
+ Hits           5502     5901     +399     
+ Misses         1112      832     -280     
- Partials        422      429       +7     
Flag Coverage Δ
unittests 82.39% <81.25%> (+4.19%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@sandeepvinayak sandeepvinayak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for PR, please address the comments

@DaisyModi DaisyModi force-pushed the feature/add-iam-service branch from a9c92ea to 6719880 Compare October 30, 2025 18:38
@DaisyModi DaisyModi force-pushed the feature/add-iam-service branch from 2224a5e to a6e6258 Compare October 30, 2025 19:02
@sandeepvinayak sandeepvinayak changed the title Created client layer for IAM iam: onboarding client layer for IAM Oct 31, 2025
Comment on lines +33 to +60
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
CreateOptions that = (CreateOptions) o;
return Objects.equals(path, that.path)
&& Objects.equals(maxSessionDuration, that.maxSessionDuration)
&& Objects.equals(permissionBoundary, that.permissionBoundary);
}

@Override
public int hashCode() {
return Objects.hash(path, maxSessionDuration, permissionBoundary);
}

@Override
public String toString() {
return "CreateOptions{"
+ "path='" + path + '\''
+ ", maxSessionDuration=" + maxSessionDuration
+ ", permissionBoundary='" + permissionBoundary + '\''
+ '}';
}
} No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see you have onboarded these methods for all classes? These should exist if they are required, I don't see the usage anywhere

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants