def METHOD_NAME(run_module, admin_user, organization):
    nt_config = {
        'username': 'user',
        'password': 'password',
        'sender': 'foo@invalid.com',
        'recipients': ['foo2@invalid.com'],
        'host': 'smtp.example.com',
        'port': 25,
        'use_tls': False,
        'use_ssl': False,
        'timeout': 4,
    }
    result = run_module(
        'notification_template',
        dict(
            name='foo-notification-template',
            organization=organization.name,
            notification_type='email',
            notification_configuration=nt_config,
        ),
        admin_user,
    )
    assert not result.get('failed', False), result.get('msg', result)
    assert result.pop('changed', None), result
    nt = NotificationTemplate.objects.get(id=result['id'])
    compare_with_encrypted(nt.notification_configuration, nt_config)
    assert nt.organization == organization
    # Test no-op, this is impossible if the notification_configuration is given
    # because we cannot determine if password fields changed
    result = run_module(
        'notification_template',
        dict(
            name='foo-notification-template',
            organization=organization.name,
            notification_type='email',
        ),
        admin_user,
    )
    assert not result.get('failed', False), result.get('msg', result)
    assert not result.pop('changed', None), result
    # Test a change in the configuration
    nt_config['timeout'] = 12
    result = run_module(
        'notification_template',
        dict(
            name='foo-notification-template',
            organization=organization.name,
            notification_type='email',
            notification_configuration=nt_config,
        ),
        admin_user,
    )
    assert not result.get('failed', False), result.get('msg', result)
    assert result.pop('changed', None), result
    nt.refresh_from_db()
    compare_with_encrypted(nt.notification_configuration, nt_config)