Revision f04d8d48
Added by Timo Goebel about 5 years ago
app/graphql/resolvers/user/current.rb | ||
---|---|---|
module Resolvers
|
||
module User
|
||
class Current < ::Resolvers::BaseResolver
|
||
type ::Types::User, null: true
|
||
|
||
def resolve
|
||
context[:current_user]
|
||
end
|
||
end
|
||
end
|
||
end
|
app/graphql/types/query.rb | ||
---|---|---|
field :node, field: GraphQL::Relay::Node.field
|
||
field :nodes, field: GraphQL::Relay::Node.plural_field
|
||
|
||
field :currentUser, Types::User, null: true, resolver: Resolvers::User::Current
|
||
|
||
record_field :model, Types::Model
|
||
collection_field :models, Types::Model
|
||
|
test/graphql/queries/current_user_query_test.rb | ||
---|---|---|
require 'test_helper'
|
||
|
||
class Queries::CurrentUserQueryTest < GraphQLQueryTestCase
|
||
let(:query) do
|
||
<<-GRAPHQL
|
||
query {
|
||
currentUser {
|
||
id
|
||
login
|
||
usergroups {
|
||
totalCount
|
||
edges {
|
||
node {
|
||
id
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
GRAPHQL
|
||
end
|
||
let(:user) { FactoryBot.create(:user, :with_usergroup) }
|
||
let(:global_id) { Foreman::GlobalId.for(user) }
|
||
let(:variables) {{}}
|
||
let(:data) { result['data']['currentUser'] }
|
||
|
||
context 'with logged in user' do
|
||
let(:context) {{ current_user: user }}
|
||
test 'fetching current user attributes' do
|
||
assert_empty result['errors']
|
||
|
||
assert_equal global_id, data['id']
|
||
assert_equal user.login, data['login']
|
||
|
||
assert_collection user.usergroups, data['usergroups']
|
||
end
|
||
end
|
||
|
||
context 'without logged in user' do
|
||
let(:context) {{ current_user: nil }}
|
||
|
||
test 'currentUser returns nil' do
|
||
assert_empty result['errors']
|
||
assert_nil data
|
||
end
|
||
end
|
||
end
|
Also available in: Unified diff
fixes #26488 - graphql: add currentUser query