Can you assume that all inputs to a Bitcoin transaction are controlled by the same person?
No.

In practice, it is likely, but in several more complex use cases, transactions can be jointly constructed.

For example CoinJoin implies combining both inputs and outputs from multiple people together into a single transaction to make it less obvious which outputs belong to whom.